Общие параметры / pdoTools / Компоненты / docs.modx.pro
Общие параметры для сниппетов, основанных на pdoTools/pdoFetch.
Параметры выборки ресурсов
Эти параметры определяют, какие объекты будут получены.
Название | По умолчанию | Описание |
---|---|---|
&class | modResource | Класс получаемого объекта |
&parents | Текущий ресурс | Список родителей, через запятую, для поиска результатов. Если поставить 0 — выборка не ограничивается. Если id родителя начинается с дефиса, он и его потомки исключаются из выборки. |
&depth | 10 | Глубина поиска дочерних ресурсов от родителя. |
&resources | Список ресурсов, через запятую, для вывода в результатах. Если id ресурса начинается с дефиса, этот ресурс исключается из выборки. | |
&templates | Список шаблонов, через запятую, для фильтрации результатов. Если id шаблона начинается с дефиса, ресурсы с ним исключается из выборки. | |
&context | Ограничение выборки по контексту ресурсов. | |
&where | Массив дополнительных параметров выборки, закодированный в JSON. | |
&showHidden | 0 | Показывать ресурсы, скрытые в меню. |
&showUnpublished | 0 | Показывать неопубликованные ресурсы. |
&showDeleted | 0 | Показывать удалённые ресурсы. |
&hideContainers | 0 | Отключает вывод контейнеров, то есть, ресурсов с «isfolder = 1». |
&hideUnsearchable | Отключает вывод спрятанных от поиска ресурсов. | |
&select | Список полей для выборки, через запятую. Можно указывать JSON строку с массивом, например {«modResource»:»id,pagetitle,content»}. | |
&leftJoin | Аналог SQL оператора left join | |
&rightJoin | Аналог SQL оператора right join | |
&innerJoin | Аналог SQL оператора inner join | |
&joinSequence | innerJoin,leftJoin,rightJoin | Порядок подключения таблиц, через зяпятую. |
&sortby | pagetitle | Любое поле ресурса для сортировки, включая ТВ параметр, если он указан в параметре &includeTVs. Можно указывать JSON строку с массивом нескольких полей. Для случайно сортировки укажите «RAND()» |
&sortdir | ASC | Направление сортировки: по убыванию или возрастанию. |
&groupby | Указывает поле, по которому группируются результаты | |
&having | Используется, чтобы ограничить выборку сгруппированных строк с помощью условия, относящегося ко всей группе, заданной в &groupby | |
&limit | 0 | Ограничение количества результатов выборки. Можно использовать «0». |
&offset | 0 | Пропуск результатов от начала. |
&first | 1 | Номер первой итерации вывода результатов. |
&last | Автоматически, по формуле (total + first — 1) | Номер последней итерации вывода результатов. |
&loadModels | Список компонентов, через запятую, чьи модели нужно загрузить для построения запроса. Например: &loadModels=`ms2gallery,msearch3`. | |
&tvFilters | Список фильтров по ТВ, с разделителями AND и OR. Разделитель, указанный в параметре &tvFiltersOrDelimiter представляет логическое условие OR и по нему условия группируются в первую очередь. Внутри каждой группы вы можете задать список значений, разделив их &tvFiltersAndDelimiter. Поиск значений может проводиться в каком-то конкретном ТВ, если он указан «myTV==value», или в любом «value». Пример вызова: &tvFilters=`filter2==one,filter1==bar%||filter1==foo`. Обратите внимание: фильтрация использует оператор LIKE и знак «%» является метасимволом. И еще: Поиск идёт по значениям, которые физически находятся в БД, то есть, сюда не подставляются значения по умолчанию из настроек ТВ. | |
&tvFiltersAndDelimiter | «,» | Разделитель для условий AND в параметре &tvFilters. |
&tvFiltersOrDelimiter | «||» | Разделитель для условий OR в параметре &tvFilters. |
&sortbyTV | Дополнительное поле, по которому нужно сортировать результаты. Может быть указано напрямую в параметре &sortby | |
&sortdirTV | Направление сортировки по дополнительному полю, указанному в &sortbyTV. Может быть указано напрямую в параметре &sortby | |
&sortbyTVType | Тип сортировки по ТВ параметру. Возможные варианты: string, integer, decimal и datetime. Если пусто, то ТВ будет отсортирован в зависимости от его типа: как текст, число или дата. | |
&checkPermissions | Укажите, какие разрешения нужно проверять у пользователя при выводе объектов. | |
&disableConditions | Отключает специфичные для класса modResource параметры выборки. | |
&fenomModifiers | список сниппетов-модификаторов через запятую, для подключения в Fenom. Подробности в соответствующем разделе. |
Параметры шаблонов
Эти параметры устанавливают чанки, которые содержат шаблоны для генерации вывода, то есть отвечают за внешний вид.
Название | Описание |
---|---|
&tpl | Имя чанка для оформления ресурса. |
&tplFirst | Имя чанка для первого ресурса в результатах. |
&tplLast | Имя чанка для последнего ресурса в результатах. |
&tplOdd | Имя чанка для каждого чётного ресурса (хоть «odd» значит «нечётный», работает для чётных ресурсов). |
&tpl_N | Имя чанка для N-го ресурса, например, &tpl_4=`tpl4th` установит шаблон для 4-го ресурса. |
&tpl_nN | Имя чанка для каждого N-го ресурса, например, &tpl_n4=`tplEvery4th` будет применено к каждому 4-му ресурсу. |
&tplCondition | Поле ресурса, из которого будет получено значение для выбора чанка по условию в &conditionalTpls. |
&tplOperator | Необязательный оператор для проведения сравнения поля ресурса в &tplCondition с массивом значений и чанков в &conditionalTpls. |
&conditionalTpls | JSON строка с массивом, у которого в ключах указано то, с чем будет сравниваться &tplCondition, а в значениях — чанки, которые будут использованы для вывода, если сравнение будет успешно. Оператор сравнения указывается в &tplOperator. Для операторов типа isempty можно использовать массив без ключей. |
&outputSeparator | Необязательная строка для разделения результатов работы. |
Параметры результатов
Эти параметры дополнительно определяют, какие данные и каким способом будут выводиться.
Название | По умолчанию | Описание |
---|---|---|
&return | chunks | Определяет способ вывода результатов. См. ниже. |
&fastMode | 0 | Быстрый режим обработки чанков. Все необработанные теги (условия, сниппеты и т. п.) будут вырезаны. |
&nestedChunkPrefix | pdotools_ | Префикс для «быстрых плейсхолдеров», включаемых параметром &fastMode |
&idx | Вы можете указать стартовый номер итерации вывода результатов. | |
&totalVar | total | Имя плейсхолдера для сохранения общего количества результатов. |
&includeContent | 0 | Включаем поле «content» в выборку. |
&includeTVs | Список ТВ параметров для выборки, через запятую. Например: «action,time» дадут плейсхолдеры [[+action]] и [[+time]] . | |
&includeTVList | Псевдоним &includeTVs | |
&prepareTVs | 1 | Список ТВ параметров, с файлами из источников медиа, для которых нужно сгенерировать полные пути. Если установить в «1», будут подготовлены все ТВ, указанные в &includeTVs. |
&processTVs | Список ТВ параметров, которые нужно обработать и вывести согласно их настроек в менеджере системы. Если установить в «1», будут обработаны все ТВ, указанные в | |
&tvPrefix | tv. у pdoResources и пусто у других сниппетов | Префикс для ТВ параметров. |
&prepareSnippet | 1 | Указывает сниппет, который принимает данные перед выводом в чанк и может их менять или добавлять |
&decodeJSON | Разбирает поля типа JSON вместо вывода в виде строки | |
&scheme | -1 | Схема формирования url, передаётся в modX::makeUrl(), поэтому возможные варианты нужно смотреть здесь. Особый тип uri подставляет значение uri ресурса, без запуска функции. |
&useWeblinkUrl | Генерировать ссылку с учетом класса ресурса. | |
&toSeparatePlaceholders | Если вы укажете слово в этом параметре, то ВСЕ результаты будут выставлены в разные плейсхолдеры, начинающиеся с этого слова и заканчивающиеся порядковым номером строки, от нуля. Например, указав в параметре «myPl», вы получите плейсхолдеры [[+myPl0]] , [[+myPl1]] и т.д. | |
&additionalPlaceholders | Устанавливает дополнительные плейсхолдеры | |
&cache_key | Значение системной настройки cache_resource_key для ресурсов (по умолчанию resource) или default | Ключ кеширования |
&cache_handler | Значение системной настройки cache_resource_handler или xPDOFileCache | Обработчик кеша |
&cacheTime | Значение системной настройки cache_resource_expires или 0 (вечный) | Время жизни кеша (в секундах) |
Способы вызова чанков
Все чанки могут иметь один из следующих префиксов:
@INLINE или @CODE. В качестве шаблона будет использован код после этого префикса.
[[!pdoResources? &parents=`0` &tpl=`@INLINE <li>{{+pagetitle}}</li>` ]]
В INLINE чанках нельзя указывать сниппеты, другие чанки или фильтры вывода через обычные теги, потому что так парсер MODX обработает их в первую очередь, и сниппет получит совсем не то, что вы хотели.
Поэтому для INLINE чанков предусмотрена замена [[+]] на {{+}} — такие теги MODX пропускает, а pdoTools при работае конвертирует их как нужно. Конечно, вы всё равно можете использовать теги MODX, если вам нужно, чтобы в чанк попала уже обработанная информация, например:
[[!pdoResources? &parents=`0` &tplFirst=`@INLINE Текущая страница: [[*pagetitle]]` &tpl=`@INLINE <p>{{+id}} - {{+pagetitle}}<p>` ]]
@FILE. Вместо чанка из базы данных используется содержимое файла. Путь до файла указывается в систеной настройке pdotools_elements_path. Имя файла должно быть с расширением .tpl или .html.
[[!pdoResources? &tpl=`@FILE fileBasedRow.tpl` ]]
@TEMPLATE. Указывается идентификатор или имя шаблона. Если пусто — для каждого ресурса будет использован его собственный шаблон.
[[!pdoResources? &tpl=`@TEMPLATE 10` ]]
@CHUNK. Аналогично простому указанию имени чанка, оставлено для совместимости со сторонними сниппетами.
[[!pdoResources? &tpl=`@CHUNK tpl.Resource.row` ]] [[!pdoResources? &tpl=`tpl.Resource.row` ]]
Подробнее про возможности pdoParser можно прочитать в соответствующем разделе.
Возвращаемые значения
pdoTools умеет возвращать данные в разном виде, в зависимости от параметр &return
. В основном это используют сами сниппеты для внутренних нужд, но вы можете указывать &return
в pdoResources:
[[!pdoResources? &parents=`0` &return=`json` ]]
- chunks — оформленные чанки, по умолчанию.
- sql — подготовленный сырой SQL, полезно для отладки. Сам запрос не выполняется, только выводится на экран.
- data — готовый массив данных. Из-за особенностей работы сниппетов MODX этот вариант имеет смысл использовать только при вызове pdoFetch::run() напрямую из своего сниппета, в противном случае вы получите только строку «Array».
- ids — возвращает только идентификаторы документов, через запятую. Удобно для подстановки в качестве параметра другим сниппетам. Параметр
&returnIds
использует именно этот тип. - json — возврат массива данных JSON строкой.
- serialize — возврат массива данных сериализованной строкой. Иногда, по непонятным причинам, может вызвать нехватку памяти. Лучше использовать
json
.
pdoMenu / Сниппеты / pdoTools / docs.modx.pro
Сниппет генерации меню. Может заменять Wayfinder, и позволяет более гибко указывать параметры.
Например, умеет строить меню сразу из нескольких родителей, отображая их как вместе, так и отдельными ветками.
Существенный прирост скорости дает только при первом запуске, дальше Wayfinder не особо уступает, благодаря грамотному кэшированию.
Параметры
По умолчанию pdoMenu принимает общие параметры pdoTools и некоторые свои:
Название | По умолчанию | Описание |
---|---|---|
&parents | Текущий ресурс | Список родителей для поиска результатов, через запятую. Если поставить &parents=`0` — выборка не ограничивается. Если id родителя начинается с дефиса, он и его потомки исключаются из выборки. |
&level | 0 (не ограниченно) | Уровень генерируемого меню. |
&resources | Список ресурсов для вывода в результатах, через запятую. Если id ресурса начинается с дефиса, этот ресурс исключается из выборки. | |
&templates | Список шаблонов для фильтрации результатов, через запятую. Если id шаблона начинается с дефиса, ресурсы с ним исключается из выборки. | |
&where | Массив дополнительных параметров выборки, закодированный в JSON. | |
&displayStart | 0 | Включить показ начальных узлов меню. Полезно при указании более одного «parents». |
&context | Ограничение выборки по контексту ресурсов. | |
&showHidden | 0 | Показывать ресурсы, скрытые в меню. |
&showUnpublished | 0 | Показывать неопубликованные ресурсы. |
&previewUnpublished | 0 | Включить показ неопубликованных ресурсов, если у пользователя есть на это разрешение. |
&hideSubMenus | 0 | Спрятать неактивные ветки меню. |
&select | Список полей для выборки, через запятую. Можно указывать JSON-строку с массивом, например &select=`{«modResource»:»id,pagetitle,content»}` | |
&sortby | menuindex | Любое поле ресурса для сортировки, включая ТВ-параметр, если он указан в параметре &includeTVs, например &sortby=`{«tvname»:»ASC»,»pagetitle»:»DESC»}`. Можно указывать JSON-строку с массивом нескольких полей. Для случайной сортировки укажите &sortby=`RAND()` |
&sortdir | ASC | Направление сортировки: по убыванию или по возрастанию. Если оставить параметры &sortby и &sortdir пустыми, то сортировка будет идти по порядку ресурсов в &resources. |
&limit | 0 | Ограничение количества результатов выборки. |
&offset | 0 | Пропуск результатов от начала. Необходимо использовать вместе с явно указанным &limit |
&checkPermissions | Укажите, какие разрешения нужно проверять у пользователя при выводе ресурсов, например &checkPermissions=`list`. | |
&countChildren | 0 | Точный подсчет количества дочерних ресурсов каждой категории и вывод их в плейсхолдер [[+children]] . Делает дополнительные запросы в БД, поэтому по умолчанию отключен. |
&toPlaceholder | Если не пусто, сниппет сохранит все данные в плейсхолдер с этим именем вместо вывода на экран. | |
&plPrefix | wf. | Префикс для выставляемых плейсхолдеров. |
&showLog | 0 | Показывать дополнительную информацию о работе сниппета. Только для авторизованных в контекcте «mgr». |
&fastMode | 0 | Быстрый режим обработки чанков. Все необработанные теги (условия, сниппеты и т.п.) будут вырезаны. |
&cache | 0 | Кэширование результатов работы сниппета. |
&cacheTime | 3600 | Время актуальности кэша, в секундах. |
&scheme | -1 | Схема формирования url, передаётся в modX::makeUrl(), поэтому возможные варианты нужно смотреть здесь. Особый тип uri подставляет значение uri ресурса, без запуска функции. |
&useWeblinkUrl | 1 | Генерировать ссылку с учетом класса ресурса. |
&rowIdPrefix | Префикс для выставления идентификатора в чанк. | |
&hereId | id текущего ресурса для генерируемого меню. Нужно указывать только если скрипт сам его неверно определяет, например при выводе меню из чанка другого сниппета. | |
&includeTVs | Список ТВ-параметров для выборки, через запятую. Например &includeTVs=`action,time` дадут плейсхолдеры [[+action]] и [[+time]] . | |
&prepareTVs | Список ТВ-параметров, с файлами из источников медиа, для которых нужно сгенерировать полные пути. Если установить &prepareTVs=`1`, будут подготовлены все ТВ, указанные в &includeTVs. | |
&processTVs | Список ТВ-параметров, которые нужно обработать и вывести согласно их настроек в менеджере системы. Если установить &processTVs=`1`, будут обработаны все ТВ, указанные в &includeTVs. Замедляет работу. | |
&tvPrefix | Префикс для ТВ-параметров. |
Параметры шаблонов
Эти параметры устанавливают чанки, которые содержат шаблоны для генерации меню.
Название | Описание |
---|---|
&tplOuter | Чанк оформления всего блока меню. По умолчанию: @INLINE <ul [[+classes]]>[[+wrapper]]</ul> |
&tpl | Чанк оформления пункта меню. Если не указан, то содержимое полей ресурса будет распечатано на экран. По умолчанию: @INLINE <li [[+classes]]><a href="[[+link]]" [[+attributes]]>[[+menutitle]]</a>[[+wrapper]]</li> |
&tplHere | Чанк оформления текущего пункта меню. |
&tplStart | Чанк оформления корневого пункта, при условии, что включен &displayStart. По умолчанию: @INLINE <h3 [[+classes]]>[[+menutitle]]</h3>[[+wrapper]] |
&tplParentRow | Чанк оформления родителя с потомками, не подпадающего под условия &tplCategoryFolder . Например: @INLINE <li><a href="[[+link]]" [[+attributes]]>[[+menutitle]]</a>[[+wrapper]]</li> |
&tplParentRowHere | Чанк оформления текущего документа, если он содержит потомков. |
&tplParentRowActive | Чанк оформления родителей с потомками в активной ветке меню. |
&tplCategoryFolder | Специальный чанк оформления категории. Категорией считается родитель с потомками, у которого указан пустой шаблон или rel="category" в поле link_attributes . |
&tplInner | Чанк оформления всего блока подпунктов меню. Если пуст — будет использовать &tplOuter. Например: @INLINE <ul>[[+wrapper]]</ul> |
&tplInnerRow | Чанк оформления подпункта меню. Например: @INLINE <li><a href="[[+link]]" [[+attributes]]>[[+menutitle]]</a>[[+wrapper]]</li> |
&tplInnerHere | Чанк оформления активного подпункта меню. |
Параметры CSS классов
Эти параметры задают значение плейсхолдеров [[+classnames]]
и [[+classes]]
для различных элементов меню. Плейсхолдер [[+classnames]]
выводит только название класса без атрибута class=»», в отличие от плейсхолдера [[+classes]]
.
Название | Описание |
---|---|
&firstClass | Класс для первого пункта меню. По умолчанию: first |
&lastClass | Класс последнего пункта меню. По умолчанию: last |
&hereClass | Класс для активного пункта меню. По умолчанию: active |
&parentClass | Класс категории меню. |
&rowClass | Класс пункта меню. |
&outerClass | Класс обертки блока меню. |
&innerClass | Класс обертки блока подпунктов меню. |
&levelClass | Класс уровня меню. Например если укажите «level», то будет «level1», «level2» и т.д. |
&selfClass | Класс текущего ресурса в меню. |
&webLinkClass | Класс ресурса-ссылки. |
Примеры
Обычный вывод меню из корня сайта в один уровень:
[[pdoMenu? &parents=`0` &level=`1` ]]
Вывод с исключением определенных родителей и проверкой разрешений пользователя:
[[pdoMenu? &parents=`-10,-15` &level=`2` &checkPermissions=`load,list,view` ]]
Вывод меню сразу из двух родителей, с показом корневых точек:
[[pdoMenu? &parents=`10,15` &displayStart=`1` ]]
Вывод двух уровней ресурсов с подсчетом количества вложенных:
[[pdoMenu? &parents=`0` &level=`2` &tplInner=`@INLINE [[+wrapper]]` &tplParentRow=`@INLINE <li [[+classes]]><a href="[[+link]]" [[+attributes]]>[[+menutitle]]</a> ([[+children]])</li>[[+wrapper]]` &countChildren=`1` ]]
Как настроить Wayfinder (ModX Revo) для получения этого вывода
Задавать вопрос
спросил
Изменено 4 года, 11 месяцев назад
Просмотрено 322 раза
Я не могу понять, как мне настроить Wayfinder (или pdoMenue), чтобы получить этот вывод:
<ул>
Главная
Статьи
О нас
Кто-нибудь может мне помочь?
Изменить: у меня тоже есть раскрывающийся список:
Разделы
Это бесплатный UI-Kit Template Now, основанный на начальной загрузке 4.9.0003
- modx
- modx-революция
[[pdoMenu? &родители=`0` &уровень=`1` &tplOuter=`@INLINE
- `
&tpl=`@INLINE
- [[+menutitle]] [[+обертка]] ` &outerClass=`navbar-nav мл-авто` &rowClass=`nav-ссылка` ]]
Примерно так в pdoMenu. Непроверенный, возможно, вам придется поиграть с тем, как назначаются классы. Если вам нужны первый и последний классы или класс «вы здесь», они также доступны и хорошо задокументированы. https://docs.modx.pro/en/components/pdotools/snippets/pdomenu
4Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google Зарегистрироваться через Facebook Зарегистрируйтесь, используя электронную почту и парольОпубликовать как гость
Электронная почтаТребуется, но никогда не отображается
Опубликовать как гость
Электронная почтаТребуется, но не отображается
Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.
Упаковка чего угодно, от целых сайтов до одного элемента
Teleport — это скриптовый инструмент командной строки для MODX Revolution. С Revo 2.4 он действительно становится мощнее. Его можно использовать для создания транспортных пакетов, но его также можно использовать практически для любых задач управления. Пример, приведенный в GitHub README, — это создание пользователей.
Мы будем немного менее амбициозны и просто создадим транспортный пакет для шаблона, его поддержку CSS, JS, файлы шрифтов и изображений, а также один ресурс для его использования. И мы начнем с предположения, что у вас уже есть установка MODX с рабочим шаблоном, который вы хотите упаковать.
Я работаю на локальном хосте Mac с установленным веб-стеком MAMP. Все, что вам нужно, это терминал командной строки и возможность запускать PHP из командной строки. В моем случае мне просто нужно было добавить одну строку в мой файл . profile, чтобы я мог использовать простой «php» в командной строке —
псевдоним php="/Applications/MAMP/bin/php/php5.6.10/ bin/php"
Настройка
Первым делом я создал необходимую файловую структуру для Телепорта. В своем домашнем каталоге я создал новый каталог «телепорт» и поместил в него каталоги «профиль», «tpl» и «рабочее пространство».
Как видите, моим следующим шагом было загрузить файл teleport.phar с github. Ссылка для скачивания находится в разделе «Установка» файла README. Обязательно получите его там, чтобы получить последнюю версию. Теперь вы можете запустить Teleport со своего терминала.
Профили
Теперь вы готовы начать использовать Teleport. А теперь вам нужно создать профиль для вашего проекта. Это файл .json, который идет… подождите… в директорию профиля! По сути, он сообщает Teleport, где находится ваша установка MODX.
К счастью, нам не нужно самим писать этот файл . json, Teleport создаст его за нас. Просто дайте ему имя проекта и путь к ядру вашей установки MODX, очень похоже на файлы config.core.php.
php teleport.phar --action=Profile --name="SmallBusiness" --code=smallbusiness --core_path=/Applications/MAMP/htdocs/templates.modx/core/ --config_key=config
{ "name":"SmallBusiness","code":"smallbusiness","properties":{"modx":{"core_path":"\/Applications\/MAMP\/htdocs\/templates.modx\/core\/ ","config_key":"config","context_mgr_path":"\/Приложения\/MAMP\/htdocs\/templates.modx\/manager\/","context_mgr_url":"\/templates.modx\/manager\ /","context_connectors_path":"\/Приложения\/MAMP\/htdocs\/templates.modx\/connectors\/","context_connectors_url":"\/templates.modx\/connectors\/","context_web_path": "\/Приложения\/MAMP\/htdocs\/templates.modx\/","context_web_url":"\/templates.modx\/"}}}
Разве ты не рад, что тебе не пришлось это писать? На самом деле, я обманываю так, что мне даже не нужно прописывать команду. Я сохраняю текстовый файл с командами Телепорта и просто редактирую биты, которые отличаются для разных проектов, а затем копирую всю строку и вставляю в окно своего терминала.
Tpls
Что ж, легкая часть позади… теперь самое неприятное. Вам нужен еще один файл .json, а точнее файл .tpl.json, чтобы точно указать Teleport, что вы хотите, чтобы он делал. В настоящее время просто нет возможности самостоятельно погрузиться в JSON. Однако можно обмануть и скопировать разделы, похожие на то, что вы хотите, из tpls в репозитории GitHub.
В моем случае мне нужен один шаблон, один ресурс и целый каталог файлов. Короче говоря, я скопировал биты из пары этих tpl в репозитории и возился с ними, пока это не заработало. Вот что у меня получилось.
{
{
"name": "smallbusiness",
"description": "Шаблон Bootstrap SmallBusiness",
"автор": "sottwell",
"атрибуты": {
"changelog": {
"sourceType": "fileContent",
"source": "{+properties.modx.core_path}components/test/docs/changelog. txt"
},
"readme": {
"sourceType": "fileContent",
"source": "{+properties.modx.core_path}components/test/docs/readme.txt"
},
"license": {
"sourceType": "fileContent",
"source": "{+properties.modx.core_path}components/test/docs/license.txt"
},
"requires": {
"pdoTools": "~2.1.9"
}
},
"автомобили": [
{
"класс_транспорта":"xPDOObjectVehicle",
"объект":{
"класс":"modTemplate ",
"критерии":["id = 2"],
"граф":{
"Категория":[],
"PropertySets":{
"PropertySet": []
}
},
"package":"modx"
},
"attributes":{
"preserve_keys":false,
"update_object": true,
"unique_key":"templatename",
"related_objects":true,
"related_object_attributes":{
"Category":{
"preserve_keys":false,
"update_object":true,
"unique_key":"категория"
},
"PropertySets":{
"preserve_keys":true,
"update_object":true,
"unique_key":["element", "element_class", "property_set"],
"related_objects":true,
"related_object_attributes":{
"PropertySet":{
"preserve_keys": false,
"update_object":false,
"unique_key":"name"
}
}
}
}
}
},
{
"vehicle_class": "xPDOObjectVehicle",
"object": {
"class": "modResource",
"criteria": [
"id = 22"
] ,
"graph": {
"Template": [
],
"ContentType": [
],
"TemplateVarResources": {
"TemplateVar": [
]
},
"ResourceGroupResources": {
"ResourceGroup": [
]
},
"ContextResources": {
"Context": [
]
}
},
"package": "modx"
},
"attributes": {
"preserve_keys": false,
" update_object": true,
"unique_key": [
"context_key",
"uri"
],
"related_objects": true,
"related_object_attributes": {
"Шаблон": {
"preserve_keys": false,
"update_object": true,
"unique_key": "templatename"
},
"ContentType": {
"preserve_keys": false,
"update_object": true,
"unique_key": "name"
},
"TemplateVarResources": {
"preserve_keys": false,
"update_object": true,
"unique_key": [
"tmplvarid",
"contentid"
],
"related_objects": true,
"related_object_attributes": {< br>"TemplateVar": {
"preserve_keys": false,
"update_object": true,
"unique_key": "name"
}
}
},
"ResourceGroupResources": {
"preserve_keys": false,
"update_object": true,
"unique_key": [
"document_group",
"document"
],
"related_objects": true,
"related_object_attributes": {
"ResourceGroup": {
"preserve_keys": false,
"update_object": true,
"unique_key": "name"
}
}
},
"ContextResources": {
"preserve_keys": true,
"update_object": true,
"related_objects": true ,
"related_object_attributes": {
"Context": {
"preserve_keys": true,
"update_object": false
}
}
}
}
}
},
{
"vehicle_class":"xPDOFileVehicle",
"object":{
"source":"{+properties. modx.context_web_path}assets/ тема",
"цель":"возврат MODX_ASSETS_PATH;"
},
"атрибуты":{
"класс_транспортного средства":"xPDOFileVehicle"
}
}
]
}
Суть всего этого в четырех разделах: атрибуты для пакета в целом, затем три транспортных средства для трех вещей, которые я хочу упаковать. Я подозреваю, что многие атрибуты для транспортных средств могут быть опущены, но я не собираюсь соваться в это, пока не буду уверен в этом.
Атрибуты
Файл начинается с названия проекта, описания и автора. Затем он попадает в некоторые атрибуты. Я сказал ему добавить три основных текстовых файла, changelog.txt, readme.txt и license.txt, и сказал, где их найти.
{...
"attributes": {
"changelog": {
"sourceType": "fileContent",
"source": "{+properties.modx.core_path}components /test/docs/changelog.txt"
},
"readme": {
"sourceType": "fileContent",
"source": "{+properties.modx.core_path}components /test/docs/readme.txt"
},
"license": {
"sourceType": "fileContent",
"source": "{+properties. modx.core_path}components /test/docs/license.txt"
},
...
Новая функция Teleport с Revo 2.4 — зависимости. Шаблону нужен фрагмент для создания меню. В этом случае я использовал pdoMenu, часть пакета pdoTools. Поэтому я указал зависимость от pdoTools с упоминанием последней версии на данный момент.
...
"requires": {
"pdoTools": "~2.1.9"
}
...
Транспорт
Затем садимся в транспорт. Они в основном сообщают Teleport, какие объекты вы хотите добавить в пакет. Единственными изменениями, которые я внес в шаблоны и скопированные средства ресурсов, было поле «критерии», где я указал идентификаторы шаблона и ресурса, который мне нужен.
...
{
"класс_транспортного средства":"xPDOObjectVehicle",
"объект":{
"класс":"modTemplate",
"критерии":["id = 2"],
...
{
"класс_транспортного средства": "xPDOObjectVehicle",
"объект": {
"класс": "modResource",
"критерии" : ["id = 22"],
...
Файловый транспорт намного проще; все, что ему нужно знать, это откуда взять файлы и куда их установить. Я сказал, что мне нужен каталог assets/theme, и он был установлен обратно в каталог assets.
И Извлечение
К счастью, после всего этого, мы можем вернуться к передаче Телепорту одной строки, и это составит для нас наш пакет. Больше копирования/вставки слегка отредактированной команды. Просто скажите, какие файлы профиля и tpl использовать.
php teleport.phar --action=Extract --profile=profile/bootstrap_small_business.profile.json --tpl=tpl/bootstrap_small_business.tpl.json --name=BootstrapSmallBusiness --version=1.0.0 --release=pl
Аргумент имени устанавливает имя пакета вместе с версией и выпуском. По умолчанию код профиля и имя tpl объединяются с помощью _ для формирования имени пакета.
ZIP-файл пакета будет помещен в каталог «рабочая область». Это обычный пакет transport.zip, который можно установить в установщике MODX Manager, как и любой другой пакет.
Дела
Мне еще нужно кое-что выяснить. Я хотел бы лучше контролировать процесс удаления.