Восьмибитный путь MODx
или
Сайт с нуля MODx revo, часть 6:
Сказочная настройка доступов и классическая мультиязычность.
Превосходным свойством системы, вполне безошибочно должно окрестить эластичную настройку прав доступа. Для таких задач, где потребно приоткрыть занавесу только к редактированию текста, и, надлежит утаить такие элементы администраторской деятельности как шаблоны, чанки, сниппеты и всю прочую, прочую исходную ересь, в modx, предусмотрено достаточно пригодных для сего инструментов. Элементарными словами: дабы «несведующий» человек
начисто к перцам собачьим
Следуй в Контроль доступа → Политики доступа. Скопируй Content Editor и назови ее Manager.
Отредактируй, проставь галочки на следующих ключах:
- change_profile
- class_map
- countries
- create
- delete_document
- directory_create
- directory_list
- directory_remove
- directory_update
- edit_document
- empty_cache
- file_create
- file_list
- file_manager
- file_remove
- file_update
- file_upload
- file_view
- frames
- home
- list
- load
- logout
- menu_reports
- menu_site
- menu_support
- menu_tools
- menu_user
- new_document
- new_document_in_root
- publish_document
- remove
- resource_duplicate
- resource_tree
- save_document
- source_view
- tree_show_resource_ids
- undelete_document
- unpublish_document
- view
- view_document
- view_element
- view_offline
- view_template
С остальных ключей — флажки снимаем.
Сейчас, создай новую группу пользователей, Название — manager, Контексты: web, mgr; Политика панели управления — Manager.
Отредактируй эту новую группу, в Правах доступах, измени политику доступа на Manager.
Далее ступай в Управление → Пользователи. Создай нового пользователя с именем supermanager, флажок на Активный. Вкладка Права доступа и добавляем пользователя в группу manager, с ролью Member.
Следуй к Медиа → Источники файлов, измени источник Filesystem, в правах доступа добавь группу Administrator, роль: Super User – 0, политика: Media Source Admin.
Это делается для того, чтобы пользователи из группы Manager не смогли отредактировать файлы, находящиеся за пределами доступных источников.
Далее нужно немного изменить сниппет MIGX: migxResourceMediaPath.
найди:
if (empty($docid)) { $modx->log(MODX_LOG_LEVEL_ERROR, '[migxResourceMediaPath]: docid could not be determined.'); return; }
меняй на:
if (empty($docid)) { //$modx->log(MODX_LOG_LEVEL_ERROR, '[migxResourceMediaPath]: docid could not be determined.'); if(empty($pathSource)) { return 'upload/'; }else{ return $pathSource; } }
В Источниках файлов, где используется этот сниппет, добавляй параметр: pathSource, таким образом чтобы это была корневая дирректория. Должно получится примерно так:
Дело в том, что исходный сниппет MIGX
значит, что у группы манагера, при просмотре сего источника файлов из меню Медиа → Управление медиа, будет загружаться корневая дирректория. А тебе это не нужно.
Годно: доступ к исходникам сайта спрятан полностью.
Создай индивидуальный виджет для манагеров, зайди в Панели и скопируй панель Default. Назови ее Manager и оставь только следующие виджеты: Проверка конфигурации, Пользователи онлайн, Недавно отредактированные ресурсы.
Создай документ с названием Блокнот, Шаблон txt. В содержимом напиши TODO LIST. Сюда будешь записывать задачи, которые необходимо выполнить, например, по наполнению сайта. Скрой документ из меню, и сними с публикации.
Вернись в раздел Панели. Во вкладке Виджеты – создай новый виджет с названием Добро пожаловать, размер – на всю ширину.
<br/> <a href="/megaadmin/?a=3">Посмотреть заполненные формы</a> <hr/> <a href="/megaadmin/?a=home&namespace=stercseo">301 редиректы</a> <hr/> <a href="/megaadmin/?a=resource/update&id=11">Редактировать блокнот:</a> <hr/> [[#11.content]]
В ссылках проставь нужные разделы панели управления, для быстрого доступа, с главной страницы админ-панели. 11 – это id документа Блокнот.
Далее заходи в Контроль доступа и редактируй группу Manager, Панель управления выбирай: Manager.
Вернись в раздел Панели, отредактируй панель Manager и добавь виджет Добро пожаловать, сразу после Проверки конфигурации (перемещать строки мышкой).
Теперь при заходе под пользователем supermanager – вот как выглядит главная страница админки:
Тот же виджет можешь добавить и к группе администраторов, на свой вкус короч.
Классическая
мультиязычность
Скачай, если не скачал компонент Babel, качай-качай. Устанавливай.
Копируй контекст Website, новый ключ – en. Отредактируй контекст, название: English. Настройки контекста, добавь ключ: cultureKey со значением: en. Сохраняй.
Следуй в Системные настройки и фильтруй на babel и добавь через запятую ключ контекста в настройку babel.contextKeys, вот как: web,en.
Пройдись по страницам контекста Website и свяжи страницы с англоязычной версией.
Добавь следующие ключи в контекст English:
- error_page – Страница Ошибки – id
- site_start – Главная страница – id
- http_host – хост, напр. en.example.test
- site_url – ссылка на версию перевода http://en.example.test
Сайт http://en.example.test – должен являться алиасом основного домена.
Продублируй те же настройки для контекста Website.
Создай плагин, с названием switchContext на Системное событие — OnHandleRequest. Содержимое плагина:
<?php if($modx->event->name != 'OnHandleRequest' || $modx->context->key == 'mgr') { return; } $host = $_SERVER['HTTP_HOST']; $where = array( 'key' => 'http_host', 'value' => $host ); $context = $modx->getObject('modContextSetting',$where); $ctx = $context->get('context_key'); $modx->switchContext($ctx);
Готово, теперь есть два «разных» сайта, крутящихся на одной админке.
Добавим перелинковку для разноязычных страниц, в нужное место шаблона добавь:
<ul> [[BabelLinks?&showCurrent=`true`]] </ul>
В идеале, — необходимо отредактировать чанк, из настроек сниппета &tpl, и поменять код так — чтобы по плейсхолдеру [[+cultureKey]], подкручивалась нужная картинка; и склониться передо грядущим чудовищно мрачным концом всех паралельных вселенных и живых существ этих миров!
хаос и мрак!
Содержание:
- часть 1: установка системы и первичная настройка.
- часть 2: подготовка к работе и установка шаблона верстки на движок
- часть 3: SEO-friendly, как сделать удобным внесение SEO настроек
- часть 4: восхитительная настройка шаблона и страниц сайта. Деградация
- часть 5: программирование не стандартного функционала сайта или MIGX во всем его дьявольском великолепии
- часть 6: Сказочная настройка доступов и классическая мультиязычность