Создание нового сайта на 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/
видим интерфейс настройки.
Можем изменить название сайта, поменять расположение панели управление, тоесть введя 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 // Список тв параметров
В главном классе происходит основная магия: установка дополнений, ресурсов, плагинов, настройка дополнений и т.д.
Режимы работы
Есть два режима работы:
- Настройка через web интерфейс - открываем страницу установщика в браузере (предварительно авторизовавшись под админом в панели управления) и запускаем настройку.
- Настройка через командную строку - запускаем
cli.php
через php 7.4 и также запускаем настройку. В сравнении с веб-интерфейсом cli инструмент не имеет возможности выбора устанавливаемых дополнений, устанавливаются все пакеты находящиеся в файлеsrc/data/addons.php
Удобство данного подхода заключается в том, что его можно легко изменить под свои нужды сделав форк репозитория и изменив нужные файлы.
Ресурсы
- 401 - Доступ запрещен
- 404 - Страница не найдена
- 503 - Сайт не доступен
- sitemap.xml
- robots.txt
Плагины
composer_init - Подключает пакеты композера, если они были добавлены в корне папки core
. Реализуется плагин описанный тут.
template_list - Добавляет кнопку со списком подключенных файловых шаблонов на странице редактирования шаблона в панели управления. Отдельно код плагина можно посмотреть тут.
manager_breadcrumbs - Возвращает хлебные крошки в панели управления
ignore - Добавляет fenom модификатор ignore
с помощью которого можно избежать белого экрана смерти при подключении файлов. Код плагина тут.
Сниппеты
Тут для примера добавил только один сниппет - модификатор для fenom.
version - Добавляет гет параметр к подключаемым стилям/скриптам, для того чтобы избежать диалога с менеджером "открой ещё раз сайт и нажми ctrl+f5". Код сниппета тут, комментарий с кодом автора.
ТВ
img - тв поле для прикрепления картинки к ресурсу. Также в ресурсе данный тв параметр вынесен в нижний правый блок вкладки "Документ".
Настройка дополнений
Translit
Добавлен расширенный транслит для спецсимволов, кириллических букв и т.д.
ClientConfig
Добавляются вкладки "Основное", "Контакты", "SEO" и поля для них. Переносится кнопка открытия конфигуратора на главный пункт меню.
Метрика head/body выводятся через модификатор ignore
, чтобы js код с фигурными скобками не ломал сайт.
ZoomX
Заменен шаблон вывода ошибок. Шаблоны хранятся в core/elements/zoomx/templates
.
Добавлена проверка на администратора на странице ошибки, чтобы не показывать лог вывода ошибок всем пользователям.
Добавлено пространство имен App\Controllers
контроллеры которого находятся в папке core/elements/zoomx/controllers
. И добавлен сам тестовый контроллер HelloController
который по умолчанию отключен, чтобы его проверить нужно раскомментировать его вызов в файле core/config/routes.php
.
Остальные изменения
Переименован стартовый шаблон на Главная страница
.
Включен режим ЧПУ.
В настройки форм добавлен профиль Site
и правила для ресурсов:
Полезные ссылки
- Кастомизация - Настройка moxi под свои задачи
- m2f.zencod.ru - Конвертер modx тегов в синтаксис fenom
- htpasswd.zencod.ru- Генератор htpasswd файла, для настройки базовой авторизации для
core
,manager
,connectors
.