14 июля 2015, 13:08 Это костыль невиданных размеров… Вопросы / VirtualPage разные контексты (жесткая ссылка?) 22 0
14 июля 2015, 13:08 То есть такой подход 100% рабочий? Вопросы / VirtualPage разные контексты (жесткая ссылка?) 22 0
14 июля 2015, 08:51 Сейчас нашли закономерность. Когда пользюк делает релог, то все становится нормально. Редиректа нет. В чем может быть дело? Вопросы / Редирект при переходе на англ. версию сайта 5 0
03 июля 2015, 16:45 Кстати, может быть потому и не получалось, что ключ в контексте задан не как cultureKey а как culture_key? cultureKey по всей видимости значение в системе. Вопросы / Переключение языка словаря 8 0
03 июля 2015, 16:35 Работает! В ходе экспериментов, выявил несколько ключевых моментов: 1. Если использовать сниппет, то фраза должна быть не кешируемой. То есть [[!%a_buy]] будет работать, а [[%a_buy]] — нет. 2. Если использовать плагин, то кеширование фраз не требуется. То есть [[%a_buy]] работает. 3. $modx->setOption('cultureKey',$lang); — обязательная строка. Код плагина на событие «OnLoadWebDocument»: $lang = $modx->getOption('culture_key'); $modx->setOption('cultureKey',$lang); $modx->lexicon->load($lang.':darvo:front'); Вопросик по поводу: $lang = $modx->getOption('culture_key'); $modx->setOption('cultureKey',$lang); Стоит ли поменять название ключа culture_key в контексте на cultureKey? Вроде бы ничего не должно поломаться?) Вопросы / Переключение языка словаря 8 0
03 июля 2015, 15:28 Да, совсем забыл выложить скриншот. Самое интересное, что в словарях все ок. Вопросы / Переключение языка словаря 8 0
03 июля 2015, 14:33 Логично. Но как не пытаюсь, не выводит английскую и все тут. Для верности, даже поэкспериментировал напрямую: Так, на русском: //$lang = $modx->getOption('culture_key'); $modx->getService('lexicon','modLexicon'); return $modx->lexicon->load('ru:darvo:front');Так, тоже на русском: //$lang = $modx->getOption('culture_key'); $modx->getService('lexicon','modLexicon'); return $modx->lexicon->load('darvo:front');А вот так, не обрабатывает значения, т.е. на выходе «a_packs»: //$lang = $modx->getOption('culture_key'); $modx->getService('lexicon','modLexicon'); return $modx->lexicon->load('en:darvo:front'); Вопросы / Переключение языка словаря 8 0
01 июля 2015, 17:01 Честно говоря не понимаю, как оно у вас работает? Вероятно, за 2 года, phx в formit успели поломать? Вопросы / FormIt и select 4 0
27 июня 2015, 19:09 Короче, создал 2 маршрута, которые отличаются на одну букву /items/… и /item/… И повесил ресурсы с каждого из контекстов на них обработчиками. Все работает. Вопросы / VirtualPage разные контексты (жесткая ссылка?) 22 0
27 июня 2015, 18:10 У меня есть предположение, что контекст не переключается плагином bezumkun'a потому, что в первую очередь событие OnHandleResources отрабатывает VirtualPage, и только затем плагин мультиязычности. Быть может нужно как-то отследить событие инициализации VP, что бы это событие можно было повесить на плагин мультиязычности? Вопросы / VirtualPage разные контексты (жесткая ссылка?) 22 0
27 июня 2015, 17:55 $modx->switchContext('en'); $modx->setOption('cultureKey','en');Не работает. Быть может потому, что сниппет выводит чанк только со значениями из базы? Странно все это. Ссылки внутри чанка сами собой с /en/, в то время как ссылки вне чанка без /en/. Вопросы / VirtualPage разные контексты (жесткая ссылка?) 22 0
27 июня 2015, 17:41 По всей видимости дело не в настройках, а в переключении контекста. Как и говорили выше. Вопросы / VirtualPage разные контексты (жесткая ссылка?) 22 0
27 июня 2015, 16:51 Заменил [[*context_key]] на [[++culture_key]], и понял, что второе берется как надо. Поэтому, создал свой ключ в каждом из контекстов, в котором прописано значение, которое нужно для корректной выборки из базы. Маршрут остался первоначальным: /item/{item_id:[0-9]+}/Обработчик тоже почти не изменился: [[!mysnippet? &context=`[[++myname]]` &item_id=`[[+vp.item_id]]` ]] Правда пришлось отключить кеширование. Про настройки pdoMenu спасибо, надо поковырять. Вопросы / VirtualPage разные контексты (жесткая ссылка?) 22 0
27 июня 2015, 16:28 И все-же /{key}/item/{item_id:[0-9]+}/ не вариант, и даже /{key:[a-z]+}/item/{item_id:[0-9]+}/ Судя по всему, в контексте en, по ссылке sitename.ru/en/item/123123/ vp анализирует только то, что находится после sitename.ru/en/. Это становится ясно, включая/выключая маршрут /item/{item_id:[0-9]+}/. Когда последний отключен, modx выдает 404, когда включен, обработчик срабатывает. Вопросы / VirtualPage разные контексты (жесткая ссылка?) 22 0
27 июня 2015, 15:10 wiki-router — это синоним router, просто старое название. Ищет предмет в базе по id. Спасибо за код, я делал так: switch($context){ case 'en': $context = 'en'; break; default: $context = 'web'; break; }Что по сути только меняло переменную, чтобы можно было вытащить английское название. Теперь, благодаря вам, так: $key = $_REQUEST['fastrouter']['context_key']; if ($modx->getCount('modContext', $key)) { $modx->switchContext($key); } $context = $modx->context->key;Однако, по прежнему, VP не понимает ссылку: sitename.ru/en/item/4/ В контексте /en/ работает только так: sitename.ru/en/en/item/4/ 1. Боюсь, что поменяв в настройках контекста site_url либо base_url, появятся проблемы с мультиязычностью. 2. Появляется еще одна проблема, VP не знает что контекст изменился, поэтому в меню генерируются ссылки вида: sitename.ru/index.html вместо: sitename.ru/en/index.html Меню собирается при помощи pdoMenu Вопросы / VirtualPage разные контексты (жесткая ссылка?) 22 0
27 июня 2015, 12:33 base_url для web = / — (странно, что ссылка sitename.ru/item/1267/ при этом работает) base_url для en = /en/ Согласно инструкции. И каша в голове. Похоже, единственное что работает, это костыль. :\ Вопросы / VirtualPage разные контексты (жесткая ссылка?) 22 0
27 июня 2015, 11:48 Работает, но весьма странно: Допустим, ссылка: sitename.ru/en/item/1267/ получаем ошибку 404 (у меня 503 т.к. не задал страницу в данном контексте) Если добавим еще один /en/: sitename.ru/en/en/item/1267/ То все работает. Получается, что нужно что-то мудрить с base_url? Вопросы / VirtualPage разные контексты (жесткая ссылка?) 22 0
27 июня 2015, 11:08 Если будут обрабатываться разные маршруты, разными обработчиками. Похоже, что самый простой вариант, добавить маршрут: /item/{item_id:[0-9]+}/en/ И привязать к обработчику: [[!wiki-router? &context=`en` &item_id=`[[+vp.item_id]]` ]]Так — работает. Правда ссылка будет: sitename.ru/en/item/1267/en/ Хотя будет прекрасно работать и с: sitename.ru/item/1267/en/ Только это ни к чему. Впрочем, костыль готов. :) Вопросы / VirtualPage разные контексты (жесткая ссылка?) 22 0
27 июня 2015, 10:57 Спасибо что заметили, делал очень давно и оказалось что в чанке у меня был вызов сниппета: [[!router? &context=`[[*context_key]]` &item_id=`[[+vp.item_id]]` ]]:facepalm: [[*context_key]] ведь возвращается такой, в каком контексте расположена страница? Получается, что VirtualPage как виртуальный не может находиться где-либо, и берется значение прописанное в скриптах VirtualPage по умолчанию? item_id — id строки игрового предмета из общей базы. Из которой я беру столбцы name_web, name_en и так далее, в зависимости от ключа контекста, и вывожу данные о предмете. Вопросы / VirtualPage разные контексты (жесткая ссылка?) 22 0
Gallery3x 3.4.0 - вставка галерей прямо из визуального редактора (CKEditor и TinyMCE RTE) Здравствуйте. Есть консольный скрипт Вот почитайте: docs.ivan345.com/books/gallery3x/page/import-ms2galleryphp
[mSync] Новая версия синхронизации с 1С Всем привет. В какой то момент начали сыпаться ошибки: Error 23000 executing statement: INSERT INTO `modx_msync_products` (`product_id`, `uuid_1c`) VALUES ...
Checkbox для модального окна Они не отключены, они платные, чтобы писали только те, кому действительно очень надо. Когда бесплатно люди начинают думать, что я им должен.
[SendIt 2.6.0] Анализ поведения пользователя для защиты от спама (невидимая капча)... Здравствуйте. Делаю личный кабинет на Sendit и со сбросом пароля возникли проблемы. Можете подсказать, в чем ошибка? Список вопросов в одноименном разделе на modx.pro пока пуст, и,...
Minishop + честный знак (продажа маркированной продукции) В нашем случае мы решили убрать всю логику по маркировке сайта.
MiniShop3 - Не выводятся товары дополнительных категорий @SYAN ваша указанная проблема исправлена еще до версии 1.2.3 @Павлик Мышкин завел: github.com/modx-pro/MiniShop3/issues/480 github.com/modx-pro/MiniShop3/issues/481Исправим в б...
MobileDetect 2.0.0-pl функция "планшеты как стандартные браузеры не работает" в 2.1.0-pl баг исправлен
Когда пользюк делает релог, то все становится нормально. Редиректа нет.
В чем может быть дело?
1. Если использовать сниппет, то фраза должна быть не кешируемой. То есть [[!%a_buy]] будет работать, а [[%a_buy]] — нет.
2. Если использовать плагин, то кеширование фраз не требуется. То есть [[%a_buy]] работает.
3. $modx->setOption('cultureKey',$lang); — обязательная строка.
Код плагина на событие «OnLoadWebDocument»:
Вопросик по поводу:
$lang = $modx->getOption('culture_key');
$modx->setOption('cultureKey',$lang);
Стоит ли поменять название ключа culture_key в контексте на cultureKey? Вроде бы ничего не должно поломаться?)
Но как не пытаюсь, не выводит английскую и все тут.
Для верности, даже поэкспериментировал напрямую:
Так, на русском:
Так, тоже на русском:
А вот так, не обрабатывает значения, т.е. на выходе «a_packs»:
И повесил ресурсы с каждого из контекстов на них обработчиками. Все работает.
Быть может нужно как-то отследить событие инициализации VP, что бы это событие можно было повесить на плагин мультиязычности?
Странно все это.
Ссылки внутри чанка сами собой с /en/, в то время как ссылки вне чанка без /en/.
Как и говорили выше.
Поэтому, создал свой ключ в каждом из контекстов, в котором прописано значение, которое нужно для корректной выборки из базы.
Маршрут остался первоначальным:
Обработчик тоже почти не изменился:
[[!mysnippet?
&context=`[[++myname]]`
&item_id=`[[+vp.item_id]]`
]]
Правда пришлось отключить кеширование.
Про настройки pdoMenu спасибо, надо поковырять.
Судя по всему, в контексте en, по ссылке sitename.ru/en/item/123123/ vp анализирует только то, что находится после sitename.ru/en/. Это становится ясно, включая/выключая маршрут /item/{item_id:[0-9]+}/.
Когда последний отключен, modx выдает 404, когда включен, обработчик срабатывает.
Ищет предмет в базе по id.
Спасибо за код, я делал так:
Что по сути только меняло переменную, чтобы можно было вытащить английское название.
Теперь, благодаря вам, так:
Однако, по прежнему, VP не понимает ссылку:
sitename.ru/en/item/4/
В контексте /en/ работает только так:
sitename.ru/en/en/item/4/
1. Боюсь, что поменяв в настройках контекста site_url либо base_url, появятся проблемы с мультиязычностью.
2. Появляется еще одна проблема, VP не знает что контекст изменился, поэтому в меню генерируются ссылки вида:
sitename.ru/index.html
вместо:
sitename.ru/en/index.html
Меню собирается при помощи pdoMenu
base_url для en = /en/
Согласно инструкции.
И каша в голове. Похоже, единственное что работает, это костыль. :\
Допустим, ссылка:
sitename.ru/en/item/1267/
получаем ошибку 404 (у меня 503 т.к. не задал страницу в данном контексте)
Если добавим еще один /en/:
sitename.ru/en/en/item/1267/
То все работает.
Получается, что нужно что-то мудрить с base_url?
Похоже, что самый простой вариант, добавить маршрут:
/item/{item_id:[0-9]+}/en/
И привязать к обработчику:
Так — работает.
Правда ссылка будет:
sitename.ru/en/item/1267/en/
Хотя будет прекрасно работать и с:
sitename.ru/item/1267/en/ Только это ни к чему.
Впрочем, костыль готов. :)
:facepalm:
[[*context_key]] ведь возвращается такой, в каком контексте расположена страница? Получается, что VirtualPage как виртуальный не может находиться где-либо, и берется значение прописанное в скриптах VirtualPage по умолчанию?
item_id — id строки игрового предмета из общей базы. Из которой я беру столбцы name_web, name_en и так далее, в зависимости от ключа контекста, и вывожу данные о предмете.