Можно ли системных файлах modx поменять язык версии
Это руководство для установки MODX с расширенным перечнем опций. Рекомендуется устанавливать этот дистрибутив, только если:
- Вы планируете переименовать папки manager/ или connectors/ или переместить каталог core/
- У вас есть доступ по SSH или вы можете легко перемещать и создавать директории для записи на вашем сервере.
Возможно, вы захотите сначала изучить Требования к серверу. Если после прочтения этого документа у вас по-прежнему возникают проблемы с установкой, прочитайте страницу Устранение неполадок при установке.
Список настроек¶
Описание каждого параметра следующее:
Разработано, построено и написано со всей любовью в мире от сообщества MODX.
Подключить мультиязычность на MODX Revolution не сложно, но нужен четкий план действий. Для лучшего понимания рассмотрим процедуру подключения на примере.
Допустим мы хотим подключить два дополнительных языка для сайте, то есть мы хотим получить следующий результат:
Предварительные шаги по установке¶
После того как вы скачали расширенный (Advanced) дистрибутив MODX Revolution, загрузите и распакуйте его на свой сервер. В корневом каталоге две папки - core/ и setup/ . Если вы планируете переместить каталог core/ , перейдите к следующему разделу. Если же вы не собираетесь этого делать или изменили конфигурационный ключ, зайдите в папку setup/ в вашем браузере и перейдите к разделу Дополнительные параметры этого документа.
Символические ссылки для контекстов
По умолчанию между контекстами нельзя ставить символические ссылки, чтобы это включить - переходим в админке сайта "Системные настройки" выбираем в фильтре "Система и сервер" и ставим у "Разрешить перенаправление через контексты" - "Да"
Вот, собственно, и все, да здравствует мультиязычность в MODX Revolution :)
Навигация по статье:
Языков можно подключить неограниченно, для примера остановимся на 1-ом дополнительном языке. Также нам нужен удобный интерфейс создания ресурсов в панели с учетом мультиязычности: связка страниц разных языков.
Для реализации данной задачи нам понадобится:
- MODX Revolution (2.0 и старше), само собой
- Доступ до .htaccess (или ht.access)
- Плагин Babel (2.2 и старше)
Получение списка связанных настроек¶
Если вы заметили в графическом интерфейсе выше, MODX позволяет несколько логично сгруппировать настройки системы. Самые полезные группировки - это area и префикс key. Использование xPDO getCollection Метод, мы можем легко предоставить некоторые критерии поиска, чтобы получить настройки, которые мы хотим.
Вот как мы можем получить все настройки из области «Почта»:
Это естественным образом приводит нас к одной из других особенностей xPDO: xPDOQuery объект. Мы можем использовать его для передачи более сложных критериев нашему вызову getCollection. Вот как мы можем получить все настройки, которые используют префикс «quip»:
Возможно, вы не ожидали введения в xPDO, пока вы просто пытались получить и установить системные настройки, но он там.
Получение метаданных настроек¶
Как только мы начнем извлекать Objects, которые представляют системные настройки, а не только их значение, мы можем увидеть все метаданные для любого заданного параметра (то есть все атрибуты). Посмотрите на этот код в качестве примера:
Как только вы поймете, как манипулировать объектами с помощью MODX и xPDO, вы сможете извлекать и изменять практически все внутри MODX, потому что практически все является объектом.
Типы системных настроек¶
Атрибут xtype определяет, какой тип поля GUI будет использовать при рендеринге интерфейса для этого поля:
- combo-boolean : сохраненные значения 1 и 0. Будет отображать «Да» и «Нет»
- textfield : стандартное текстовое поле
- textarea : стандартная текстовая область
- text-password : стандартное поле пароля (ввод маскируется)
- numberfield : используется для ввода цифр
- modx-combo-language : позволяет пользователю выбрать язык
- modx-combo-source :
- modx-combo-template : позволяет пользователю выбрать шаблон
- modx-combo-content-type : позволяет пользователю выбрать тип контента
- modx-combo-charset : позволяет пользователю выбрать набор символов
- modx-combo-rte : как текстовая область, но с элементами управления форматированием
- modx-combo-context : позволяет пользователю выбрать контекст
- modx-combo-manager-theme : позволяет пользователю выбрать тему оформления интерфейса менеджера MODX
Вывод статического содержимого в зависимости от языка
Существует несколько методов вывода разного статического содержания (заголовки, адреса и копирайт в футере, кнопки и пр.) в зависимости от языка:
1. Для текстовых строк самый правильный вариант - это создавать переводы в лексиконах для каждого языка. И эти лексиконы вызывать в шаблоне. Лексиконы же в зависимости от нужной языковой версии будут выводиться свои.
2. Для, к примеру, чанков можно создать для каждого копии с нужным языком, например, [ [$footer_ru]], [ [$footer_en]], а в шаблонах вызывать в виде [ [$footer_[ [++cultureKey]]]] (при генерации страницы MODX подставит нужное значение [ [++cultureKey]] и выведет содержание чанка для активного языка).
3. Ну и можно проверять контекст и выводить нужное содержимое (как лексиконы, так и прочее) через фильтры ввода-вывода.
Условие вывода лучше прописывать именно через [ [*context_key]], а, к примеру, не через [ [++cultureKey]] т. к. Ключ контекста заполняется один раз и изменить его нельзя, а настройки же контекста можно менять. Например, условие будет таким:
[ [*context_key:is=`web` :then=`г. Москва, ул. Льва Толстого, д. 1` :else=`Moscow, Leo Tolstoy st. 1`]]
С другой стороны, с использованием [ [++cultureKey]], условие будет грамотнее читаться:
[ [++cultureKey:is=`ru` :then=`г. Москва, ул. Льва Толстого, д. 1` :else=`Moscow, Leo Tolstoy st. 1`]]
В общем, выбор, как всегда, за вами :)
Создание мультиязычного контента
Как добавлять страницы сайта на других языках?
В панели управления сайта, во вкладке "Ресурсы", мы видим наши контексты (выводятся имена контекстов, которые вы заполнили при создании/редактировании контекста). Ресурсы каждого из контекстов отвечают за ресурсы языковых версий сайта.
Но как нам знать какой ресурс за какую страницу отвечает, т.е. как же связать страницы разных языков между собой?
Здесь нам и поможет Babel. При создании или редактировании ресурса в правом верхнем углу появятся кнопки, отвечающие за языковые версии ("Создать перевод", "Связать перевод"). Через эти кнопки создаются и связываются ресурсы в другом контексте (языковой версии).
Полученные id ресурсов и используем в настройках контекстов для страниц Главная и 404 (см. таблицу с настройками выше).
Переключатель языков на сайте.
Наконец нам нужны кнопки (ссылки) переключения языковых версий на сайте (не забудьте опубликовать нужные ресурсы). Для этого в любом месте где нужно вывести переключатель (шаблон, чанк) пишем следующее:
Очень редко бывает, что BabelLinks не выводит связанные страницы, хотя все верно настроено и опубликовано. Для этого проверьте создан ли TV связи ссылок - babelLanguageLinks, если TV нет, то создайте его с именем babelLanguageLinks (и названием Babel Translation Links) и укажите имя TV для Babel в "Системных настройках", а так же проверьте указаны ли ключи контекстов в тех же настройках. Или попробуйте переустановить Babel.
Проверки перед установкой¶
Затем MODX продолжит список проверок, чтобы убедиться, что ваша система готова к установке. В случае сбоя любого из них вам нужно будет следовать предложенным указаниям, чтобы убедиться, что ваше программное окружение соответствует Требованиям к серверу и имеет корректные каталоги, доступные для записи.
Когда все будет готово и все проверки пройдены, нажмите 'Установить', чтобы продолжить.
Если появился пустой экран или нет возможности продолжить после нажатия 'Установить', проверьте следующие этапы:
Сохранение настроек системы (программно)¶
Здесь все становится немного сложнее: когда мы получаем значение, используя getOption, мы получаем объект из кэша настроек. Это имеет явное преимущество в скорости, но это означает, что у нас по существу есть копия значения настройки, доступная только для чтения.
Пока есть метод setOption; это только обновляет кэш настроек в памяти.
Это по архитектурным причинам: системные настройки должны быть определены как configurations, NOT runtime dynamic values. Они обычно устанавливаются во время установки, а затем не часто обновляются. Однако могут быть законные времена, когда вам нужно обновить системные настройки программно, например, возможно, вы написали Пользовательская страница менеджера которая предлагает настраиваемую форму для ваших пользователей для своих системных настроек.
Если мы хотим обновить настройки системы, мы используем мощный xPDO getObject функция. Итак, давайте вернемся к нашему поиску простой настройки сайта и сравним ее рядом с более подробным (и более гибким) аналогом xPDO:
Разница в том, что использование getObject извлекает объект из базы данных без кэширования, и мы можем делать с объектом гораздо больше вещей, включая сохранение этого объекта. Итак, вот как мы должны получить и сохранить настройки системы:
Однако обратите внимание, что это не очищает кэш настроек, поэтому любые последующие вызовы getOption по-прежнему будут возвращать более старую кешированную версию настройки.
В WordPress сопоставимая функция API update_option().
Создание плагина "switchContext"
Для того чтобы наша мультиязычность работала нам нужен плагин для связки языка с контекстом.
В панели управления переходим по табу "Элементы" и нажимаем на иконку "Новый плагин".
В поле имя пишем switchContext и помещаем следующий код:
/* Запускаем плагин только на фронтенде и с включенными sef-url */
if ($modx->context->key == 'mgr' || !$modx->getOption('friendly_urls') || $modx->event->name != 'OnHandleRequest') return;
>
/* Определяем текущий язык в cultureKey */
switch ($_REQUEST['cultureKey']) /* Переключаем контекст */
case 'en':
$modx->switchContext('eng');
break;
/* Добавляем дополнительные языки в плагин, если нужно
case 'de':
$modx->switchContext('dtsch');
break;
*/
/* Устанавливаем контекст по умолчанию */
default:
$modx->switchContext('web');
break;
>
/* Очищаем GET-параметр чтобы не допустить появлении ссылки вида cultureKey=xy при генерации URL других компонентов */
unset($_GET['cultureKey']);
?>
Далее переходим по вкладке "Системные события", включаем OnHandleRequest и сохраняем.
Изменение ключа конфигурации¶
Далее MODX попросит вас выбрать язык. Затем будет показана страница приветствия, а ниже будет предложено изменить ключ конфигурации MODX. Это позволяет запускать несколько сайтов с общим ядром, поэтому каждому отдельному сайту потребуется свой уникальный конфигурационный ключ.
Чтобы изменить его, просто нажмите на предложенную установщиком ссылку для изменения ключа конфигурации, и вы увидите текстовое поле:
Укажите пользовательский, уникальный ключ конфигурации и нажмите Далее.
Локализация¶
Значения, используемые для описания настроек системы, могут быть необязательно локализованы (т.е. переведены) путем ссылки на конкретный файл локализации. Ключи лексики следуют определенному формату:
- Имя: setting_ + Key
- Описание: setting_ + Key + _desc
Например, если мы посмотрим на Quip's [[++quip.emailsFrom]] настройки, мы видим, что он использует пространство имен quip. Ожидаемая структура папок состоит в том, чтобы искать файлы локализации в папке пространства имен, затем в папке «лексикона», затем в папках, разделенных по языковым кодам, и затем в default.inc.php файле, для примера core/components/quip/lexicon/en/default.inc.php
В нашем примере Quip мы видим имя setting_quip.emailsFrom и описание setting_quip.emailsFrom_desc. Эти два значения соответствуют ключам в $_lang массив внутри default.inc.php:
Мы рекомендуем вам щелкнуть правой кнопкой мыши существующий системный параметр и выбрать «Обновить системный параметр», чтобы получить представление о том, как это работает.
Настройка контекстов
В админке MODX нам нужно создать контекст для нового языка. Для этого перейдите по: "Система" -> "Контексты" и нажимаем "Создать новый".
Далее в качестве "Ключа контекста" вводим, например, для английского - "eng".
ВАЖНО! Эти ключи в дальнейшем будут использованные в плагине переключения контекстов.
Далее правый клик мыши по новому контексту и выбираем "Редактировать". Переходим по табу "Настройки контекста" и нажимаем "Создать новый".
Для каждого языка нам нужно добавить следующие настройки.
- Ключ: base_url (!именно base_url, MODX предлагает не тот ключ)
- Имя: Base URL
- Запись словаря для раздела: language
- Значение: /
- Ключ: base_url
- Имя: Base URL
- Запись словаря для раздела: language
- Значение: /en/
Culture key ([ [++cultureKey]]).
Не путать с "Ключом контекста" ([ [*context_key]])
- Ключ: cultureKey
- Имя: Culture key
- Запись словаря для раздела: language
- Значение: ru
Culture key
- Ключ: cultureKey
- Имя: Culture key
- Запись словаря для раздела: language
- Значение: en
- Ключ: site_start
- Имя: Site start
- Запись словаря для раздела: language
- Значение: 1
- Ключ: site_start
- Имя: Site start
- Запись словаря для раздела: language
- Значение: id страницы для Главной в английской версии.
Все id создаем через Babel, об этом ниже.
- Ключ: site_name
- Имя: Site name
- Запись словаря для раздела: language
- Значение: Название сайта
- Ключ: site_name
- Имя: Site name
- Запись словаря для раздела: language
- Значение: Название сайта на английском языке
- Ключ: error_page
- Имя: 404 page
- Запись словаря для раздела: language
- Значение: id страницы для 404 ошибки
- Ключ: error_page
- Имя: 404 page
- Запись словаря для раздела: language
- Значение: id страницы для 404 ошибки в английской версии.
Все id создаем через Babel, об этом ниже.
Locale, используется для форматирования даты в текстовом виде
- Ключ: locale
- Имя: Setting locale
- Запись словаря для раздела: language
- Значение: ru_RU.UTF8
- Ключ: locale
- Имя: Setting locale
- Запись словаря для раздела: language
- Значение: en_US.UTF8
Для контекста "web" все настройки уже есть в "Системных настройках", но при этом для каждого контекста их можно переопределить.
Конфигурация контекста¶
Далее MODX покажет форму подробной настройки контекста. Здесь вы можете указать пути к контексту web (основному контексту), а также каталогам для ваших connectors/ и manager/ папок. MODX рекомендует не изменять пути к web/ контексту без особых причин.
Переименование каталогов manager/ и connectors/ может добавить дополнительный уровень безопасности вашему сайту. Просто измените пути и URL в предоставленных текстовых полях. Примечание. Если вносите изменения, каталоги выше любого из этих путей должны быть доступны для записи, чтобы позволить MODX записать в них директории manager/ и/или connectors/ .
Убедитесь, что вы изменили и путь и URL!
Когда закончите, нажмите 'Далее', чтобы продолжить.
Параметры¶
- Ключ: в конечном итоге это уникальное имя вашего [[++placeholder]]
- Имя: эта метка отображается в столбце «Имя» при просмотре всех настроек системы. Это значение может быть локализовано (см. Ниже).
- Тип поля: в настоящее время поддерживаются 3 типа ввода: TextField, TextArea, Yes/No
- Пространство имен: как с Пользовательские страницы менеджера, пространство имен определяет папку внутри core/components/.
- Area Lexicon Entry: это значение влияет на группировку системных настроек; создайте несколько системных настроек, которые совместно используют «Область ввода лексики», и они будут сгруппированы вместе.
- Значение: значение по умолчанию.
- Описание: это значение может быть локализовано (см. Ниже).
Расширенные настройки¶
Теперь вам будет предложено несколько вариантов установки, аналогичные окну Базовая установка, но с двумя дополнительными опциями внизу. 'Новая установка' будет единственной опцией, доступной для выбора, что вам и нужно. Ниже вы можете настроить разрешения для создания новых файлов или папок в вашей установке MODX. Значения по умолчанию должны работать корректно,но, если сервер задаёт лишние ограничения, вы можете изменить права доступа для каталогов/файлов на 0775/0664 соответственно.
Ниже вам будут представлены две опции:
Они будут недоступны во время новых установок. (Во время обновлений рекомендуется также снять эти флажки.) Нажмите 'Далее', чтобы перейти к следующему шагу.
Сопоставление и Кодировка¶
Затем появится следующая форма для настройки кодировки и сопоставления вашей базы данных:
Для большинства пользователей подходят значения по умолчанию. Однако, если вам нужно изменить их, убедитесь, что сопоставление соответствует кодировке. Нажмите 'Попытка создания или выборки из базы данных' после того, как вы закончите.
Переопределение настроек (Наследование)¶
В то время как в этом документе в основном говорится о Системных настройках, MODX поставляется с очень мощной системой наследования, которая позволяет переопределять настройки в контексте, пользовательской группе или пользовательской настройке.
По сути, когда параметр запрашивается в сеансе определенного пользователя, параметры проверяются в следующем порядке:
- Настройка пользователя
- Настройка группы пользователей
- Настройка контекста (обратите внимание, что в менеджере контекст обычно называется mgr)
- Настройка системы
Создание новых системных настроек (через графический интерфейс)¶
Чтобы создать новый параметр системы, нажмите ссылку «Создать новые параметры» в разделе «Система» -> «Параметры системы».
Автоматически определяем id переведенных страниц
Часто в статических элементах сайта прописаны ссылки на ресурсы обычной версии, и, соответственно, нужно прописать и id другой языковой версии сайта, но как их узнать, не выискивая перевода каждой страницы сайта (а если каталог огромный, то можно засеть на долгое время)?
В этом нам поможет сниппет BabelTranslation. Подробнее можно посмотреть тут - BabelTranslation. BabelTranslation выводит связанный id переведенной страницы нужного контекста:
[ [BabelTranslation? &resourceId=`6` &contextKey=`eng`]]
Выведет в шаблоне связанный id в контексте eng для страницы с активного контекста (в нашем случае web).
В совокупности с условиями ввода-вывода, конструкцию можно сделать грамотнее:
[ [*context_key:is=`web` :then=`6` :else=`[ [BabelTranslation:default=`6`? &resourceId=`6` &contextKey=`eng`]]`]]
Тут мы выводим если контекст web и выводим связанный id для контекста eng через BabelTranslation, если же связанного id нет, то выведет (исходя из :default).
Конструкцию можно сделать еще проще, для этого всю конструкцию сохраняем в чанк [ [$eng_id]] и задаем параметр [ [+ru_id]] в чанке (чанк и параметр можно назвать как угодно). Код чанка:
[ [*context_key:is=`web` :then=`[ [+ru_id]]` :else=`[ [BabelTranslation:default=`[ [+ru_id]]`? &resourceId=`[ [+ru_id]]` &contextKey=`eng`]]`]]
А так, например, выводим id для ссылки через наш чанк с параметром (если не найдет переведенную страницу, откроется исходная страница):
Ссылка на страницу
Параметры базы данных¶
Далее вы увидите форму с запросом информации о вашей базе данных:
Кроме того, если вы хотите, вы можете указать другой префикс таблиц базы данных. В этом случае MODX добавит пользовательский префикс всем таблицам - может оказаться полезным, если вы хотите сделать несколько установок MODX в одной базе данных.
По завершении нажмите ссылку 'Проверить соединение с сервером базы данных и отобразить список доступных сопоставлений'. Если у вас есть какие-либо ошибки, они будут показаны ниже. В этом случае, проверьте правильность имени пользователя и пароля вашей базы данных. Кроме того, если у вашего пользователя нет прав для создания базы данных, вам может потребоваться сделать это вручную.
Создание Администратора по умолчанию¶
Следующая форма содержит несколько полей для настройки вашего администратора. Укажите имя пользователя, которое вы хотите использовать в качестве имени администратора.
MODX не рекомендует использовать 'admin' в качестве имени администратора, поскольку оно чаще всего применяется и в первую очередь проверяется хакерами.
В этом же окне введите свой адрес электронной почты (или email вашего администратора) и укажите пароль. Нажмите Далее, когда закончите.
Переименование или перемещение ядра¶
MODX Revolution позволяет вам переименовать и/или переместить папку core/ для повышения уровня безопасности вашего сайта. Вы также можете переместить каталог core/ за пределы корня сайта, чтобы обеспечить дополнительную безопасность установки MODX.
Если вы решите переименовать или переместить ядро, MODX рекомендует сделать это перед установкой. Просто переименуйте или переместите каталог core/ на начальном этапе и установщик откроет вам страницу с просьбой указать новое местоположение ядра:
Введите в текстовое поле абсолютный путь, куда вы переместили основной каталог. Если MODX сможет найти ядро, вы продолжите установку. Если MODX по-прежнему не может найти каталог по указанному вами пути, проверьте, правильно ли вы его ввели, что это абсолютный путь и что вы сделали каталог доступным для чтения (и записи файлов в папку core/cache/ ).
MODX может также попросить вас сделать доступным для записи файл setup/includes/core.config.php . Это необходимо для изменения пути к ядру системы, и вы должны это сделать прежде, чем продолжить.
Резюме после установки¶
Затем MODX сообщит вам, возникли ли какие-либо ошибки во время установки, и предложит вам выполнить переустановку, если возникла какая-либо из этих ошибок.
Когда установка будет успешной, нажмите 'Далее' для продолжения, и вам будет представлена заключительная настройка:
MODX рекомендует вам обязательно удалить каталог setup/ после установки, чтобы защитить ваш сайт от тех, кто попытается запустить установку. Для этого активируйте флажок 'Отметьте этот пункт, чтобы удалить каталог и файлы программы установки с вашего сервера'.
Когда все будет готово, нажмите 'Войти', чтобы появилась форма входа в интерфейс панели управления. Вы закончили!
maxyer
17.11.14 в 17:11
Комментарии (12)
Сравнение БД, если я правильно понимаю вопрос, utf8_general_ci.
Это я кажется сам где-то при установке modx указывал.
А для таблиц написано, latin1_swedish_ci и этот параметр, похоже, сам modx установил.
Как же теперь этот latin1_swedish_ci изменить?
Ведь это наверное из-за него проблемы с русским?
Для каждой из 70 таблиц в отдельности ?!
Мне кажется, это слишком высокая цена за возможность ознакомиться с CMS.
Изменить 'сравнение' для всех таблиц сразу phpmyadmin возможности не дает.
Ну у вас есть несколько выходов:
1. Переустановить modx
2. Сдампить базу, открыть её в нормальном текстовом редакторе и поменять везде latin1_swedish_ci на utf8_general_ci через поиск.
3. Выполнить в phpmyadmin sql запрос, заменив bd_name на своё:
Результатом вывода данного запроса будет будет sql запрос для смены каждой таблицы, копируете их все и вставляете в окно запроса.
4. Забить на modx.
5. Писать контент на шведском.
Переустановка modx ни к чему иному не приводит.
С дампом в текстовой редактор пока не пробовал, но это вроде бы решение.
Вопрос: неужели такие костыли при установке modx обычное дело?
экспорт структуры БД в текстовый редактор, замена latin1 на utf8 помогли ;)
Но почему же все-таки это случилось?
ОС: Ubuntu 12.04
браузер: Firefox
При установке под вендой в денвере такой проблемы не было, но там вообще после «успешной» установки ни сайт, ни админка не запускаются, ибо возникает какая-то ошибка из-за отсутствия какого-то там класса внутре
>> Но почему же все-таки это случилось?
Как написал Антон ниже, это из-за настроек Вашего веб-сервера. После создания базы данных лучше заранее установить Collation в utf8_general_ci для всей базы, а при установке MODX удостовериться, что используется UTF-8.
Видимо кодировка зависит от настроек вашего локального сервера, на веб хостингах никогда с такой проблемой не сталкивался.
У меня точно такая же проблема. При установке указывал utf8_general_ci и сейчас тоже везде стоит русский:
У меня то же было вместо надписи Главная и имени одни . Я пошёл другим путём. Удалил содержимое папки MODX на XAMPP и прежде чем запустить повторный процесс установки MODX, зашёл на localhost/phpmyadmin и тоже снёс всю базу данных которую раннее создал для MODX и создал новую только напротив имени БД в Сравнении установил utf8_general_ci вот и всё. Затем перешёл к установке MODX. Вопросы исчезли стало всё по русски.
Если случайно (или так получилось), что ваша база sql «стала» сравнение latin1_swedish_ci, а не utf8_general_ci (вместо русского отображаются знаки вопроса).
Решение:
1. Сделать dump базы и скачать к себе на компьютер
2. Открыть в Notepad++ в базе latin1 заменить вездt на utf8
3. сохранить базу как Utf8 без BOM — это важно
4. в phpadmin снести старую базу и импортировать новую.
Без проблем работает на новой установке.
Для добавления комментариев вы должны авторизоваться или зарегистрироваться.
Есть несколько контекстов: web, ru, en, fi, sv, соответственно у каждого контекста свой язык, Мультиязычность была сделана с помощью Babel 3.0 на версии Modx 2.5.7.
Сайт переносим на новый домен где содержимое контекста web должно быть fi, то есть поменять местами ресурсы web и fi.
Каким образом можно решить эту задачу? Есть ли способ просто поменять контекст по умолчанию?
Димитрий
26.08.17 в 19:08
Комментарии (4)
На данный момент решил так:
1. Изменил плагин который привязан к событию OnHandleRequest
2. Подправил контексты web и fi, а именно cultureKey, site_url, base_url.
3. В системных настройка установил default_context = web
4. В файле index.php изменил строку $modx->initialize('web'); на $modx->initialize('fi');
5. Не забудьте почистить кэш.
P.S. А так собирался, отвязать созданные связи babel между ресурсами, поменять ресурсы контекста web и fi и заново проставить связи babel'ом.
Так это…
Нет! Это опция не меняет контекст по умолчанию, а всего лишь при создании нового ресурса и сохранение его, запишет в указанный контекст.
Возникла подобная нужда — изменить контексты по умолчанию… Попробовал указанный способ, но… что-то не срослось… возможно, я что-то не понимаю или не то делаю. Может ли мне кто-то помочь?
Для добавления комментариев вы должны авторизоваться или зарегистрироваться.
MODX поставляется с гибким набором системных настроек. Они находятся в Система -> Системные настройки и могут быть легко отредактированы и изменены. Все системные настройки доступны в ваших шаблонах с помощью обозначения [[++placeholder]] . Посмотрите Теги шаблона для дополнительной информации.
Создание системной настройки программно¶
Возможно, вы захотите создать Системные настройки программно, чтобы предоставить вашим пользователям более чистый UX / UI. В своем коде вы можете поместить что-то вроде следующего:
Обратите внимание, что вы должны создать записи лексики, которые соответствуют вашему имени ключа (см. Раздел «Локализация» выше):
- Имя: setting_ + Key
- Описание: setting_ + Key + _desc
Таким образом, в этом примере вам необходимо добавить следующие записи лексикона в загруженный вами лексикон:
MODX заполняет значения для имени и описания на основе этих записей лексики.
Может оказаться полезным ссылаться на ваши локализованные языковые строки внутри ваших шаблонов или CMP. Это можно сделать с помощью тега лексикона, но вы должны указать тему «setting», например,
Получение настроек системы (программно)¶
Чтобы получить значение настройки из сниппета, плагина или другого PHP-кода, вы используете getOption функции и передачи ей уникальный ключ для опции, например:
В WordPress сопоставимая функция API get_option().
Эта функция извлекает значение из кэша настроек.
Настройка .htaccess
В корне сайта должен быть файл .htaccess (иногда файлы скрыты от просмотра, см. в настройках вашего FTP-клиента) или ht.access (его переименовываем в .htaccess).
В файле .htaccess проверяем правильность 'RewriteBase' и включен ли modRewrite ('RewriteEngine On').
ВАЖНО! .htaccess - файл дополнительной конфигурации веб-сервера Apache, если у вас другой сервер и без Apache конфигураций, то директивы в .htaccess у вас работать не будут. Но практически все современные сервера используют связку Apache + NGINX, т. е. работать .htaccess в скорее всего будет. Работает ли modRewrite можно проверить путем добавления обычных редиректов в .htaccess или путем настройки SEF-ссылок (если они работают, то .htaccess активен).
Если сайт установлен в корневой каталог используемого домена, то в .htaccess пишем:
RewriteEngine On
RewriteBase /
Если сайт установлен не в корневой каталог, то пишем:
RewriteEngine On
RewriteBase /каталог/
Далее добавляем в наш .htaccess после наших редиректов, в самом конце, следующее (см. изображение ниже):
RewriteCond % !-d
RewriteCond % !-f
RewriteRule ^(ru|en)/favicon.ico$ favicon.ico [L,QSA]
RewriteCond % !-d
RewriteCond % !-f
RewriteRule ^(ru|en)/assets(.*)$ assets$2 [L,QSA]
RewriteCond % !-f
RewriteCond % !-d
RewriteRule ^(ru|en)?/?(.*)$ index.php?cultureKey=$1&q=$2 [L,QSA]
Установка Babel
Устанавливаем пакет Babel, в панели управления переходим по "Система" -> "Управление пакетами" и нажимаем "Загрузить дополнения" и находим там Babel, загружаем и устанавливаем пакет.
Проходим все необходимые условия установки пока не увидите "Настройки установки". Здесь уже должны быть контексты которые мы создали (по примеру это: web, eng; если поле пустое, то можно вписать ключи контекстов руками), другие настройки оставляем без изменений.
Источники файлов в TV для нескольких контекстов
Если у вас для каких-либо TV настроены источники файлов, то после создания нового контекста нужно будет добавить источники файлов в настройках этих TV к новым контекстам.
Читайте также: