Разное

Modx resource: Работа с ресурсами через API в MODX Revolution — изменение, создание, выборка

Содержание

Вывод списка ресурсов на сайте с использованием pdoResources

Общие параметры для сниппетов, основанных на 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Имя плейсхолдера для сохранения общего количества результатов.
&includeContent0Включаем поле «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.

pdoResources / Сниппеты / pdoTools / docs.modx.pro

Сниппет предназначен для вывода списка ресурсов. Является продвинутой заменой для getResources: обладает всеми его возможностями, но лишен недостатков.

Умеет правильно сортировать ТВ параметры, присоединять таблицы при выборке, включать и исключать категории из разных контекстов и еще много чего.

Параметры

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

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

НазваниеПо умолчаниюОписание
&parentsТекущий ресурсСписок родителей, через запятую, для поиска результатов. Если поставить 0 — выборка не ограничивается. Если id родителя начинается с дефиса, он и его потомки исключаются из выборки.
&depth10Глубина поиска дочерних ресурсов от родителя.
&resourcesСписок ресурсов, через запятую, для вывода в результатах. Если id ресурса начинается с дефиса, этот ресурс исключается из выборки.
&contextОграничение выборки по контексту ресурсов.
&whereМассив дополнительных параметров выборки, закодированный в JSON.
&showHidden1Показывать ресурсы, скрытые в меню.
&showUnpublished0Показывать неопубликованные ресурсы.
&showDeleted0Показывать удалённые ресурсы.
&hideContainers0Отключает вывод контейнеров, то есть, ресурсов с «isfolder = 1».
&select0Список полей для выборки, через запятую. Можно указывать JSON строку с массивом, например {«modResource»:»id,pagetitle,content»}.
&sortbypagetitleЛюбое поле ресурса для сортировки, включая ТВ параметр, если он указан в параметре &includeTVs. Можно указывать JSON строку с массивом нескольких полей, например {«tvname»:»ASC», «pagetitle»:»DESC»}. Для случайно сортировки укажите «RAND()»
&sortdirDESCНаправление сортировки: по убыванию или возрастанию.
&setTotal0Отключение выборки total по умолчанию (с версии 2.11.0). Сниппет pdoPage включает его всегда.
&limit10Ограничение количества результатов выборки. Можно использовать «0».
&offset0Пропуск результатов от начала. Необходимо использовать вместе с явно указанным &limit
&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.

Параметры шаблонов

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

НазваниеОписание
&returnIdsУстановите значение «1», чтобы вернуть строку со списком id ресурсов, вместо оформленных результатов. Все указанные шаблоны игнорируются.
&tplИмя чанка для оформления ресурса. Если не указан, то содержимое полей ресурса будет распечатано на экран.
&tplFirstИмя чанка для первого ресурса в результатах.
&tplLastИмя чанка для последнего ресурса в результатах.
&tplOddИмя чанка для каждого второго ресурса (хоть «odd» значит «нечётный», работает для чётных ресурсов).
&tplWrapperЧанк-обёртка, для заворачивания всех результатов. Понимает один плейсхолдер: [[+output]]. Не работает вместе с параметром &toSeparatePlaceholders.
&wrapIfEmptyВключает вывод чанка-обертки &tplWrapper даже если результатов нет.
&tplConditionПоле ресурса, из которого будет получено значение для выбора чанка по условию в &conditionalTpls.
&tplOperatorНеобязательный оператор для проведения сравнения поля ресурса в &tplCondition с массивом значений и чанков в &conditionalTpls.
&conditionalTplsJSON строка с массивом, у которого в ключах указано то, с чем будет сравниваться &tplCondition, а в значениях — чанки, которые будут использованы для вывода, если сравнение будет успешно. Оператор сравнения указывается в &tplOperator. Для операторов типа isempty можно использовать массив без ключей.
&outputSeparatorНеобязательная строка для разделения результатов работы.

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

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

НазваниеПо умолчаниюОписание
&fastMode0Быстрый режим обработки чанков. Все необработанные теги (условия, сниппеты и т.п.) будут вырезаны.
&idxВы можете указать стартовый номер итерации вывода результатов.
&totalVartotalИмя плейсхолдера для сохранения общего количества результатов. Параметр setTotal должен быть включен.
&includeContent0Включаем поле «content» в выборку.
&includeTVsСписок ТВ параметров для выборки, через запятую. Например: «action,time» дадут плейсхолдеры [[+tv.action]] и [[+tv.time]].
&prepareTVs«1», что означает подготовку всех ТВ, указанных в &includeTVsСписок ТВ параметров, которые нужно подготовить перед выводом.
&processTVsСписок ТВ параметров, которые нужно обработать перед выводом. Если установить в «1», будут обработаны все ТВ, указанные в &includeTVs.
&tvPrefixtv.Префикс для ТВ параметров.
&useWeblinkUrlГенерировать ссылку с учетом класса ресурса, включает плейсхолдер [[+link]].
&toPlaceholderЕсли не пусто, сниппет сохранит все данные в плейсхолдер с этим именем, вместо вывода не экран.
&toSeparatePlaceholdersЕсли вы укажете слово в этом параметре, то ВСЕ результаты будут выставлены в разные плейсхолдеры, начинающиеся с этого слова и заканчивающиеся порядковым номером строки, от нуля. Например, указав в параметре «myPl», вы получите плейсхолдеры [[+myPl0]], [[+myPl1]] и т.д.
&showLog0Показывать дополнительную информацию о работе сниппета. Только для авторизованных в контекте «mgr».

Примеры

Простейший вывод списка дочерних ресурсов документа с идентификатором 1:

[[pdoResources?
    &parents=`1`
    &depth=`0`
    &tpl=`ListRowTpl`
]]

Если используется дополнительное поле image, то вызов изменится следующим образом:

[[pdoResources?
    &parents=`1`
    &depth=`0`
    &tpl=`ListRowTpl`
    &includeTVs=`image`
]]

В чанке ListRowTpl за это поле будет отвечать плейсхолдер [[+tv.image]]

Дополнительная информация

При переносе чанков с getResources, довольно распространённой ошибкой является использование модификатора strtotime, для форматирования даты.

Дело в том, что даты ресурсов и так хранятся в виде timestamp, но конвертируются в нормальные даты из-за использования объектов modResource — так запрограммировано в его свойствах.
А потом, для форматирования даты, их нужно перевести обратно в timestamp. Выходит двойная ненужная конвертация.

pdoTools же работает напрямую с базой данных, без создания объектов и конвертации их значений, поэтому в чанк приходит timestamp, который не нужно дополнительно обрабатывать.
Вы можете сразу применять модификатор date к значениям:

[[+publishedon:date=`%d.%m.%Y`]]
или
[[+createdon:date=`%Y-%m-%d`]]

Это касается работы с датами ресурсов и в других сниппетах pdoTools.

{$_modx->resource.pagetitle ? $_modx->resource.pagetitle : $_modx->resource.longtitle}

Список мероприятий.

Экскурсия с подарком

Приезжайте на экскурсию в ЖК «Прибрежный Квартал» и получайте подарок!

Срок проведения акции до 30 августа

ЖК «Прибрежный Квартал», поселок Лисий Нос, ул. Песочная 3

Запишитесь на экскурсию
В ЖК «Прибрежный Квартал»

На экскурсии вас ждет приятный подарок

{$_modx->runSnippet(‘!AjaxForm’,[
‘snippet’ => ‘FormIt’,
‘form’ => ‘excursions_form_tpl’,
’emailSubject’ => ‘Запись на экскурсию / / ‘ ~ $_modx->getPlaceholder(‘+site_name’),
’emailTo’ => (’emailto’ | option) ~ ‘, [email protected], [email protected], [email protected]’,
’emailFrom’=> (’emailsender’ | option),
’emailFromName’ => ‘Прибрежный квартал’,
’emailTpl’ => ‘message_excursions_tpl’,
‘validate’ => ‘name:required,phone:required,email:required,area:required’,
‘hooks’ => ’email,rest_ask-excursion-form’,
‘formSelector’ => ‘ajax_form’,
‘successMessage’ => ‘Ваша заявка на экскурсию принята. Мы скоро свяжемся с вами!’,
‘-frontend_js’ => »,
‘-frontend_css’ => »,
‘submitVar’ => ‘excursions’
])}

«Прибрежный квартал» — малоэтажный жилой комплекс в Лисьем Носу (Санкт-Петербург). Мы строим дома-грибы, которые обходят реликтовые сосны, сохраняя уникальный природный ландшафт на берегу Финского залива. Это стоит увидеть! Приглашаем Вас на экскурсию с подарком!

Сувениры для посетителей

Посетители экскурсии получают подарок.
Выберите один из представленных ниже, и мы подготовим его к Вашему приезду

{‘pdoResources’ | snippet : [
‘tpl’ => ‘@INLINE

{\’ms2Gallery\’ | snippet : [
\’limit\’ => 0,
\’tpl\’ => \’item\’
\’resources\’ => $id,
]}

{$pagetitle}

{$content}

‘,
‘parents’ => 231,
‘includeContent’=> 1
]}

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

Урок 5. Специальные теги MODx | Теги MODx, longtitle, pagetitle, introtext, content, alias, base_url, Урок CMS MODx Evo | Уроки MODx Evo

Уроки MODx

Что такое специальные теги MODx – это определенные конструкции, которые необходимо вставлять в код шаблона сайта, чтобы вывести ту или иную динамическую информацию на сайте.

При настройке шаблона мы использовали тег [*content*] для вывода содержимого страниц и тег [(base_url)] для указания базового URL для всех страниц сайта.

В этом уроке мы более подробно разберем основные теги, с которыми вам придется столкнуться при разработке сайтов на MODx.

Наиболее распространенные теги MODx

[(site_name)] – этот тег выводит заголовок вашего сайта. Обычно используется в заглавии страниц HTML в теге <title>. Ниже на рисунке изображено поле, содержимое которого выводит эта конструкция. Отредактировать его можно на странице системной конфигурации.

Рисунок 5.1

[(base_url)] или [(site_url)] – два тега идентичны между собой. Эти конструкции позволяют выводить URL вашего сайта. При создании шаблона мы использовали тег [(base_url)] для указания базового URL для корректной работы с относительными путями.

[*pagetitle*] – эта конструкция выводит содержимое поля Заголовок, которое мы будем заполнять на странице создания/редактирования ресурса.

[*longtitle*] – выводит содержимое поля Расширенный заголовок. Обычно используется как главный заголовок <h2> на странице.

[*description*] – выводит содержимое поля Описание. Это поле будем использовать для вывода содержимого в META-теге description.

[*introtext*] – выводит содержимое поля Аннотация. Это поле чаще всего используют при создании новостей, заметок в блоге и т.п. для организации страниц с кратким описанием заметок.

[*content*] – основное содержимое страниц. Конструкция выводит любой текст или HTML код, написанный или отредактированный в визуальном редакторе.

[*id*] – выводит идентификатор ресурса.

[*alias*] – выводит псевдоним ресурса.

[~идентификатор~] – выводит URL адрес ресурса, идентификатор которого указан. Например, если ID страницы Новости4, а псевдоним этой страницы – news, то конструкция [~4~] выведет URL вашей страницы с новостями.  

Обратите внимание:  результатом обработки данной конструкции является лишь строка в виде URL страницы, не перепутайте ее со ссылкой на документ. Ссылка на страницу с использованием этой конструкции будет иметь следующий вид:

<a href=”[~4~]”>Новости</a>

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

Рисунок 5.2

Выше представлены часто употребляемые теги MODx. Но вы должны иметь ввиду, что всего тегов существует гораздо больше. Чтобы вы имели о них представление, мы дополним список менее распространенными тегами.

[*pub_date*] – дата публикации ресурса

[*unpub_date*] – дата завершения публикации

[*createdby*] – идентификатор пользователя, создавшего ресурс

[*createdon*] – дата создания ресурса

[*editedby*] – идентификатор пользователя, редактировавшего ресурс

[*editedon*] – дата редактирования ресурса

[*contentType*] – тип содержимого (например, text/html)

[*type*] – тип (ресурс, папка или ссылка)

[*published*] – опубликован ли ресурс (1|0)

[*parent*] – номер (ID) родительского ресурса

[*isfolder*] – является ли ресурс папкой (1|0)

[*richtext*] – используется ли при редактировании страницы визуальный редактор

[*template*] – номер (ID) используемого шаблона для ресурса

[*menuindex*] – порядковый номер отображения в меню

[*searchable*] – доступен ли ресурс для поиска (1|0)

[*cacheable*] – кэшируется ли ресурс (1|0)

[*deleted*] – ресурс удален (1|0)

[*deletedby*] – идентификатор пользователя, удалившего ресурс

[*menutitle*] – заголовок меню, если таковой есть

[*donthit*] – слежение за количеством посещений отключено (1|0)

[*haskeywords*] – ресурс содержит ключевые слова (1|0)

[*hasmetatags*] – ресурс имеет META теги (1|0)

[*privateweb*] – ресурс входит в частную группу пользовательских документов (1|0)

[*privatemgr*] – ресурс входит в частную группу менеджерских документов (1|0)

[*content_dispo*] – вариант выдачи содержимого (1 – для отображения | 0 – прикрепленное для скачивания)

[*hidemenu*] –документ не отображается в меню (1|0)

[(modx_charset)] – выводит название используемой кодировки

[^qt^] – выводит время запросов к базе данных

[^q^] – выводит количество запросов к базе данных

[^p^] – выводит время работы PHP скриптов

[^t^] – выводит общее время генерации страницы

[^s^] – выводит источник содержимого (база или кэш)

 

1. Откройте для редактирования чанк HEAD и в теге <title> вставьте констркуцию:

[*pagetitle*] | [(site_name)]

Эта конструкция будет выводить в названии HTML-страницы название ресурса и заголовок сайта, разделенные знаком «|».

2. Затем можно добавить META тег description, в содержимое которого вписываем конструкцию [*description*]

<meta name=»description» content=»[*description*]»/>

3. Можно сразу изменить кодировку в шаблоне. Если помните, у нас она была выставлена в UTF-8. В списке выше указан тег, который выводит название кодировки используемой на сайте.

После внесения всех перечисленных изменений чанк HEAD будет иметь следующий вид:

<head>
<base href=»[(site_url)]» />
<title>[*pagetitle*] | [(site_name)]</title>
<meta http-equiv=»Content-Type» content=»text/html; charset=[(modx_charset)] «/>
<meta name=»description» content =»[*description*]»/>
<meta http-equiv=»imagetoolbar» content=»no» />
<link rel=»stylesheet» href=»/assets/templates/site-labmodx/styles/layout.css» type=»text/css» />
<script type=»text/javascript» src=»/assets/templates/site-labmodx/scripts/jquery-1.4.1.min.js»></script>
<script type=»text/javascript» src=»/assets/templates/site-labmodx/scripts/jquery.jcarousel.pack.js»></script>
<script type=»text/javascript» src=»/assets/templates/site-labmodx/scripts/jquery.jcarousel.setup.js»></script>
</head>

4. Вы можете посмотреть, как выглядит заголовок страницы в окне браузера. У нас выглядит так:

Рисунок 5.3

5. Сейчас неплохо было бы автоматизировать вывод главного заголовка <h2> на страницах сайта. Для этого отправляемся на страницу редактирования чанка и перед уже знакомым тегом вывода содержимого страницы вставляем вывод заголовка, содержимое которого будем брать из поля Расширенный заголовок. Как мы видели из рисунка – этому полю соответствует тег [*longtitle*]. После внесения изменений чанк CONTENT примет следующий вид:

<div>
<h2>[*longtitle*]</h2>
[*content*]
</div>

Таким образом, главные заголовки <h2> наших страниц будут выставляться автоматически, и их не нужно будет вписывать в визуальном редакторе. Главное – это не оставлять пустым поле Расширенный заголовок при редактировании ресурса. Так же для организации заголовков Вы можете использовать содержимое других полей, например, поле Заголовок. В этом случае в чанк CONTENT вам необходимо будет добавлять конструкцию <h2>[*pagetitle*]</h2>.

Стили для заголовка в шаблоне уже прописаны. Поэтому, если поле Расширенный заголовок вы не оставили пустым на странице у вас появится заголовок. Вот так он выглядит:

Рисунок 5.4 

6. После этого нам необходимо добавить вывод заголовков в шаблон Во всю ширину, ведь Вы помните, что в этом шаблоне чанка CONTENT у нас нет, а содержимое страниц мы вызываем сразу из шаблона с помощью тега [*content*]. Поэтому, откройте страницу редактирования шаблона и добавьте над этим тегом вывод заголовка: <h2>[*longtitle*]</h2>. После изменений шаблон Во всю ширину должен выглядеть следующим образом. 

Рисунок 5.5

Реализация цепочки навигации «Хлебные крошки». Сниппет Breadcrumbs

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

Рисунок 5.6

Реализовать строку навигации в MODx можно различными способами, но в этом уроке речь пойдет об одном встроенном сниппете Breadcrumbs. Он входит по умолчанию в дистрибутив MODx, и его основной задачей является создание этой цепочки.

Чтобы вызвать сниппет Breadcrumbs в шаблоне мы должны вставить следующую конструкцию:

В этом случае результат работы будет кэшироваться, и при  повторном вызове сниппета код не обрабатывается, а берется из кэш. Некэшируемый вызов осуществляется с помощью названия сниппета, помещенного в квадратные скобки с восклицательными знаками. Вот как бы выглядел некэшируемый вызов: [!Breadcrumbs!].

Результатом работы этого сниппета будет вывод пунктов,  которые отражают иерархию сайта для активной страницы. При этом все пункты навигации будут описаны соответствующими CSS классами.

Например, в нашем случае на странице О нас этот сниппет выведет разметку следующего вида:

<span>
    <span><a href="/main.html" title="Описание страницы">Главная</a></span>
    <span>
        <span>О нас</span>
    </span>
</span>

 Если проанализировать этот код, то мы увидим, что каждый пункт имеет свой класс, при этом последний пункт у нас выводится без ссылки. Разделителем между пунктами служит правая кавычка-ёлочка. Код этого символа: &raquo;.

Для оформления внешнего вида при выводе сниппета используются следующие CSS классы, которые вы должны знать:

  • .B_crumbBox – служит для оформления всего блока цепочки навигации
  • .B_homeCrumb – служит для оформления ссылки, ведущей на главную страницу
  • .B_currentCrumb – служит для оформления пункта текущей страницы
  • .B_firstCrumb – служит для оформления первого элемента цепочки
  • .B_lastCrumb – оформление последнего пункта цепочки
  • .B_crumb – оформление всех остальных элементов (кроме первого, последнего и текущего)
  • .B_hideCrumb – оформление блока c многоточием «…», который появляется в том случае, когда количество пунктов больше установленного вами значения

Используя эти классы, Вы можете в CSS-файле прописать стили для любого тега или пункта навигационной цепочки.

В нашем шаблоне хлебные крошки будут отображаться на всех страницах, кроме главной. Мы вынесли этот элемент в отдельный чанк с именем BREADCRUMB. Сейчас в этом чанке находится следующий код:

<div>
  <div>
   <ul>
      <li>You Are Here</li>
      <li>»</li>
      <li><a href="#">Home</a></li>
      <li>»</li>
      <li><a href="#">Grand Parent</a></li>
      <li>»</li>
      <li><a href="#">Parent</a></li>
      <li>»</li>
      <li><a href="#">Child</a></li>
    </ul>
  </div>
</div>

7. Навигационная цепочка в этом чанке представляет собой ненумерованный список, помещенный в два контейнера <div> и <div>. При этом первый элемент цепочки обозначен классом first, а текущий current. Чтобы сделать динамическую цепочку навигации мы удаляем этот список и на его место вставляем конструкцию вызова сниппета Breadcrumbs. После чего чанк BREADCRUMB будет содержать в себе следующий код:

<div>
   <div>
    [[Breadcrumbs]]
   </div>
</div>

Внимание: в конструкции вызова сниппета имя должно быть написано точно так же, как на странице в администраторской панели: Элементы – Управление элементами – Сниппеты. Это значит, что если Вы напишите с маленькой буквы, либо все буквы будут заглавными, то вызов сниппета осуществлен не будет.

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

Рисунок 5.7

Рассмотрим специальные параметры, которые Вы сможете передавать сниппету Breadcrumbs, чтобы иметь полный доступ к оформлению цепочки навигации.

Напомним, что передача параметров сниппету осуществляется с помощью следующей конструкции:

[[Breadcrumbs? &имя_параметра1=`значение` &имя_параметра2=`значение`]]

Мы уже пользовались подобным синтаксисом при передаче параметров сниппету Wayfinder в уроке о реализации динамического меню.

Параметры Breadcrumbs

Общие настройки:

  • &maxCrumbs – максимальное число пунктов в цепочке. 
    Возможные значения: целое число. 
    По умолчанию: 100.

    Примечание: если установлено число меньше возможного количества пунктов, то посредине цепочки появится многоточие «…» вместо лишних пунктов.

  • &respectHidemenu – скрывать пункты, не помеченные для показа в меню. 
    Возможные значения: 0 — отображать | 1 — скрывать.
    По умолчанию: 1.

    Примечание: включать и отключать пункты для показа в меню можно на странице редактирования ресурса на вкладке «Общие». галочка «Показывать в меню».

  • &showCurrentCrumb – показывать в цепочке пункт с  названием текущей страницы.
    Возможные значения 0 — не показывать | 1 — показывать.
    По умолчанию: 1.

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

  • &currentAsLink – отображать пункт текущей страницы в виде ссылки или в текстовом виде.
    Возможные значения 0 — текст | 1 — ссылка.
    По умолчанию: 0.

    Примечание: по умолчанию этот параметр отображает пункт текущей страницы в виде простого текста, если вы захотите отобразить пункт в виде ссылки на текущую страницу, выставьте значение 1.

  • &linkTextField – название пунктов в цепочке навигации.
    По умолчанию: menutitle или pagetitle.
    Возможные значения: description | longtitle | pagetitle | menutitle.

    Примечание: от этого параметра зависит, какое поле будет браться для формирования названия пунктов цепочки навигации. По умолчанию название пункта цепочки будет совпадать с названием пункта меню, которое можно изменить на странице редактирования ресурса в поле «Пункт меню».

  • &linkDescField – атрибут title для ссылок в цепочке навигации.
    По умолчанию: description.
    Возможные значения: pagetitle, longtitle, description, menutitle.

    Примечание: значение атрибута title всплывает при наведении мышки на ссылку в цепочке навигации. По умолчанию берется значение поля «Описание», которое можно изменить на странице редактирования ресурса.
  • &showCrumbsAsLinks – пункты цепочки навигации являются ссылками или текстом.
    Возможные значения: 0 — текст | 1 — ссылки.
    По умолчанию: 1.

    Примечание: можете установить значение 0, если по какой-то причине хотите, чтобы цепочка навигации была некликабельна и отображалась в виде текста.

  • &crumbGap – строка, которая будет представлять собой разрыв цепочки навигации.
    Возможные значения: строка.
    По умолчанию: многоточие «…».

    Примечание: вы можете указать какие символы будут разрывать цепочку навигации, если количество пунктов в цепочке больше указанного в &maxCrumbs значения.

  • &stylePrefix – приставка в названиях CSS классов.
    Возможные значения: строка.
    По умолчанию: B_.

    Примечание: значение этого параметра определяет префикс в названии CSS классов. Чуть выше мы уже отметили, какие классы используются при выводе HTML разметки и за что они отвечают.

Настройки для ссылки на главную страницу:

  • &showHomeCrumb – отображать ссылку на главную страницу.
    Возможные значения: 0 — не отображать | 1 — отображать.
    По умолчанию: 1.

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

  • &homeId – идентификатор страницы, которая будет считаться главной.
    Возможные значения: целое число.
    По умолчанию: $modx->config[‘site_start’].

    Примечание: по умолчанию главной страницей будет считаться та, идентификатор которой указан на странице системной конфигурации в поле «Первая страница».

  • &homeCrumbTitle – текст пункта главной страницы в цепочке навигации.
    Возможные значения: строка.
    По умолчанию: menutitle или pagetitle.

    Примечание: использовать этот параметр вы можете в том случае, когда захотите, чтобы текст пункта главной страницы отличался от названия пункта меню главной страницы или заголовка страницы, которые можно изменить при редактировании ресурсов. Например, некоторые разработчики вписывают вместо названия «Главная страница» в цепочке навигации название домена.

  • &homeCrumbDescription – пользовательский текст, который может быть использован в качестве атрибута title для ссылки на главную страницу.
    Возможные значения: строка.
    По умолчанию: значение, указанное в параметре linkDescField.

    Примечание: если поле оставить пустым, то текст для атрибута title будет определяться параметром &linkDescField. При желании можете вписать текст, который всплывет при наведении курсора на ссылку. Например, «Перейти на главную страницу»

Настройки для отображения цепочки навигации на различных страницах:

  • &showCrumbsAtHome – отображать цепочку навигации на главной странице.
    Возможные значения: 0 — не отображать | 1 — отображать.
    По умолчанию: 1.

    Примечание: с помощью этого параметра можно отключить показ цепочки навигации на главной странице.

  • &hideOn – не отображать цепочку навигации на страницах
    Возможные значения: разделенные запятыми идентификаторы страниц, на которых не должна отображаться цепочка навигации.

    Примечание: этот параметр удобно использовать для небольшого количества страниц, на которых в качестве исключения не нужен вывод строки навигации. Если же таких страниц много, то лучше воспользоваться параметром &hideUnder либо подумать над созданием еще одного шаблона.

  • &hideUnder – не отображать цепочку навигации на дочерних страницах
    Возможные значения: разделенные запятыми идентификаторы папок, на дочерних документах которых не должна отображаться строка навигации.

    Примечание: указание ID папок скрывает строку навигации только на дочерних страницах. Если вы хотите, чтобы строка не отображалась как на дочерних, так и на родительских страницах, добавьте ID родительских ресурсов как в &hideUnder так и в &hideOn.

Потренируемся передавать дополнительные параметры во время вызова сниппета.

Давайте выведем цепочку навигации, у которой текст ссылки на главную страницу будет Главная, при наведении мышки на ссылку главной страницы будет всплывать надпись Перейти на главную страницу, атрибут title для всех остальных ссылок будет подставляться из поля Расширенный заголовок. Остальные все значения параметров оставим по умолчанию.

9. В чанке BREADCRUMB вставьте конструкцию, приведенную ниже:

[[Breadcrumbs?  &homeCrumbDescription=`Перейти на главную страницу` &linkDescField=`longtitle`]]

Рисунок 5.8

 

10. Обновите страницу в браузере. Вот как будет выглядеть получившаяся цепочка навигации:

Рисунок 5.9

11. Теперь изменим внешний вид цепочки навигации в CSS стилях (файл layout.css). Давайте сделаем так, чтобы ссылки отличались от обычного текста. Сделаем ссылки подчеркнутыми, а при наведении курсора на ссылку – без подчеркивания. Для этого мы идем редактировать CSS-файл, который лежит в директории:

assets/templates/site-labmodx/styles/layout.css

Находим в этом файле стили, отвечающие за отображение блока BreadCrumb (в 114 строке). Удалите эти стили.

/* ----------------BreadCrumb--------------*/
 
#breadcrumb{
    padding:20px 0;
    }
 
#breadcrumb ul{
    margin:0;
    padding:0;
    list-style:none;
    }
 
#breadcrumb ul li{display:inline;}
#breadcrumb ul li.current a{text-decoration:underline;}

12. Вставьте следующие стили вместо удаленных:

#breadcrumb {padding:20px 0;}
#breadcrumb a{text-decoration:underline;}
#breadcrumb a:hover{text-decoration:none;}

Обновите страницу. Если после обновления не видно изменений (мы ведь используем кэшируемый вызов сниппета Breadcrumb), нажмите Ctrl+F5, чтобы загрузить страницу не из кэша браузера. После обновления страницы внешний вид нашей цепочки навигации изменится, но незначительно. Ссылки будут подчеркнуты.

Рисунок 5.10

Как перенести сайт на MODx с компьютера на компьютер
или на другой хостинг

MODX Docs | MODX Docs

Обзор

MODX Revolution (Revo) — это простая в использовании система управления контентом (CMS) и Application Framework, объединенные в одно целое. Несмотря на безграничные возможности, которые предоставляет вам MODX, мы думаем, что работать с ним будет просто и понятно. На каждом этапе MODX стремится предоставить полную свободу.

В дополнение к этому сайту документации, MODX сообщество энергичное и всегда готовое помочь. Продолжайте задавать вопросы — вы будете приятно удивлены отзывчивостью пользователей MODX.

Кроме того, есть доверенные, опытные MODX Профессионалы с кем вы можете взаимодействовать, чтобы выполнить работу. MODX также имеет коммерческую поддержку при поддержке поставщика варианты, поэтому независимо от ваших потребностей и требований — вы можете быть удовлетворены.

С чего начать

Этот сайт документации является подробным справочником по всем вопросам MODX, но есть также руководства и учебные пособия, которые помогут вам быстро и легко начать работу. Основные моменты включают в себя:

Если у вас есть вопрос об этом сайте документации, вы хотите помочь улучшить его, посмотреть источник документации и приложение на GitHub. Новые участники приветствуются!

MODX Revolution

Revolution — флагманская CMS и прикладная среда MODX, которую с любовью называют «Revo». Если вы новичок в MODX, начните с нее.

Быстрые ссылки

Другие ресурсы

Дополнения

Дополнения MODX расширяют основные функциональные возможности программного обеспечения MODX. Другие CMS называют их «плагинами» или «модулями». Многие дополнения разработаны основной командой MODX, а другие сторонними разработчиками. Хотя это ни в коем случае не исчерпывающая ссылка, большинство самых популярных дополнений документированы здесь.

xPDO

xPDO — это объектно-реляционный мост (ORB), который поддерживает MODX. Если вы знаете, что это значит, или вы любите приключения, то для вас следующее:

Быстрые ссылки

Другие ресурсы

Справочник участника

Любишь MODX? Узнайте, как принять участие в сообществе и внести свой вклад в проект с открытым исходным кодом.

А как насчет MODX Evolution?

Evolution — это классическая кодовая база MODX — оригинальная версия, выпущенная в 2005 году. По состоянию на апрель 2017 года Официально Evolution — это отдельный проект, уже не под крылом MODX. Это означает, что у Evolution есть собственное руководство, процессы и сообщество.

Всю информацию о Evolution, включая документацию и дополнительные материалы, можно найти по адресу evo.im.

getResources — getResources | Документы MODX

Что такое getResources?

Фрагмент списка ресурсов и резюмирования общего назначения.

Требования

  • MODX Revolution 2.0.0-beta5 или новее
  • PHP5 или выше

История

getResources был впервые написан Джейсоном Кауардом (opengeek) и выпущен 30 июня 2009 года.

Скачать

Его можно загрузить из менеджера MODX Revolution через Управление пакетами или из репозитория MODX Extras здесь: https: // modx.com / extras / package / getresources

Это НЕ замена Ditto, а скорее альтернативный компонент, который может выполнять некоторые из вещей, которые делают более специализированные компоненты, например, Ditto, Wayfinder, Breadcrumbs; в основном все, что выводит свойства для списка ресурсов (ранее документы в MODX Evolution).

Документацию и руководства по русскому языку можно найти здесь: http://modx.by/docs/modx-add-ons/getresources/

Использование

Фрагмент getResources можно вызвать с помощью тега:

  [[getResources]]
  

До версии 1.6.1-pl, вызовы без указанного свойства & tpl будут выводить массив каждого ресурса в наборе результатов и его полей. Начиная с версии 1.6.1-pl это поведение изменилось, и вам придется использовать «& debug = 1 », чтобы получить полный результат:

  [[getResources? & debug = `1`]]
[[getResources? & parent = `choose_an_id` & debug =` 1`]]
  

Доступные объекты

Свойства шаблона

.

Имя Описание Значение по умолчанию Добавлено в версии
тпл Имя фрагмента, служащего шаблоном ресурса.Если не указан, свойства выводятся для каждого ресурса
tplOdd Имя блока, служащего шаблоном ресурса для ресурсов с нечетным значением idx (см. Свойство idx)
тпл Первый Имя фрагмента, служащего шаблоном ресурса для первого ресурса
tpl Последний Имя блока, служащего шаблоном ресурса для последнего ресурса
tpl_N Имя блока, служащего шаблоном ресурса для N-го ресурса, например & tpl_4 = tpl4th
тпл_нН Имя блока, служащего шаблоном ресурса для каждого N-го ресурса, например, & tpl_n4 = tpl4th будет применяться к любому элементу, кратному 4 1.4,1
tpl Состояние Определяет поле ресурса для сравнения с ключами, определенными в свойстве & conditionalTpls. Должно быть поле ресурса; не работает с шаблонными переменными. 1.5.0
условныйTpls Объект JSON, определяющий карту значений полей и связанных фрагментов tpl для использования, когда поле, определенное & tplCondition, соответствует значению : & conditionalTpls = {"1": "tplA", "2": "tplB", " 3 ":" tplC "} [ПРИМЕЧАНИЕ: tplOdd, tplFirst, tplLast, * и tpl_ {n} будут иметь приоритет над любыми заданными условными Tpls] 1.5,0
tplPath Необязательный каталог для поиска фрагментов на основе файлов при использовании @FILE assets_path + «elements / chunks /»
tplWrapper Имя фрагмента, служащего шаблоном оболочки для вывода [ПРИМЕЧАНИЕ. Не работает с toSeparatePlaceholder]. Заполнитель, куда вставляются элементы, — [[+ output]] . 1.6.0
wrapIfEmpty Если true, будет выводить оболочку, указанную в & tplWrapper, даже если вывод пуст. ложь 1.6.0
выходной сепаратор Необязательная строка для разделения каждого экземпляра tpl (разделитель) «\ n»
к заполнителю Если установлено, результат будет назначен этому заполнителю вместо того, чтобы выводить его напрямую.
для отдельных держателей Если установлено, КАЖДЫЙ результат будет назначен отдельному заполнителю, названному этим параметром, с суффиксом с порядковым номером (начиная с 0). 1.3.0

Около @FILE и @INLINE tpls :

Вы можете префикс любого свойства tpl с помощью @FILE или @INLINE, чтобы использовать фрагмент на основе файла или встроенную разметку соответственно.

  • @FILE — этот префикс позволяет вам предоставить файл вместо чанка в базе данных в качестве tpl. Указанные вами путь и имя файла по умолчанию, если вы не укажете настраиваемое свойство tplPath , будут искать @FILE tpl относительно настроенного вами assets_path + elements / chunks / .
  • @INLINE — этот префикс позволяет указать разметку для использования в tpl непосредственно в значении свойства. Рекомендуется использовать это только при указании свойств tpl * в [Набор свойств], в противном случае любые заполнители в вашей встроенной разметке могут быть оценены до того, как содержимое будет передано в getResources, поскольку кешируемые вложенные теги в MODX Revolution оцениваются перед обработкой содержащий тег начинается. После этого должен быть пробел, например @INLINE [[+ pagetitle]]
Свойства выбора

.

Имя Описание Значение по умолчанию Добавлено в версии
родители Разделенный запятыми список идентификаторов, выступающих в качестве родительских.Используйте -1, чтобы игнорировать родителей при указании _resources_to include. Если этого не сделать, getResources принимает & parent в качестве текущего ресурса и считывает оттуда своих потомков (плюс ресурсы, указанные в & resources = неожиданные результаты). текущий идентификатор ресурса
ресурсов Разделенный запятыми список идентификаторов для включения в результаты. Префикс идентификатора с тире, чтобы исключить ресурс из результата.
глубина Целочисленное значение, указывающее глубину поиска ресурсов от каждого родителя.Первый уровень ресурсов ниже родительского — глубина 10
твФильтры Может использоваться для фильтрации ресурсов по определенным значениям TV. Они вводятся как [( tvname ) ( operator )] ( value ). Есть два разделителя, которые можно использовать для объединения условий фильтрации. Вы можете использовать фильтры «ИЛИ», используя два символа вертикальной черты. Фильтр ИЛИ выбирает ресурсы, которые имеют одно из перечисленных значений TV. Смотрите ниже для получения дополнительной информации.
Сортби Любое поле ресурса ( за исключением переменных шаблона.См. Ниже свойство «sortbyTV» ). Некоторые общие поля для сортировки — это publishon, menuindex, pagetitle и т. Д., Но для всех полей см. Документацию по ресурсам. Указывайте поля только с именем, без использования синтаксиса тега. Обратите внимание, что при использовании таких полей, как шаблон, опубликованный и подобные для сортировки, они будут отсортированы по необработанным значениям, то есть по шаблону или идентификатору пользователя, а НЕ по их именам. Смотрите ниже для получения дополнительной информации. создано на
опубликовано на Изменено в 1.3,0
sortbyAlias ​​ Псевдоним запроса для поля сортировки
Сортировка сбежавших Экранирует имя поля, указанное в sortby
sortdir Порядок сортировки по DESC
sortbyTV Переменная шаблона для сортировки по 1.2.0
sortdirTV Порядок сортировки при использовании sortbyTV DESC 1.2,0
sortbyTV Тип Укажите тип данных для сортировки ТВ. Возможные значения: строка, целое число, десятичное число, дата и время строка 1.3.0
предел Ограничивает количество возвращаемых ресурсов. Используйте 0 для получения неограниченных результатов. 5
смещение Смещение ресурсов, возвращенных критериями пропуска 0
где Выражение критериев в стиле JSON для создания дополнительных предложений where.См. Пример ниже. См. Display / xPDO20 / xPDOQuery. Где
контекст Разделенный запятыми список ключей контекста для ограничения результатов; если пусто, будут использоваться контексты для всех указанных родителей (все контексты, если указан 0)
Использование и tvFilters

Для и tvFilters значение может выглядеть так:

  mytv == somevalue || mytv == othervalue
  

Вы также можете использовать фильтр «и» через запятую.Это обеспечит выполнение всех условий.

  mytv == somevalue, othertv == othervalue
  

Для расширенной фильтрации вы также можете сгруппировать их. Важно знать, что сначала условия разделяются разделителем ИЛИ (||), а затем разделителем И (,). Итак, возьмем этот гипотетический пример:

  mytv == foo || mytv == bar, bartv == 3 || bartv == 1
  

Это отфильтрует ресурсы в соответствии с одним из следующих условий:

  • mytv — это LIKE foo или
  • mytv — это LIKE bar, а bartv — LIKE 3, или
  • bartv — это КАК 1

В приведенных выше примерах поиск точных значений.Вы также можете использовать знак процента (%) в качестве подстановочного знака. Например:

  mytv ==% a%
  

Соответствует любым ресурсам, у которых есть «a» в значении mytv.

  mytv == a%
  

Соответствует любым ресурсам, значение mytv которых начинается с «a».

  mytv ==% a
  

Соответствует любым ресурсам, значение mytv которых заканчивается на «a».

Вы также можете комбинировать это с разделителями ИЛИ (||) и И (,), описанными выше.

Важно знать, что эта функция смотрит на исходное значение переменной шаблона для конкретного ресурса. Это означает, что значение было явно установлено для ресурса , и что оно не было обработано типом вывода переменной шаблона ( или значение по умолчанию в выпусках до 1.4.2-pl; это Release добавляет поддержку фильтрации, которая включает значения по умолчанию ). Так что, если у вас есть телевизор с автоматическим тегом, это означает, что исходное значение представляет собой список, разделенный запятыми, и он не разбивается на теги, как вы видите в диспетчере.

Новые операторы фильтров доступны в 1.4.2-pl :

Начиная с версии 1.4.2-pl getResources, есть ряд новых операторов сравнения, которые можно использовать при создании условий фильтрации. Кроме того, при использовании многих из этих новых операторов числовые значения сравнения автоматически преобразуются в числовые значения перед сравнением.

Вот список действующих операторов:

Оператор фильтра Оператор SQL Числовые значения CAST Банкноты
<=> <=> Есть NULL сейф равен
=== = Есть
! ==! = Есть
<> <> Есть
== КАК
! = НЕ НРАВИТСЯ
<< < Есть
<= <= Есть
= < = < Есть
>>> Есть
> => = Есть
=> => Есть
Использование & sortby

В качестве значения сортировки можно передать любое поле ресурса, например pagetitle , alias , Publishon , menuindex и т. Д.

Вы можете отсортировать случайным образом, указав RAND (), например:

  & sortby = `RAND ()`
  

Начиная с версии 1.3.0, это также может быть массив JSON для сортировки по нескольким полям, например

  & sortby = `{" Publishedon ":" ASC "," createdon ":" DESC "}`
  

Для сортировки в определенном порядке укажите список идентификаторов ресурсов, например

  & sortby = `FIELD (modResource.id, 4,7,2,5,1)`
  

То же самое возможно, если вы поместите отсортированные идентификаторы в переменную шаблона, например:

  & sortby = `FIELD (modResource.id, [[* templateVariable]]) `
  

В некоторых случаях вам нужно (несколько парадоксально) также указать направление сортировки:

  & sortby = `FIELD (modResource.id, 4,7,2,5,1)` & sortdir = ʻASC`
  
Другая недвижимость

.

Имя Описание Значение по умолчанию Добавлено в версии
показатьНеопубликовано Если true, также будут отображаться ресурсы, если они не опубликованы. 0
показать Удален Если true, также будут отображаться ресурсы независимо от того, были ли они удалены. 0
показатьHidden Если true, ресурсы будут отображаться независимо от того, скрыты ли они из меню. 0
скрыть Контейнеры Если установлено, ресурсы, помеченные как контейнер (isfolder), отображаться не будут. 0
includeContent Указывает, следует ли возвращать содержимое каждого ресурса в результатах. 0
включают телевизоры Указывает, должны ли значения TemplateVar быть включены в свойства, доступные для каждого шаблона ресурса. 0
включитьTVList Необязательный разделенный запятыми список имен TemplateVar для явного включения, если includeTVs равно 1 1.4,0
готовит телевизор Подготавливает значения TemplateVar, зависящие от медиа-источника. 1 1.5.0
подготовитьTVList Ограничивает количество подготовленных телевизоров до тех, которые указаны по имени в списке, разделенном запятыми. 1.5.0
технологические телевизоры Указывает, должны ли значения TemplateVar отображаться так, как они были бы в суммируемом ресурсе. TemplateVars должны быть включены (см. IncludeTVs / includeTVList) для обработки. 0
процессTVList Необязательный список имен TemplateVar, разделенных запятыми, для явной обработки. Указанные здесь TemplateVars должны быть включены через includeTVs / includeTVList 1.4.0
tvPrefix Префикс для свойств TemplateVar телевизор.
idx Вы можете определить начальный idx ресурсов, который является свойством, которое увеличивается при отображении каждого ресурса. 1
первая Определите idx, который представляет первый ресурс 1
последняя Определите idx, который представляет последний ресурс.По умолчанию: # суммируемых ресурсов + первый — 1
всего Вар Определите ключ заполнителя, установленного getResources, указывающий общее количество ресурсов, которые будут выбраны , а не с учетом _limit_value. всего
отладка Если true, отправит запрос SQL в журнал MODX. ложь

Доступные заполнители

Заполнители, доступные для ваших блоков форматирования getResources, в основном зависят от ресурсов, которые вы повторяете.

См. Все теги на странице «Часто используемые теги шаблонов», на которой перечислены свойства, доступные для всех ресурсов.

Если у вашего ресурса есть переменные шаблона, они будут иметь соответствующие заполнители (помните, что заполнители будут использовать префикс, определенный параметром & tvPrefix ).

Дополнительно имеются следующие заполнители:

Заполнитель Описание
[[+ idx]] Увеличивается с каждой итерацией, начиная с 1 (или значения, установленного параметрами и idx )

Примеры

Также см. Подраздел «Примеры» этой документации для получения более подробных примеров и руководств.

Вывести список дочерних ресурсов текущего ресурса, используя блок myRowTpl:

  [[getResources? & родители = `[[* id]]` & tpl = `myRowTpl`]]
  

Вывести все ресурсы ниже ресурса с идентификатором ‘5’, за исключением ресурса 10, с помощью блока myRowTpl:

  [[getResources? & родители = `5` & resources =` -10` & tpl = `myRowTpl`]]
  

Вывести только указанные ресурсы, используя блок myRowTpl:

  [[getResources? & parent = `-1` & resources =` 10,11,12` & tpl = `myRowTpl`]]
  

Выведите 5 самых последних опубликованных ресурсов под ресурсом с идентификатором ‘5’ с tpl ‘blogPost’:

  [[getResources? & parent = `5` & limit =` 5` & tpl = `blogPost` & includeContent =` 1`]]
  

Вывести список дочерних ресурсов текущего ресурса, основанный на шаблоне ресурса:

  [[getResources? & parent = `[[* id]]` & where = `{" template: = ": 8}` & tpl = `myRowTpl`]]
  

Вывести список дочерних ресурсов текущего ресурса, где ID шаблона ресурса равен 1 или 2:

  [[getResources? & parent = `[[* id]]` & where = `{" template: = ": 1," OR: template: = ": 2}` & tpl = `myRowTpl`]]
  

Вывести список дочерних ресурсов текущего ресурса, где ID шаблона ресурса — 1, 2 или 3 (вы не можете использовать одно и то же имя ключа более одного раза):

  [[getResources? & parent = `[[* id]]` & where = `{" template: IN ": [1,2,3]}` & tpl = `myRowTpl`]]
  

Отображать сообщение, если результаты не найдены (эквивалент «пустого» параметра в Ditto):

  [[getResources: default = `Ничего не найдено`? & родители = `[[* id]]` & tpl = `myRowTpl`]]
  

Пример использования встроенного Tpl

  [[getResources? & tpl = `@ INLINE 
  • [[+ pagetitle]]
  • `]]

    Обертывание getResources приводит к другой разметке (например, к свойству & outerTpl, которого нет для getResources из версии 1.6.0, вы все еще можете сделать это так или использовать свойство & tplWrapper).

      [[getResources? ... & toPlaceholder = `results`]]
    [[+ results: notempty = `
      [[+ results]]
    `]]

    Отображение переменных шаблона с помощью getResources

    Чтобы сократить время получения, getResources по умолчанию не получает значения TV. Если вы хотите отображать телевизоры, вы должны включить следующие параметры:

      & includeTVs = `1` & processTVs =` 1`
      

    Вам также необходимо поставить перед всеми телевизорами префикс tv.или используйте этот параметр в своем теге сниппета:

      & tvPrefix = ``
      

    В блоке Tpl, который вы используете для отображения вывода getResources, используйте тег-заполнитель, подобный этому (но с именем вашего телевизора):

      [[+ tv.my_tv]]
      

    Использование getPage для разбивки на страницы

    В сочетании с getPage (или pdoPage) getResources позволяет выполнять мощную и гибкую разбивку на страницы на ваших страницах.

    Примеры

    Получите первые 10 ресурсов — отсортированных по опубликованным — под идентификатором ресурса 17, не более чем на 2 уровня в глубину, с tpl ‘blogListPost’, включая телевизоры и контент:

      [[! GetPage?
        & elementClass = `modSnippet`
        & element = `getResources`
        & родители = `17`
        & depth = `2`
        & limit = `10`
        & pageVarKey = `страница`
        & includeTVs = `1`
        & includeContent = `1`
        & tpl = `blogListPost`
    ]]
    
      [! + страница.nav]]

    и чанк blogListPost:

      
    [[+ опубликовано: strtotime: date = `% b% d% Y`]]

    [[+ pagetitle]]

    Автор: [[+ createdby: userinfo = ʻusername`]]

    [[+ интротекст]]

    <час />

    Поиск и устранение неисправностей

    Ничего не происходит

    Перед тем, как удариться головой об стену, проверили ли вы, действительно ли это дополнение установлено на вашем сайте?

    Массив атрибутов сброшен

    Вы забыли включить параметр & tpl .Без параметра & tpl сниппет будет извлекать указанные ресурсы, но вы не сказали ему, как их форматировать. Убедитесь, что вы включили параметр & tpl в вызов сниппета, например

      [[! GetResources? & parent = `5` & limit =` 5` & tpl = `blogPost`]]
      

    Или, возможно, вы неправильно написали имя блока. Возможно, у вас ДЕЙСТВИТЕЛЬНО указаны и tpl , но существует ли этот кусок на самом деле? Если вы назовете несуществующий кусок, getResources не будет знать, как отформатировать ваши результаты.

    Или, даже если вы правильно указали параметр & tpl , вы могли случайно забыть амперсанд на одном из ваших _других_параметров. Например.

      limit = `5`
      

    вызовет сбой вызова сниппета и сброс атрибутов. Правильный формат должен быть

      & limit = `5`
      

    Один и тот же ресурс выводится несколько раз (1.2.2 и предыдущие версии)

    Если вы видите один и тот же ресурс в списке несколько раз, попробуйте пропустить параметр & sortbyTV .

    Контента нет

    Вы извлекаете правильные ресурсы и видите, что некоторые_ результаты отформатированы правильно, но заполнители [[+ content]] ничего не содержат. Что происходит? Вы должны включить аргумент & includeContent = 1 , чтобы получить содержимое.

    Проблемы с кешированием с использованием tpl, tpl_N, tpl_nN, tplFirst, tplLast или tplOdd

    Если вы используете эти параметры, возможно, вы думали о повторном использовании фрагмента tpl, чтобы избежать повторения кода.Например:

    Общий фрагмент Tpl: [[$ GenericTplChunk]]

      
    Привет [[+ pagetitle]]

    Четвертый блок Tpl (tpl_nN): [[$ 4thTplChunk]]

      
    [[$ GenericTplChunk]]

    Если у вас возникли проблемы с пустыми или странными результатами, это связано с кешированием MODX. Вызов некэшированного фрагмента не сработает. Вы должны использовать трюк: фиктивный тег при вызове универсального блока.

      
    [[$ GenericTplChunk? & idx = `[[+ idx]]`]]

    Примечание: фрагмент не кэшируется.

    См. По ссылке: http://forums.modx.com/thread/43748/chunk-inside-getresources-template-not-processed-correctly

    См. Также

    Если вам нужно получить только одно поле из внешнего ресурса, попробуйте использовать getResourceField.

    .

    getResources — Дополнения MODX | Документы MODX

    Что такое getResources?

    Фрагмент списка ресурсов и резюмирования общего назначения.

    Требования

    • MODX Revolution 2.0.0-beta5 или новее
    • PHP5 или выше

    История

    getResources был впервые написан Джейсоном Кауардом (opengeek) и выпущен 30 июня 2009 года.

    Скачать

    Его можно загрузить из менеджера MODX Revolution через Управление пакетами или из репозитория MODX Extras здесь: https: // modx.com / extras / package / getresources

    Это НЕ замена Ditto, а скорее альтернативный компонент, который может выполнять некоторые из вещей, которые делают более специализированные компоненты, например, Ditto, Wayfinder, Breadcrumbs; в основном все, что выводит свойства для списка ресурсов (ранее документы в MODX Evolution).

    Документацию и руководства по русскому языку можно найти здесь: http://modx.by/docs/modx-add-ons/getresources/

    Использование

    Фрагмент getResources можно вызвать с помощью тега:

      [[getResources]]
      

    До версии 1.6.1-pl, вызовы без указанного свойства & tpl будут выводить массив каждого ресурса в наборе результатов и его полей. Начиная с версии 1.6.1-pl это поведение изменилось, и вам придется использовать «& debug = 1 », чтобы получить полный результат:

      [[getResources? & debug = `1`]]
    [[getResources? & parent = `choose_an_id` & debug =` 1`]]
      

    Доступные объекты

    Свойства шаблона

    .

    Имя Описание Значение по умолчанию Добавлено в версии
    тпл Имя фрагмента, служащего шаблоном ресурса.Если не указан, свойства выводятся для каждого ресурса
    tplOdd Имя блока, служащего шаблоном ресурса для ресурсов с нечетным значением idx (см. Свойство idx)
    тпл Первый Имя фрагмента, служащего шаблоном ресурса для первого ресурса
    tpl Последний Имя блока, служащего шаблоном ресурса для последнего ресурса
    tpl_N Имя блока, служащего шаблоном ресурса для N-го ресурса, например & tpl_4 = tpl4th
    тпл_нН Имя блока, служащего шаблоном ресурса для каждого N-го ресурса, например, & tpl_n4 = tpl4th будет применяться к любому элементу, кратному 4 1.4,1
    tpl Состояние Определяет поле ресурса для сравнения с ключами, определенными в свойстве & conditionalTpls. Должно быть поле ресурса; не работает с шаблонными переменными. 1.5.0
    условныйTpls Объект JSON, определяющий карту значений полей и связанных фрагментов tpl для использования, когда поле, определенное & tplCondition, соответствует значению : & conditionalTpls = {"1": "tplA", "2": "tplB", " 3 ":" tplC "} [ПРИМЕЧАНИЕ: tplOdd, tplFirst, tplLast, * и tpl_ {n} будут иметь приоритет над любыми заданными условными Tpls] 1.5,0
    tplPath Необязательный каталог для поиска фрагментов на основе файлов при использовании @FILE assets_path + «elements / chunks /»
    tplWrapper Имя фрагмента, служащего шаблоном оболочки для вывода [ПРИМЕЧАНИЕ. Не работает с toSeparatePlaceholder]. Заполнитель, куда вставляются элементы, — [[+ output]] . 1.6.0
    wrapIfEmpty Если true, будет выводить оболочку, указанную в & tplWrapper, даже если вывод пуст. ложь 1.6.0
    выходной сепаратор Необязательная строка для разделения каждого экземпляра tpl (разделитель) «\ n»
    к заполнителю Если установлено, результат будет назначен этому заполнителю вместо того, чтобы выводить его напрямую.
    для отдельных держателей Если установлено, КАЖДЫЙ результат будет назначен отдельному заполнителю, названному этим параметром, с суффиксом с порядковым номером (начиная с 0). 1.3.0

    Около @FILE и @INLINE tpls :

    Вы можете префикс любого свойства tpl с помощью @FILE или @INLINE, чтобы использовать фрагмент на основе файла или встроенную разметку соответственно.

    • @FILE — этот префикс позволяет вам предоставить файл вместо чанка в базе данных в качестве tpl. Указанные вами путь и имя файла по умолчанию, если вы не укажете настраиваемое свойство tplPath , будут искать @FILE tpl относительно настроенного вами assets_path + elements / chunks / .
    • @INLINE — этот префикс позволяет указать разметку для использования в tpl непосредственно в значении свойства. Рекомендуется использовать это только при указании свойств tpl * в [Набор свойств], в противном случае любые заполнители в вашей встроенной разметке могут быть оценены до того, как содержимое будет передано в getResources, поскольку кешируемые вложенные теги в MODX Revolution оцениваются перед обработкой содержащий тег начинается. После этого должен быть пробел, например @INLINE [[+ pagetitle]]
    Свойства выбора

    .

    Имя Описание Значение по умолчанию Добавлено в версии
    родители Разделенный запятыми список идентификаторов, выступающих в качестве родительских.Используйте -1, чтобы игнорировать родителей при указании _resources_to include. Если этого не сделать, getResources принимает & parent в качестве текущего ресурса и считывает оттуда своих потомков (плюс ресурсы, указанные в & resources = неожиданные результаты). текущий идентификатор ресурса
    ресурсов Разделенный запятыми список идентификаторов для включения в результаты. Префикс идентификатора с тире, чтобы исключить ресурс из результата.
    глубина Целочисленное значение, указывающее глубину поиска ресурсов от каждого родителя.Первый уровень ресурсов ниже родительского — глубина 10
    твФильтры Может использоваться для фильтрации ресурсов по определенным значениям TV. Они вводятся как [( tvname ) ( operator )] ( value ). Есть два разделителя, которые можно использовать для объединения условий фильтрации. Вы можете использовать фильтры «ИЛИ», используя два символа вертикальной черты. Фильтр ИЛИ выбирает ресурсы, которые имеют одно из перечисленных значений TV. Смотрите ниже для получения дополнительной информации.
    Сортировка Любое поле ресурса ( за исключением переменных шаблона.См. Ниже свойство «sortbyTV» ). Некоторые общие поля для сортировки — это publishon, menuindex, pagetitle и т. Д., Но для всех полей см. Документацию по ресурсам. Указывайте поля только с именем, без использования синтаксиса тега. Обратите внимание, что при использовании таких полей, как шаблон, опубликованный и подобные для сортировки, они будут отсортированы по необработанным значениям, то есть по шаблону или идентификатору пользователя, а НЕ по их именам. Смотрите ниже для получения дополнительной информации. создано на
    опубликовано на Изменено в 1.3,0
    sortbyAlias ​​ Псевдоним запроса для поля сортировки
    Сортировка сбежавших Экранирует имя поля, указанное в sortby
    sortdir Порядок сортировки по DESC
    sortbyTV Переменная шаблона для сортировки по 1.2.0
    sortdirTV Порядок сортировки при использовании sortbyTV DESC 1.2,0
    sortbyTV Тип Укажите тип данных для сортировки ТВ. Возможные значения: строка, целое число, десятичное число, дата и время строка 1.3.0
    предел Ограничивает количество возвращаемых ресурсов. Используйте 0 для получения неограниченных результатов. 5
    смещение Смещение ресурсов, возвращенных критериями пропуска 0
    где Выражение критериев в стиле JSON для создания дополнительных предложений where.См. Пример ниже. См. Display / xPDO20 / xPDOQuery. Где
    контекст Разделенный запятыми список ключей контекста для ограничения результатов; если пусто, будут использоваться контексты для всех указанных родителей (все контексты, если указан 0)
    Использование и tvFilters

    Для и tvFilters значение может выглядеть так:

      mytv == somevalue || mytv == othervalue
      

    Вы также можете использовать фильтр «и» через запятую.Это обеспечит выполнение всех условий.

      mytv == somevalue, othertv == othervalue
      

    Для расширенной фильтрации вы также можете сгруппировать их. Важно знать, что сначала условия разделяются разделителем ИЛИ (||), а затем разделителем И (,). Итак, возьмем этот гипотетический пример:

      mytv == foo || mytv == bar, bartv == 3 || bartv == 1
      

    Это отфильтрует ресурсы в соответствии с одним из следующих условий:

    • mytv — это LIKE foo или
    • mytv — это LIKE bar, а bartv — LIKE 3, или
    • bartv — это КАК 1

    В приведенных выше примерах поиск точных значений.Вы также можете использовать знак процента (%) в качестве подстановочного знака. Например:

      mytv ==% a%
      

    Соответствует любым ресурсам, у которых есть «a» в значении mytv.

      mytv == a%
      

    Соответствует любым ресурсам, значение mytv которых начинается с «a».

      mytv ==% a
      

    Соответствует любым ресурсам, значение mytv которых заканчивается на «a».

    Вы также можете комбинировать это с разделителями ИЛИ (||) и И (,), описанными выше.

    Важно знать, что эта функция смотрит на исходное значение переменной шаблона для конкретного ресурса. Это означает, что значение было явно установлено для ресурса , и что оно не было обработано типом вывода переменной шаблона ( или значение по умолчанию в выпусках до 1.4.2-pl; это Release добавляет поддержку фильтрации, которая включает значения по умолчанию ). Так что, если у вас есть телевизор с автоматическим тегом, это означает, что исходное значение представляет собой список, разделенный запятыми, и он не разбивается на теги, как вы видите в диспетчере.

    Новые операторы фильтров доступны в 1.4.2-pl :

    Начиная с версии 1.4.2-pl getResources, есть ряд новых операторов сравнения, которые можно использовать при создании условий фильтрации. Кроме того, при использовании многих из этих новых операторов числовые значения сравнения автоматически преобразуются в числовые значения перед сравнением.

    Вот список действующих операторов:

    Оператор фильтра Оператор SQL Числовые значения CAST Банкноты
    <=> <=> Есть NULL сейф равен
    === = Есть
    ! ==! = Есть
    <> <> Есть
    == КАК
    ! = НЕ НРАВИТСЯ
    << < Есть
    <= <= Есть
    = < = < Есть
    >>> Есть
    > => = Есть
    => => Есть
    Использование & sortby

    В качестве значения сортировки можно передать любое поле ресурса, например pagetitle , alias , Publishon , menuindex и т. Д.

    Вы можете отсортировать случайным образом, указав RAND (), например:

      & sortby = `RAND ()`
      

    Начиная с версии 1.3.0, это также может быть массив JSON для сортировки по нескольким полям, например

      & sortby = `{" Publishedon ":" ASC "," createdon ":" DESC "}`
      

    Для сортировки в определенном порядке укажите список идентификаторов ресурсов, например

      & sortby = `FIELD (modResource.id, 4,7,2,5,1)`
      

    То же самое возможно, если вы поместите отсортированные идентификаторы в переменную шаблона, например:

      & sortby = `FIELD (modResource.id, [[* templateVariable]]) `
      

    В некоторых случаях вам нужно (несколько парадоксально) также указать направление сортировки:

      & sortby = `FIELD (modResource.id, 4,7,2,5,1)` & sortdir = ʻASC`
      
    Другая недвижимость

    .

    Имя Описание Значение по умолчанию Добавлено в версии
    показатьНеопубликовано Если true, также будут отображаться ресурсы, если они не опубликованы. 0
    показать Удален Если true, также будут отображаться ресурсы независимо от того, были ли они удалены. 0
    показатьHidden Если true, ресурсы будут отображаться независимо от того, скрыты ли они из меню. 0
    скрыть Контейнеры Если установлено, ресурсы, помеченные как контейнер (isfolder), отображаться не будут. 0
    includeContent Указывает, следует ли возвращать содержимое каждого ресурса в результатах. 0
    включают телевизоры Указывает, должны ли значения TemplateVar быть включены в свойства, доступные для каждого шаблона ресурса. 0
    включитьTVList Необязательный разделенный запятыми список имен TemplateVar для явного включения, если includeTVs равно 1 1.4,0
    готовит телевизор Подготавливает значения TemplateVar, зависящие от медиа-источника. 1 1.5.0
    подготовитьTVList Ограничивает количество подготовленных телевизоров до тех, которые указаны по имени в списке, разделенном запятыми. 1.5.0
    технологические телевизоры Указывает, должны ли значения TemplateVar отображаться так, как они были бы в суммируемом ресурсе. TemplateVars должны быть включены (см. IncludeTVs / includeTVList) для обработки. 0
    процессTVList Необязательный список имен TemplateVar, разделенных запятыми, для явной обработки. Указанные здесь TemplateVars должны быть включены через includeTVs / includeTVList 1.4.0
    tvPrefix Префикс для свойств TemplateVar телевизор.
    idx Вы можете определить начальный idx ресурсов, который является свойством, которое увеличивается при отображении каждого ресурса. 1
    первая Определите idx, который представляет первый ресурс 1
    последняя Определите idx, который представляет последний ресурс.По умолчанию: # суммируемых ресурсов + первый — 1
    всего Вар Определите ключ заполнителя, установленного getResources, указывающий общее количество ресурсов, которые будут выбраны , а не с учетом _limit_value. всего
    отладка Если true, отправит запрос SQL в журнал MODX. ложь

    Доступные заполнители

    Заполнители, доступные для ваших блоков форматирования getResources, в основном зависят от ресурсов, которые вы повторяете.

    См. Все теги на странице «Часто используемые теги шаблонов», на которой перечислены свойства, доступные для всех ресурсов.

    Если у вашего ресурса есть переменные шаблона, они будут иметь соответствующие заполнители (помните, что заполнители будут использовать префикс, определенный параметром & tvPrefix ).

    Дополнительно имеются следующие заполнители:

    Заполнитель Описание
    [[+ idx]] Увеличивается с каждой итерацией, начиная с 1 (или значения, установленного параметрами и idx )

    Примеры

    Также см. Подраздел «Примеры» этой документации для получения более подробных примеров и руководств.

    Вывести список дочерних ресурсов текущего ресурса, используя блок myRowTpl:

      [[getResources? & родители = `[[* id]]` & tpl = `myRowTpl`]]
      

    Вывести все ресурсы ниже ресурса с идентификатором ‘5’, за исключением ресурса 10, с помощью блока myRowTpl:

      [[getResources? & родители = `5` & resources =` -10` & tpl = `myRowTpl`]]
      

    Вывести только указанные ресурсы, используя блок myRowTpl:

      [[getResources? & parent = `-1` & resources =` 10,11,12` & tpl = `myRowTpl`]]
      

    Выведите 5 самых последних опубликованных ресурсов под ресурсом с идентификатором ‘5’ с tpl ‘blogPost’:

      [[getResources? & parent = `5` & limit =` 5` & tpl = `blogPost` & includeContent =` 1`]]
      

    Вывести список дочерних ресурсов текущего ресурса, основанный на шаблоне ресурса:

      [[getResources? & parent = `[[* id]]` & where = `{" template: = ": 8}` & tpl = `myRowTpl`]]
      

    Вывести список дочерних ресурсов текущего ресурса, где ID шаблона ресурса равен 1 или 2:

      [[getResources? & parent = `[[* id]]` & where = `{" template: = ": 1," OR: template: = ": 2}` & tpl = `myRowTpl`]]
      

    Вывести список дочерних ресурсов текущего ресурса, где ID шаблона ресурса — 1, 2 или 3 (вы не можете использовать одно и то же имя ключа более одного раза):

      [[getResources? & parent = `[[* id]]` & where = `{" template: IN ": [1,2,3]}` & tpl = `myRowTpl`]]
      

    Отображать сообщение, если результаты не найдены (эквивалент «пустого» параметра в Ditto):

      [[getResources: default = `Ничего не найдено`? & родители = `[[* id]]` & tpl = `myRowTpl`]]
      

    Пример использования встроенного Tpl

      [[getResources? & tpl = `@ INLINE 
  • [[+ pagetitle]]
  • `]]

    Обертывание getResources приводит к другой разметке (например, к свойству & outerTpl, которого нет для getResources из версии 1.6.0, вы все еще можете сделать это так или использовать свойство & tplWrapper).

      [[getResources? ... & toPlaceholder = `results`]]
    [[+ results: notempty = `
      [[+ results]]
    `]]

    Отображение переменных шаблона с помощью getResources

    Чтобы сократить время получения, getResources по умолчанию не получает значения TV. Если вы хотите отображать телевизоры, вы должны включить следующие параметры:

      & includeTVs = `1` & processTVs =` 1`
      

    Вам также необходимо поставить перед всеми телевизорами префикс tv.или используйте этот параметр в своем теге сниппета:

      & tvPrefix = ``
      

    В блоке Tpl, который вы используете для отображения вывода getResources, используйте тег-заполнитель, подобный этому (но с именем вашего телевизора):

      [[+ tv.my_tv]]
      

    Использование getPage для разбивки на страницы

    В сочетании с getPage (или pdoPage) getResources позволяет выполнять мощную и гибкую разбивку на страницы на ваших страницах.

    Примеры

    Получите первые 10 ресурсов — отсортированных по опубликованным — под идентификатором ресурса 17, не более чем на 2 уровня в глубину, с tpl ‘blogListPost’, включая телевизоры и контент:

      [[! GetPage?
        & elementClass = `modSnippet`
        & element = `getResources`
        & родители = `17`
        & depth = `2`
        & limit = `10`
        & pageVarKey = `страница`
        & includeTVs = `1`
        & includeContent = `1`
        & tpl = `blogListPost`
    ]]
    
      [! + страница.nav]]

    и чанк blogListPost:

      
    [[+ опубликовано: strtotime: date = `% b% d% Y`]]

    [[+ pagetitle]]

    Автор: [[+ createdby: userinfo = ʻusername`]]

    [[+ интротекст]]

    <час />

    Поиск и устранение неисправностей

    Ничего не происходит

    Перед тем, как удариться головой об стену, проверили ли вы, действительно ли это дополнение установлено на вашем сайте?

    Массив атрибутов сброшен

    Вы забыли включить параметр & tpl .Без параметра & tpl сниппет будет извлекать указанные ресурсы, но вы не сказали ему, как их форматировать. Убедитесь, что вы включили параметр & tpl в вызов сниппета, например

      [[! GetResources? & parent = `5` & limit =` 5` & tpl = `blogPost`]]
      

    Или, возможно, вы неправильно написали имя блока. Возможно, у вас ДЕЙСТВИТЕЛЬНО указаны и tpl , но существует ли этот кусок на самом деле? Если вы назовете несуществующий кусок, getResources не будет знать, как отформатировать ваши результаты.

    Или, даже если вы правильно указали параметр & tpl , вы могли случайно забыть амперсанд на одном из ваших _других_параметров. Например.

      limit = `5`
      

    вызовет сбой вызова сниппета и сброс атрибутов. Правильный формат должен быть

      & limit = `5`
      

    Один и тот же ресурс выводится несколько раз (1.2.2 и предыдущие версии)

    Если вы видите один и тот же ресурс в списке несколько раз, попробуйте пропустить параметр & sortbyTV .

    Контента нет

    Вы извлекаете правильные ресурсы и видите, что некоторые_ результаты отформатированы правильно, но заполнители [[+ content]] ничего не содержат. Что происходит? Вы должны включить аргумент & includeContent = 1 , чтобы получить содержимое.

    Проблемы с кешированием с использованием tpl, tpl_N, tpl_nN, tplFirst, tplLast или tplOdd

    Если вы используете эти параметры, возможно, вы думали о повторном использовании фрагмента tpl, чтобы избежать повторения кода.Например:

    Общий фрагмент Tpl: [[$ GenericTplChunk]]

      
    Привет [[+ pagetitle]]

    Четвертый блок Tpl (tpl_nN): [[$ 4thTplChunk]]

      
    [[$ GenericTplChunk]]

    Если у вас возникли проблемы с пустыми или странными результатами, это связано с кешированием MODX. Вызов некэшированного фрагмента не сработает. Вы должны использовать трюк: фиктивный тег при вызове универсального блока.

      
    [[$ GenericTplChunk? & idx = `[[+ idx]]`]]

    Примечание: фрагмент не кэшируется.

    См. По ссылке: http://forums.modx.com/thread/43748/chunk-inside-getresources-template-not-processed-correctly

    См. Также

    Если вам нужно получить только одно поле из внешнего ресурса, попробуйте использовать getResourceField.

    .

    статических ресурсов — ресурсы | Документы MODX

    Что такое статический ресурс?

    Статический ресурс — это абстракция ресурса фактического файла в файловой системе. Вы можете думать об абстракции как о виртуальном представлении любого файла на вашем веб-сервере. Как и другие ресурсы MODX, эта абстракция может иметь связанные с ней разрешения, и она отображается в диспетчере MODX в дереве ресурсов, что позволяет отображать ее в динамических меню и результатах поиска.Статический ресурс MODX может представлять любой файл на вашем веб-сервере (если есть разрешения).

    Статические ресурсы

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

    Они ведут себя точно так же, как документ (стандартный ресурс). Содержимое статического ресурса анализируется и отображается точно так же, как и документ, но часто вы изменяете тип содержимого и расположение содержимого в соответствии с типом файла, который вы представляете.

    О псевдонимах

    При создании статического ресурса псевдоним не должен включать расширение файла: расширение файла определяется типом содержимого. Например, если вы создаете статический ресурс, который указывает на файл PDF на вашем веб-сервере, вы можете присвоить странице псевдоним «test». После того, как вы выберете «PDF» в качестве типа содержимого, к псевдониму будет добавлено расширение «.pdf» (при условии, что вы определили тип содержимого PDF, используя «.pdf» в качестве расширения файла). Если вы создали настраиваемый тип содержимого для PDF, вам не нужно устанавливать для поля размещения содержимого значение «вложение».Его можно оставить встроенным, так как современные браузеры могут согласовывать PDF-файлы, а затем также могут выбирать свой собственный предпочтительный способ обработки PDF-файлов — например, Chrome отобразит PDF-файл в браузере, тогда как другие могут загрузить файл.

    Чтобы обеспечить правильную передачу файла, следует использовать (пустой) шаблон. Статический ресурс становится ссылкой на файл, пока вы используете этот шаблон. Если вам нужно добавить некоторую метаинформацию к ресурсу через некоторые переменные шаблона, и вы создаете свой собственный «пустой» шаблон, чтобы включить это, то вы должны установить для содержимого шаблона значение [[* content]] , прежде чем он будет работать правильно.

    См. Также

    1. Типы контента
    2. Именованный якорь
    3. Статический ресурс
    4. Символическая ссылка

      1. Использование символических ссылок ресурсов
    5. Интернет-ссылка

    .

    пользовательских классов ресурсов — ресурсы

    Пользовательские классы ресурсов доступны только в MODX 2.2 и новее.

    Что такое специальный класс ресурсов?

    Настраиваемый класс ресурсов (CRC) — это класс PHP, который расширяет класс modResource, позволяя настраивать типы ресурсов, которые могут представлять различные типы данных или приложений. Ядро MODX использует четыре различных типа классов ресурсов: документы, WebLinks, SymLinks и статические ресурсы. Другими типами CRC могут быть тип блога, тип форума, тип альбома галереи, тип RSS-канала и т. Д. — в основном любой тип контента, для которого вам нужен URL-адрес (помните, что «R» в URL-адресе означает Resource ).

    CRC создаются путем расширения класса modResource в PHP и загрузки нового класса в систему MODX через пакеты расширения. Они хранят свои данные в той же таблице, что и обычные ресурсы (в modx_site_content , но они будут использовать настраиваемое значение для столбца class_key), но они могут вести себя по-другому и иметь настраиваемый интерфейс управления.

    Когда использовать

    CRC полезны для создания «встроенных приложений» в MODX, таких как тип сообщения в блоге (например, modBlog), который позволяет вам разместить блог на вашем уже существующем сайте MODX.Вы можете использовать их, когда у вас достаточно опыта разработчика, вы хорошо знакомы с объектно-ориентированным кодом и понимаете, как ваше приложение может вписаться в таблицу содержимого MODX вместе с другими ресурсами.

    Когда не использовать

    CRC

    не рекомендуется использовать, если вы просто хотите добавить несколько дополнительных полей к ресурсу или изменить представление ресурса во внешнем интерфейсе. В таких ситуациях лучше всего справляться с помощью шаблонов и переменных шаблона.Не используйте CRC, если вы не являетесь сильным разработчиком или если ваши дополнения не нужно обрабатывать и отображать через встроенные списки ресурсов MODX.

    Также помните, что CRC нельзя переопределить: вы не можете расширить CRC.

    «Практическое правило»
    Если это легче сделать с помощью фрагментов кода или переменных шаблона, то, вероятно, лучше сделать это таким образом: CRC разработать намного сложнее.

    Использование

    CRC выглядят как обычные ресурсы в дереве.Класс CRC также может подключаться к контекстным меню в дереве ресурсов, чтобы добавить параметры для создания типа CRC, такие как «Создать блог здесь» и т. Д. Они могут использовать панели редактирования ресурсов по умолчанию или могут предоставить полностью отдельного пользователя. интерфейс для управления их контентом. Некоторые CRC могут даже иметь другие подклассы (например, modBlogPost при использовании CRC modBlog), которые полностью скрыты от основного дерева ресурсов. Это полезно при работе с большим количеством ресурсов, которые плохо масштабируются в пользовательском интерфейсе дерева.

    Контроллеры, процессоры и основные функции визуализации

    CRC могут быть расширены или переопределены. Вы можете, например, автоматически добавлять текст к выводу любого содержимого CRC, переопределив метод process () или getContent () CRC в классе PHP. Любой метод в классе modResource доступен для переопределения при использовании CRC.

    Создание CRC

    Следуйте инструкциям по созданию класса ресурсов.

    .

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

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