Как создать свою сборку для MODX
Как и обещал, выкладываю инструкцию — как на основе сборки siteExtra сделать свою сборку. Скачать исходники можно на гитхабе https://github.com/ilyautkin/siteExtra. Полученный архив загружаем на сайт и распаковываем.
И так, сначала давайте придумаем название новой сборки — чтобы всегда сразу знать, что это наш продукт. Представим, что мы пользуемся не бутстрапом, а фреймворком Simpliste. Так и назовём нашу сборку, Simpliste.
Открываем файл /siteExtra-master/_build/build.transport.php и указываем наше название, вместо site. После чего открываем наш файл в браузере.
После этих манипуляций в папке /core/packages/ будет создан транспортный пакет с нашей сборкой. Его можно уже скачать и использовать в работе.
Но нам не нужна копия сборки с новым именем. Поэтому, разберёмся со структурой. Если вы знакомы с modExtra, то ничего нового для себя вы не откроете, так как за основу я брал именно этот компонент.
А если вы еще не разбирались с созданием компонентов, сейчас всё подробно объясню.
В файле build.transport.php вы могли заметить целый список резолверов.
Это список файлов, которые будут запущены во время установки пакета. В основном, вся логика находится в них. Вы можете написать собственные резолверы и включить их в этот список. Можете убрать из списка любой резолвер — и он не будет выполнен. Сами резолверы хранятся в папке /_build/resolvers/.
Что делает каждый из резолверов?
Резолверы выполняются в порядке их следования. Поэтому, например, установка дополнений указана первым делом, а создание ресурсов происходит после того, как шаблон был указан в качестве дефолтного.
В нашей сборке ничего из этого менять необязательно. Мы переходим к следующей части.

Помимо резолверов в сборке есть 2 папки — /assets/components/simpliste/ и /core/components/simpliste/ (они были переименованы, когда мы в первый раз запустили файл build.transport.php). Всё, что вы загрузите в эти папки, будет распаковано при установке. Поэтому, файлы фреймворка Simpliste мы загрузим в /assets/components/simpliste/framework/ (на иллюстрации слева)
В папке /core/components/simpliste/elements/chunks/ хранятся все чанки, которые будут установлены. Если вы захотите создать новый чанк, не забудьте прописать его еще и в файле /_build/data/transport.chunks.php
Теперь поправим блоки на сайте — чтобы вёрстка соответствовала используемому фреймворку.
Вот, какие изменения я внёс в чанки и в шаблон:
Кроме чанков и шаблонов в сборке присутствуют плагины и сниппет. Так что работа далеко не ограничивается только вёрсткой.
Вот конечный вариант — Сборка Simpliste-1.2.0-beta.transport.zip
Предлагаю в комментариях выкладывать свои варианты сборки, чтобы все могли ими пользоваться.
И так, сначала давайте придумаем название новой сборки — чтобы всегда сразу знать, что это наш продукт. Представим, что мы пользуемся не бутстрапом, а фреймворком Simpliste. Так и назовём нашу сборку, Simpliste.
Открываем файл /siteExtra-master/_build/build.transport.php и указываем наше название, вместо site. После чего открываем наш файл в браузере.
После этих манипуляций в папке /core/packages/ будет создан транспортный пакет с нашей сборкой. Его можно уже скачать и использовать в работе.
Но нам не нужна копия сборки с новым именем. Поэтому, разберёмся со структурой. Если вы знакомы с modExtra, то ничего нового для себя вы не откроете, так как за основу я брал именно этот компонент.
А если вы еще не разбирались с созданием компонентов, сейчас всё подробно объясню.
В файле build.transport.php вы могли заметить целый список резолверов.
$resolvers = array(
'providers',
'addons',
'rename_htaccess',
'remove_changelog',
'cache_options',
'template',
'tvs',
'resources',
'settings',
'fix_translit',
'fix_fastuploadtv',
'manager_customisation'
);Это список файлов, которые будут запущены во время установки пакета. В основном, вся логика находится в них. Вы можете написать собственные резолверы и включить их в этот список. Можете убрать из списка любой резолвер — и он не будет выполнен. Сами резолверы хранятся в папке /_build/resolvers/.
Что делает каждый из резолверов?
- providers — подключает репозиторий modstore.pro. Вы можете прописать здесь подключение любых других репозиториев
- addons — устанавливает дополнения. В файле для каждого провайдера прописан свой список дополнений (почти в самом конце файла — строки со 129 по 151).
- rename_htaccess — переименовывает файл ht.access. Если вы пользуетесь связкой nginx и php-fpm, для вас этот резолвер бесполезен. Если же на сервере работает Apache, то ht.access надо переименовать, чтобы заработали дружественные URL.
- remove_changelog — удаляет файл changelog.txt, чтобы ошибка об угрозе исчезла.
- cache_options — прописывает в конфиге пример настройки для MemCached. Я стараюсь подключать к сайтам MemCached и, чтобы он нормально заработал, нужно внести изменение в файл config.core.php. Со сборкой мне не нужно запоминать, что и куда прописывать — нужно только раскомментировать эти строки:

- template — указывает установленный шаблон в качестве шаблона по умолчанию
- tvs — создаёт ТВ-параметры. Если вам какие-то из ТВ-шек мешают, или, наоборот, захочется добавить ТВ, редактируйте этот файл. В нём есть пример создания ТВ типа FastUploadTV и MIGX.
- resources — создаёт ресурсы. Тут, думаю, всё понятно.
- settings — устанавливает значение для системных настроек. Код писался на скорую руку, но я планирую в дальнейшем приводить код в порядок и делать редактирование резолверов проще.
- fix_translit — создаёт таблицу транслитерации. Этот резолвер можно взять в пример, если надо создать какой-нибудь файл, например, файл импорта из CSV или какой-то нужный скрипт.
- fix_fastuploadtv — указывает правильный адрес папки /connectors/ для FastUploadTV
- manager_customisation — создаёт правила кастомизации ресурсов. Здесь вы можете вынести определённые ТВ-параметры на первую вкладку ресурса, например.
Резолверы выполняются в порядке их следования. Поэтому, например, установка дополнений указана первым делом, а создание ресурсов происходит после того, как шаблон был указан в качестве дефолтного.
В нашей сборке ничего из этого менять необязательно. Мы переходим к следующей части.

Помимо резолверов в сборке есть 2 папки — /assets/components/simpliste/ и /core/components/simpliste/ (они были переименованы, когда мы в первый раз запустили файл build.transport.php). Всё, что вы загрузите в эти папки, будет распаковано при установке. Поэтому, файлы фреймворка Simpliste мы загрузим в /assets/components/simpliste/framework/ (на иллюстрации слева)
В папке /core/components/simpliste/elements/chunks/ хранятся все чанки, которые будут установлены. Если вы захотите создать новый чанк, не забудьте прописать его еще и в файле /_build/data/transport.chunks.php
Теперь поправим блоки на сайте — чтобы вёрстка соответствовала используемому фреймворку.
Вот, какие изменения я внёс в чанки и в шаблон:
Кроме чанков и шаблонов в сборке присутствуют плагины и сниппет. Так что работа далеко не ограничивается только вёрсткой.
Вот конечный вариант — Сборка Simpliste-1.2.0-beta.transport.zip
Предлагаю в комментариях выкладывать свои варианты сборки, чтобы все могли ими пользоваться.
Комментарии: 29
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Илья, а подскажи вот такой момент. У тебя один шаблон всего идет в сборке и написано, что ресолвер «указывает установленный шаблон в качестве шаблона по умолчанию». А если я несколько шаблонов создам и захочу какой-то из них сделать по умолчанию? Я смотрю код и не понимаю как ресолвер понимает какой ему шаблон взять и сделать по умолчанию…
При установки пакета такая ошибка выскакивает
Версии дополнений указывать обязательно? Что делать если вышла новая версия создавать новый пакет?
Хочу чтобы чанки помещались в указанные каталоги.
В файле transport.chunks.php
пишу такой код:
на что сборщик выдает ошибку
Подскажи, пожалуйста, как решить эту проблему.
А дальше в резольвере обработать этот массив типа как тут:
у меня на локалке развернут сайт build...ru, и он заряжен всем базовым из обоих репозиториев, и всеми настройками — системными, визуальными, структурными, htaccess, метатеги, роботс, 404, в общем, все, что так или иначе приходится делать на всех сайтах. Там же, на локалке, я поддерживаю сам модекс и все дополнения в последней версии. И когда новый сайт — тупо заливаю дамп на хостинг, меняю доступы к репозиторию modstore и парольку, и можно работать без предварительной нудятины.
При этом все устанавливается и работает.