Pdotools modx revo: pdoTools / Компоненты / docs.modx.pro

Общие параметры / pdoTools / Компоненты / docs.modx.pro

Общие параметры для сниппетов, основанных на pdoTools/pdoFetch.

Параметры выборки ресурсов

Эти параметры определяют, какие объекты будут получены.

НазваниеПо умолчаниюОписание
&classmodResourceКласс получаемого объекта
&parentsТекущий ресурсСписок родителей, через запятую, для поиска результатов. Если поставить 0 — выборка не ограничивается. Если id родителя начинается с дефиса, он и его потомки исключаются из выборки.
&depth10Глубина поиска дочерних ресурсов от родителя.
&resourcesСписок ресурсов, через запятую, для вывода в результатах. Если id ресурса начинается с дефиса, этот ресурс исключается из выборки.
&templatesСписок шаблонов, через запятую, для фильтрации результатов. Если id шаблона начинается с дефиса, ресурсы с ним исключается из выборки.
&contextОграничение выборки по контексту ресурсов.
&whereМассив дополнительных параметров выборки, закодированный в JSON.
&showHidden0Показывать ресурсы, скрытые в меню.
&showUnpublished0Показывать неопубликованные ресурсы.
&showDeleted0Показывать удалённые ресурсы.
&hideContainers0Отключает вывод контейнеров, то есть, ресурсов с «isfolder = 1».
&hideUnsearchableОтключает вывод спрятанных от поиска ресурсов.
&selectСписок полей для выборки, через запятую. Можно указывать JSON строку с массивом, например
{«modResource»:»id,pagetitle,content»}
.
&leftJoinАналог SQL оператора left join
&rightJoinАналог SQL оператора right join
&innerJoinАналог SQL оператора inner join
&joinSequenceinnerJoin,leftJoin,rightJoinПорядок подключения таблиц, через зяпятую.
&sortbypagetitleЛюбое поле ресурса для сортировки, включая ТВ параметр, если он указан в параметре &includeTVs. Можно указывать JSON строку с массивом нескольких полей. Для случайно сортировки укажите «RAND()»
&sortdirASCНаправление сортировки: по убыванию или возрастанию.
&groupbyУказывает поле, по которому группируются результаты
&havingИспользуется, чтобы ограничить выборку сгруппированных строк с помощью условия, относящегося ко всей группе, заданной в &groupby
&limit0Ограничение количества результатов выборки. Можно использовать «0».
&offset0Пропуск результатов от начала.
&first1Номер первой итерации вывода результатов.
&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.
&conditionalTplsJSON строка с массивом, у которого в ключах указано то, с чем будет сравниваться &tplCondition, а в значениях — чанки, которые будут использованы для вывода, если сравнение будет успешно. Оператор сравнения указывается в &tplOperator. Для операторов типа isempty можно использовать массив без ключей.
&outputSeparatorНеобязательная строка для разделения результатов работы.

Параметры результатов

Эти параметры дополнительно определяют, какие данные и каким способом будут выводиться.

НазваниеПо умолчаниюОписание
&returnchunksОпределяет способ вывода результатов. См. ниже.
&fastMode0Быстрый режим обработки чанков. Все необработанные теги (условия, сниппеты и т. п.) будут вырезаны.
&nestedChunkPrefixpdotools_Префикс для «быстрых плейсхолдеров», включаемых параметром &fastMode
&idxВы можете указать стартовый номер итерации вывода результатов.
&totalVartotalИмя плейсхолдера для сохранения общего количества результатов.
&includeContent
0Включаем поле «content» в выборку.
&includeTVsСписок ТВ параметров для выборки, через запятую. Например: «action,time» дадут плейсхолдеры [[+action]] и [[+time]].
&includeTVListПсевдоним &includeTVs
&prepareTVs1Список ТВ параметров, с файлами из источников медиа, для которых нужно сгенерировать полные пути. Если установить в «1», будут подготовлены все ТВ, указанные в &includeTVs.
&processTVsСписок ТВ параметров, которые нужно обработать и вывести согласно их настроек в менеджере системы. Если установить в «1», будут обработаны все ТВ, указанные в
&includeTVs
. Замедляет работу.
&tvPrefixtv. у pdoResources и пусто у других сниппетовПрефикс для ТВ параметров.
&prepareSnippet1Указывает сниппет, который принимает данные перед выводом в чанк и может их менять или добавлять
&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 родителя начинается с дефиса, он и его потомки исключаются из выборки.
&level0 (не ограниченно)Уровень генерируемого меню.
&resourcesСписок ресурсов для вывода в результатах, через запятую. Если id ресурса начинается с дефиса, этот ресурс исключается из выборки.
&templatesСписок шаблонов для фильтрации результатов, через запятую. Если id шаблона начинается с дефиса, ресурсы с ним исключается из выборки.
&whereМассив дополнительных параметров выборки, закодированный в JSON.
&displayStart0Включить показ начальных узлов меню. Полезно при указании более одного «parents».
&contextОграничение выборки по контексту ресурсов.
&showHidden0Показывать ресурсы, скрытые в меню.
&showUnpublished0Показывать неопубликованные ресурсы.
&previewUnpublished0Включить показ неопубликованных ресурсов, если у пользователя есть на это разрешение.
&hideSubMenus0Спрятать неактивные ветки меню.
&selectСписок полей для выборки, через запятую. Можно указывать JSON-строку с массивом, например &select=`{«modResource»:»id,pagetitle,content»}`
&sortbymenuindexЛюбое поле ресурса для сортировки, включая ТВ-параметр, если он указан в параметре &includeTVs, например &sortby=`{«tvname»:»ASC»,»pagetitle»:»DESC»}`. Можно указывать JSON-строку с массивом нескольких полей. Для случайной сортировки укажите &sortby=`RAND()`
&sortdirASCНаправление сортировки: по убыванию или по возрастанию. Если оставить параметры &sortby и &sortdir пустыми, то сортировка будет идти по порядку ресурсов в &resources.
&limit0Ограничение количества результатов выборки.
&offset0Пропуск результатов от начала. Необходимо использовать вместе с явно указанным &limit
&checkPermissionsУкажите, какие разрешения нужно проверять у пользователя при выводе ресурсов, например &checkPermissions=`list`.
&countChildren0Точный подсчет количества дочерних ресурсов каждой категории и вывод их в плейсхолдер [[+children]]. Делает дополнительные запросы в БД, поэтому по умолчанию отключен.
&toPlaceholderЕсли не пусто, сниппет сохранит все данные в плейсхолдер с этим именем вместо вывода на экран.
&plPrefixwf.Префикс для выставляемых плейсхолдеров.
&showLog0Показывать дополнительную информацию о работе сниппета. Только для авторизованных в контекcте «mgr».
&fastMode0Быстрый режим обработки чанков. Все необработанные теги (условия, сниппеты и т.п.) будут вырезаны.
&cache0Кэширование результатов работы сниппета.
&cacheTime3600Время актуальности кэша, в секундах.
&scheme-1Схема формирования url, передаётся в modX::makeUrl(), поэтому возможные варианты нужно смотреть здесь. Особый тип uri подставляет значение uri ресурса, без запуска функции.
&useWeblinkUrl1Генерировать ссылку с учетом класса ресурса.
&rowIdPrefixПрефикс для выставления идентификатора в чанк.
&hereIdid текущего ресурса для генерируемого меню. Нужно указывать только если скрипт сам его неверно определяет, например при выводе меню из чанка другого сниппета.
&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), чтобы получить этот вывод:

 <ул>
            
  • html">

    Главная

  • Статьи

  • О нас

  • Кто-нибудь может мне помочь?

    Изменить: у меня тоже есть раскрывающийся список:

     
  • Разделы

  • Это бесплатный 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, как и любой другой пакет.

    Дела

    Мне еще нужно кое-что выяснить. Я хотел бы лучше контролировать процесс удаления.

    Оставить комментарий

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *