MOXI - Быстрая настройка Modx Revo после установки

Создание нового сайта на modx это всегда рутинный процесс настройки рабочего окружения под жизнеспособную систему. После чистой установки в modx нет ни pdoTools, ни ЧПУ. Для решения этой задачи есть немало инструментов, таких как siteExtra, Boilerplate, siteDev, App. Всех их объединяет подход к настройке системы: настраиваем пакет со всеми настройками и улучшалками, упаковываем и затем загружаем в менеджере пакетов системы. У меня также была своя модификация siteExtra, но она уже достаточно устарела, а возиться с исходниками и упаковкой пакета было банально каждый раз лень, так что я решил потратить своё время, но сделать максимально удобный и расширяемый инструмент, который можно было бы с лёгкостью дорабатывать и изменять с течением времени.

Итак появился Moxi - инструмент настройки ЧИСТОЙ установки cms modx revo на хостинг.

Из приведенных выше инструментов были позаимствованы часть функционала/кода, которые мной используются при каждой новой установки modx. Добавлен также и новые возможности, которых в данных сборках не было.

Данный инструмент работает на modx версии от 2.7(возможно на версиях ниже тоже будет работать, но я не проверял) и ниже 3.0(ПОДДЕРЖКИ MODX3 НЕТ!).

Для запуска как web среды, так и cli нужен php >= 7.4.

Быстрый старт

!!! ВНИМАНИЕ !!! Запускать настройку можно исключительно на свежеустановленную систему! Запуская данный инструмент на уже рабочем сайте НЕЛЬЗЯ!

Подключаемся через ssh, переходим в корень сайта и клонируем репозиторий

git clone https://github.com/alexsoin/moxi.git

WEB

Открываем http://домен_сайта/moxi/ видим интерфейс настройки.

setup

Можем изменить название сайта, поменять расположение панели управление, тоесть введя panel вместо http://домен_сайта/manager/ в панель управления можно будет попасть по адресу http://домен_сайта/panel/. Подробнее про то зачем изменять адрес панели управления можете почитать тут. Также можно не заполнять эти поля и тогда название сайта и его адрес не изменятся.

Отдельно код данного скрипта можете найти тут.

Далее список дополнений. Галками отмечаем, какие дополнения нужно установить на сайт. Их список настраивается в файле src/data/addons.php. Далее ставим галку, чтобы удалить инструмент moxi после окончания настройки.

Самый времязатратный процесс настройки это установка дополнений, если на сервере стоят ограничения времени выполнения запроса, то все дополнения могут не успеть установиться, но не беда, запускаем moxi ещё раз и недостающие дополнения установятся. Исключение это скачанные, но не успевшие установиться дополнения, чтобы их установить нужно будет вручную через менеджер дополнений нажать установить, но если вы ставите не на тестовой какой-то среде, где время выполнения скрипта 30 секунд, то скорее всего всё успеет установиться.

По окончанию установки видим лог выполнения и над ним кнопки открывающие модальные окна с ошибками и предупреждениями.

На этом настройка завершена.

CLI

Альтернативный способ запуска moxi. В отличие от web интерфейса нельзя изменить список устанавливаемых дополнений. Преимущество запуска через cli в том, что тут уже не будет ограничения на времени выполнения скрипта.

В томже терминале ssh, в котором склонировали репозиторий, переходим в директорию moxi.

cd moxi

И запускаем через php версии 7.4 утилиту:

php7.4 ./cli.php

На разных хостингах запуск php необходимой версии происходит по-разному, где-то php7.4, где-то php74, где-то /usr/bin/php74/bin/php. Для того чтобы узнать как на вашем хостинге запустить php нужной версии, читайте документацию, либо обращайтесь в техподдержку хостинга.

Вводим логин и пароль администратора панели управления cms modx.

Далее указываем название сайта(если нужно его сменить), либо нажимаем сразу enter и тогда название не изменится.

Далее изменение названия панели управления, тут аналогично.

На следующем шаге отобразится список запускаемых процессов, соглашаемся, вводим Y либо сразу нажимаем enter и начнётся настройка.

Может кто не знает, в командной строке когда показывается окно подтверждения процесса запуска [Y/n] большая буква означает то, что применится по умолчанию без ввода символов, тоесть если [y/N] значит применится n.

Настройка завершена.

Структура

Приложение имеет следующую структуру:

├── app.php                            // Главный класс
├── cli.php                            // Класс для работы в командной строке
├── web.php                            // Класс для работы через web интерфейс
├── index.html                         // UI
├── _frontend/                         // Исходники UI компонента
└── src/                               // Исходные данные проекта
    ├── content/                       // Контент
    │   ├── core/                      // Файлы директории core которые будут скопированы на сайт
    │   │   ├── components/
    │   │   │   └── translit/          // Фикс компонента translit
    │   │   └── elements/
    │   │       ├── zoomx/             // Файлы zoomx
    │   │       │   ├── controllers/   // Контроллеры zoomx (App\Controllers)
    │   │       │   ├── plugins/       // Плагины zoomx
    │   │       │   ├── snippets/      // Сниппеты zoomx
    │   │       │   └── templates/     // Шаблоны zoomx
    │   │       ├── chunks/            // Чанки fenom
    │   │       └── templates/         // Шаблоны fenom
    │   │           └── layouts/       // Макеты шаблонов fenom
    │   ├── pages/                     // Контент ресурсов
    │   ├── plugins/                   // Контент плагинов
    │   ├── snippets/                  // Контент сниппетов
    │   └── templates/                 // Контент шаблонов
    └── data/                          // Импортируемые данные
        ├── addons.php                 // Список пакетов разделенных по провайдерам
        ├── clientConfig.php           // Поля и группы полей для пакета ClientConfig
        ├── plugins.php                // Список плагинов и их настроек
        ├── providers.php              // Список провайдеров пакетов
        ├── resources.php              // Список ресурсов
        ├── settings.php               // Список системных настроек и их значений
        ├── snippets.php               // Список сниппетов
        ├── templates.php              // Список шаблонов
        └── tvs.php                    // Список тв параметров

В главном классе происходит основная магия: установка дополнений, ресурсов, плагинов, настройка дополнений и т.д.

Режимы работы

Есть два режима работы:

  1. Настройка через web интерфейс - открываем страницу установщика в браузере (предварительно авторизовавшись под админом в панели управления) и запускаем настройку.
  2. Настройка через командную строку - запускаем cli.php через php 7.4 и также запускаем настройку. В сравнении с веб-интерфейсом cli инструмент не имеет возможности выбора устанавливаемых дополнений, устанавливаются все пакеты находящиеся в файле src/data/addons.php

Удобство данного подхода заключается в том, что его можно легко изменить под свои нужды сделав форк репозитория и изменив нужные файлы.

Ресурсы

  • 401 - Доступ запрещен
  • 404 - Страница не найдена
  • 503 - Сайт не доступен
  • sitemap.xml
  • robots.txt

401

404

503

Плагины

composer_init - Подключает пакеты композера, если они были добавлены в корне папки core. Реализуется плагин описанный тут.

template_list - Добавляет кнопку со списком подключенных файловых шаблонов на странице редактирования шаблона в панели управления. Отдельно код плагина можно посмотреть тут.

templates-list-btn

templates-list-modal

manager_breadcrumbs - Возвращает хлебные крошки в панели управления

breadcrumbs

ignore - Добавляет fenom модификатор ignore с помощью которого можно избежать белого экрана смерти при подключении файлов. Код плагина тут.

Сниппеты

Тут для примера добавил только один сниппет - модификатор для fenom.

version - Добавляет гет параметр к подключаемым стилям/скриптам, для того чтобы избежать диалога с менеджером "открой ещё раз сайт и нажми ctrl+f5". Код сниппета тут, комментарий с кодом автора.

ТВ

img - тв поле для прикрепления картинки к ресурсу. Также в ресурсе данный тв параметр вынесен в нижний правый блок вкладки "Документ".

tv-img

Настройка дополнений

Translit

Добавлен расширенный транслит для спецсимволов, кириллических букв и т.д.

ClientConfig

Добавляются вкладки "Основное", "Контакты", "SEO" и поля для них. Переносится кнопка открытия конфигуратора на главный пункт меню.

cconfig-1

cconfig-2

cconfig-3

Метрика head/body выводятся через модификатор ignore, чтобы js код с фигурными скобками не ломал сайт.

ZoomX

Заменен шаблон вывода ошибок. Шаблоны хранятся в core/elements/zoomx/templates.

zoomx-error-admin

Добавлена проверка на администратора на странице ошибки, чтобы не показывать лог вывода ошибок всем пользователям.

zoomx-error-user

Добавлено пространство имен App\Controllers контроллеры которого находятся в папке core/elements/zoomx/controllers. И добавлен сам тестовый контроллер HelloController который по умолчанию отключен, чтобы его проверить нужно раскомментировать его вызов в файле core/config/routes.php.

Остальные изменения

Переименован стартовый шаблон на Главная страница.

Включен режим ЧПУ.

В настройки форм добавлен профиль Site и правила для ресурсов:

profile-site

Полезные ссылки

  • Кастомизация - Настройка moxi под свои задачи
  • m2f.zencod.ru - Конвертер modx тегов в синтаксис fenom
  • htpasswd.zencod.ru- Генератор htpasswd файла, для настройки базовой авторизации для core, manager, connectors.