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

Сниппет предназначен для вывода списка ресурсов. Является продвинутой заменой для 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Направление сортировки: по убыванию или возрастанию.
&limit10Ограничение количества результатов выборки. Можно использовать «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.

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

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













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

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

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














НазваниеПо умолчаниюОписание
&fastMode0Быстрый режим обработки чанков. Все необработанные теги (условия, сниппеты и т.п.) будут вырезаны.
&idx Вы можете указать стартовый номер итерации вывода результатов.
&totalVartotalИмя плейсхолдера для сохранения общего количества результатов.
&includeContent0Включаем поле «content» в выборку.
&includeTVs Список ТВ параметров для выборки, через запятую. Например: «action,time» дадут плейсхолдеры и .
&prepareTVs«1», что означает подготовку всех ТВ, указанных в &includeTVsСписок ТВ параметров, которые нужно подготовить перед выводом.
&processTVs Список ТВ параметров, которые нужно обработать перед выводом. Если установить в «1», будут обработаны все ТВ, указанные в &includeTVs.
&tvPrefixtv.Префикс для ТВ параметров.
&useWeblinkUrl Генерировать ссылку с учетом класса ресурса, включает плейсхолдер .
&toPlaceholder Если не пусто, сниппет сохранит все данные в плейсхолдер с этим именем, вместо вывода не экран.
&toSeparatePlaceholders Если вы укажете слово в этом параметре, то ВСЕ результаты будут выставлены в разные плейсхолдеры, начинающиеся с этого слова и заканчивающиеся порядковым номером строки, от нуля. Например, указав в параметре «myPl», вы получите плейсхолдеры , и т.д.
&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.

Голосов: 615 | Просмотров: 10709

Вывод списка ресурсов на сайте с использованием 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.

Замена getResources на pdoResources в MODX Revolution

Вчера решил попробовать заменить на сайте вывода ресурсов с «getResources» на «pdoResources». Результат превзошел все ожидания. Время загрузки кешируемой главной страницы уменьшилось с 1.1 сек до 0.76 сек.


Переход занимает менее 10 минут. Достаточно установить из репозитория пакет pdoTools (про пакет «pdoTools» и остальные его сниппеты я написал отдельную статью — pdoTools в MODX Revoluton — замена стандартных сниппетов) и сделать несколько правок.


Меняем название getResources на pdoResources


Само собой разумеющийся пункт и здесь хотелось бы лишь отметить, что если для вывода ресурсов у вас используется постраничная навигация («getPages»), то это никак не помешает переходу. Точно так же применяйте вместо элемента вывода getResources — pdoResources. Различие в параметрах будет лишь одно. О нем ниже.


Включение TV параметров в вывод


В «getResources» указывается значение 1 если требуется включать TV параметры в результат вывода и 0, если не требуется:



&includeTVs=`1`


В «pdoResources» необходимо указывать имена TV параметров через запятую:



&includeTVs=`img-news,tags`


Вывод даты публикации ресурса


В getResources:



Опубликовано: [[+publishedon:strtotime:date=`%d %b %Yг. в %H:%M`]]


В pdoResources убираем промежуточную функцию «strtotime»:



Опубликовано: [[+publishedon:date=`%d %b %Yг. в %H:%M`]]



Замена «getResourcesTag»


Вместе с «getResources» идет сниппет «getResourcesTag», который выводит ресурсы по тегу. «pdoResources» может заменить и его. Я реализовал замену включением в «pdoResources» следующего параметра:



&where=`{"tags:LIKE":"%[[!getUrlParam? &name=`tag`]]%"}`


Он указывает на то, что требуется вывести только те статьи, у которых в TV-поле «tags» встречается слово, передаваемое в адресной строке в параметре «tag».


Для получения этого параметра я использую snippet «getUrlParam». Устанавливается он из репозитория как обычный пакет. Он предназначен для вывода значения переменной, передаваемой в адресной строке методом GET.


Параметр «conditionalTpls»


Этот пункт здесь лишний, так как данный параметр есть как у первого сниппета, так и у второго. Однако, узнал я о его существовании только когда начал разбираться c «pdoResources».


  • &conditionalTpls — параметр применяется в сниппетах pdoResources/getResources при необходимости осуществить вывод отдельных ресурсов в «свои» чанки:

    
    [[!pdoResources? 
        &parents=`2` 
        &tpl=`chunk1` 
        &tplCondition=`pagetitle` 
        &tplOperator=`==` 
        &conditionalTpls=`{"Статья 2":"chunk2", "Статья 5":"chunk3"}` 
    ]]
    



  • &tplCondition — Поле ресурса, из которого будет получено значение для выбора чанка по условию в «conditionalTpls». Например: pagetitle или alias.


  • &tplOperator — оператор сравнения, возможный список: ==, !=, , =, empty, !empty, isnull

  • &conditionalTpls — строка с массивом, в котором указано то, с чем будет сравниваться «tplCondition», а в значениях — чанки, которые будут использованы для вывода, если сравнение будет успешным.

pdoResources как замена getResources / Сниппеты / Modx Revolution / Технический блог веб-разработчика

Ближайший аналог этих сниппетов в Evo — это Ditto. Используются для вывода дочерних ресурсов текущего документа, но можно указать и определённого родителя. Как пример, такое можно встретить в блоге — когда выводятся все записи определённой категории. pdoResources гораздо функциональнее и шустрее getResources, поэтому я его больше рекомендую к использованию. Различия в использовании параметров данных снипетов минимальны, поэтому переход на pdoResources будет безболезненным. Там же, где всё-таки есть небольшие нюансы, об этом будет написано отдельно. 

Основные параметры












getResources (значение по умолчанию)pdoResources (значение по умолчанию)Применение

&parents=`[[*id]]`

&parents=`[[*id]]`

Список родителей, из которых будут выводиться дочерние ресурсы (указываются через запятую). Если перед именем ресурса поставить дефис, то такой ресурс будет исключаться из выборки.  

&resources

&resourcesСписок ресурсов для вывода. При указании дефиса, ресурс исключается из выборки. 

&depth=`10`

&depth=`10`Глубина выборки от родителя. 

&tvFilters

&tvFilters

Фильтрация ресурсов по значениям TV.
В качестве разделителя AND используется «,»
В качестве разделителя OR используется «||»

Примеры вызова: 
&tvFilters=`color==red||color==yellow` — TV может принимать одно из двух значений, 
&tvFilters=`color==red,size==small` — одно из значений TV равно red, другое равно small,
&tvFilters=`color==red||color==yellow,size==small||size=big` — комбинируем перечисленные выше два варианта, что так же допускается. 

Фильтрация для поиска использует оператор LIKE, поэтому можно писать так: 
&tvFilters=`mytv==А%` — название TV начинается на А. 

pdoResources. Можно использовать кастомные разделители значений. Задаются в параметрах tvFiltersOrDelimiter=`||`tvFiltersAndDelimiter=`,`— разделители для «ИЛИ» и «И» соответственно. 
  

&sortby=`createdon`

&sortby=`pagetitle`

Поле ресурса, по которому будет происходить сортировка.
Сортировка в случайном порядке:
&sortby=`RAND()`
Так же, можно указывать JSON массив сразу из нескольких полей:
&sortby=`{«pagetitle»:»ASC»,»menuindex»:»DESC»}`

pdoResources. Eсли в параметрах свойства includeTVs перечислены значения TV, то возможна сортировка и по ним.  

getResources. Для сортировки по TV параметрам и задания направления используются параметры sortbyTV и sortdirTV соответственно. 

&sortdir=`DESC`

&sortdir=`DESC`

Направление для сортировки. 

&limit=`5`

&limit=`10`

Ограничение по количеству результатов.

&offset=`0`

&offset=`0`

Пропуск результатов от начала. 

&where

&where

Ограничение выборки по тем или иным параметрам. Представляет собой строку, закодированную в JSON.

&context

&context

Ограничение выборки по контексту.

Дополнительные параметры














getResources (значение по умолчанию)pdoResources (значение по умолчанию)Применение

&showUnpublished=`0`

&showUnpublished=`0`

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

&showDeleted=`0`

&showDeleted=`0`Показывать ли ресурсы, помеченные как удалённые.

&showHidden=`0`

&showHidden=`0`Показывать ли ресурсы, у которых стоит галочка «Не показывать в меню».

&hideContainers=`0`

&hideContainers=`0`Показывать ли ресурсы, которые являются контейнерами. 

&includeContent=`0`

&includeContent=`0`Подгружать ли поле content.

&includeTVs=`0`

&includeTVs

В параметрах указываем TV, которые так же будут доступны. В чанке доступ к TV будет доступен через плэйсхолдеры с префиксом tv. Например, [[+tv.price]]

&prepareTVs=`1`

&prepareTVs=`1`

Список TV-параметров, которые нужно подготовить перед выборкой. 1 означает — подготовить все TV.

&processTVs=`0`

&processTVs

Список TV, которые будут обработаны перед выводом. 
pdoResources. Если поставить 1, то будут обработаны все TV, указанные в includeTVs.

&tvPrefix=`tv.`

&tvPrefix=`tv.`

Префикс для TV параметров. 

&idx=`1`

&idx

Цифра, с которой будет начинаться итерируемый плейсхолдер [[+idx]]

&totalVar=`total`

&totalVar=`total`

Имя плейсхолдера, в котором будет храниться общее количество результатов. 

debug=`false`

&showLog=`0`

Будет ли выведена информация, отвечающая за отладку. Какие SQL запросы были выполнены и т. д. 

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













getResources (значение по умолчанию)pdoResources (значение по умолчанию)Применение

&tpl

&tpl

Имя чанка ресурса. Если не указано, то будет выведено содержимое всех полей. 

&tplOdd

&tplOddИмя чанка для чётных ресурсов. 

&tplFirst

&tplFirstИмя чанка для первого ресурса. 

&tplLast

&tplLastИмя чанка для последнего ресурса.

&tplCondition

&tplConditionПоле ресурса, в котором будет содержаться значение для выбора чанка по условию, заданному в параметре conditionalTpls

&conditionalTpls

&conditionalTpls

JSON-строка с массивом, ключом которого будет выступать строка, которая будет сравниваться с полем, указанным в параметре tplCondition. А в качестве значения ключа будет выступать имя чанка, который будет использован, если условие выполнится. 

pdoResources. Оператор сравнения можно дополнительно указать в параметре tplOperator. 

&tplWrapper

&tplWrapper

Чанк-обёртка, в котором будут выводиться все ресурсы. [[+output]] — плэйсхолдер всех результатов. 
Примечание. Не работает с параметром &toSeparatePlaceholders

&wrapIfEmpty=`false`

&wrapIfEmpty

Если в качестве значения указать 1, то принудительно выводит чанк, указанный в параметре tplWrapper,  даже если результатов нет. 

&outputSeparator=`\n`

&outputSeparator

Строка для разделения результатов вывода. 

&toPlaceholder

&toPlaceholder

Если не пусто, то сниппет вместо вывода на экран, сохранит все результаты в плэйсхолдер. 

&toSeparatePlaceholders

&toSeparatePlaceholders

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

Примеры работы

Самый простой вызов, с необходимым минимумом параметров:

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

Когда необходимо подключить дополнительный TV при выводе: 

[[!pdoResources?
  &parents=`1`
  &depth=`0`
  &tpl=`catalog_item`
  &includeTVs=`price`
]]

Сортируем элементы по индексу (порядок расположения в дереве элементов):

[[!pdoResources?
   &tpl=`item_cat_second`
   &depth=`0`
   &parents=`9`
   &sortby=`menuindex`
   &sortdir=`ASC`
]]

[pdoTools] Версия 1.4.0, сниппет pdoResources / Расширения MODX / Блоги / bezumkin.ru

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

Однако, есть один неприятный момент: иногда скорость работы этого сниппета бывает недостаточной. Его нельзя назвать прям тормозом, но хотелось бы побыстрее.

Учитывая, что мы уже довольно давно используем pdoTools для разработки быстрых сниппетов в своих компонентах, написание аналога getResources было только вопросом времени.

И вот, наконец-то, новый сниппет pdoResources включен в пакет по умолчанию и является самым главным изменением в новой версии pdoTools. Поэтому, с него и начнем.

Сниппет pdoResources

Это сниппет, написанный на pdoTools и входящий в состав пакета. Он предназначен для получения и вывода документов сайта и, насколько это возможно, повторяет функционал getResources.

Основное отличие — работа с ТВ параметрами:

  • Нет &processTVs=«
  • Параметр &includeTVs=« принимает имена ТВ параметров. То есть, нужно указывать, какие ТВ выбирать. Включить сразу все подряд ТВ нельзя.
  • Все возможные дополнительные условия указываются в &where=«. Нет отдельной фильтрации по ТВ, но это можно указать вручную.
  • Нет условий при работе с чанками (conditional chunks). Если будет нужно — добавим.

Особая работа с ТВ обусловливается тем, что все ТВ выбираются в том же запросе, что и ресурсы, то есть, используется &leftJoin=«. Все параметры с описаниями нужно смотреть вот тут.

Ну а теперь — про скорость!

Выборка из БД

Простая выборка из БД, без оформления, без ТВ параметров, чистый тест скорости получения данных.

Вызовы сниппетов:

[[!getResources?
	&parents=`2`
	&limit=`n`
]]

[[!pdoResources?
	&parents=`2`
	&limit=`n`
]]

Результаты:






LimitgetResourcespdoResources
100.1592 s0.1304 s
500.3502 s0.1495 s
1000.5500 s0.1762 s
5002.1891 s0.3045 s

Благодаря работе через PDO и выборку всего необходимого в один запрос, pdoResources уверенно лидирует, особенно при больших объёмах.

Выборка и оформление

Та же выборка, но с указанием чанка, в котором всего два плейсхолдера:

<p>[[+idx]] - [[+pagetitle]]</p>

Вызовы сниппетов:

[[!getResources?
	&parents=`2`
	&tpl=`tpl.Test.row`
	&limit=`n`
]]

[[!pdoResources?
	&parents=`2`
	&tpl=`tpl.Test.row`
	&limit=`n`
]]

Результаты:






LimitgetResourcespdoResources
100.1721 s0.1384 s
500.3994 s0.1687 s
1000.6915 s0.2047 s
5002.7538 s0.4851 s

Тут ситуация никак не меняется.

Выборка и оформление + 2 ТВ параметра

Добавляем 2 ТВ параметра в наш чанк и выборку:

<p>[[+idx]] - [[+pagetitle]].
[[+tv.meta_description]] [[+tv.meta_keywords]]</p>

Вызовы сниппетов:

[[!getResources?
	&parents=`2`
	&tpl=`tpl.Test.row`
	&includeTVs=`1`
	&includeTVList=`meta_description,meta_keywords`
	&limit=`n`
]]

[[!pdoResources?
	&parents=`2`
	&tpl=`tpl.Test.row`
	&includeTVs=`meta_description,meta_keywords`
	&limit=`n`
]]

Результаты:






LimitgetResourcespdoResources
100.2029 s0.1383 s
500.5014 s0.1747 s
1000.8860 s0.2230 s
5004.0989 s0.5248 s

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

Выводы

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

Это достигается благодаря двум основным составляющим:

  1. Выборка всего нужно за один запрос, через PDO.
  2. Предварительная обработка чанков, когда значения из ресурса заменяются в чанке без парсера MODX.

Есть конечно и еще много разных оптимизаций\улучшений, но эти 2 — принципиальные. Именно они дают такой прирост производительности.

Обращаю ваше внимание, что это работа без fastMode и быстрых плейсхолдеров.

Остальные изменения pdoTools

Внимание, это изменения, которые влияют на работу всех сниппетов pdoTools. То есть, новые свойства можно использовать и у miniShop2 и у Tickets!

Параметр sort теперь принимает массивы в виде JSON строк, например:

[[!msProducts?
	&sortby=`{
		"publishedon":"desc"
		,"pagetitle":"asc"
	}`
]]

Добавлена автоматическая замена имён ТВ в &where. Тут нужно немного пояснить: из-за того, что ТВ присоединяются к запросу в БД, используются псевдонимы, и при указании

&includeTVs=`test`

в запросе мы получаем

`TVtest`.`value` as `test`

То есть, для работы с присоединённым ТВ нужно было указывать вот такое условие:

&includeTVs=`test`
&where=`{
	"TVtest.value:!=":"0"
}`

С версии 1.4.0 вы можете указать просто:

&includeTVs=`test`
&where=`{
	"test:!=":"0"
}`

и замена в запросе будет произведена автоматически.

Новый метод pdoTools::defineChunk(), который позволяет назначить кучу чанков для вывода результатов, согласно логики getResources.

Этот метод выдает имя чанка, используя параметры:

&tplFirst — чанк для первой строки результатов

&tplLast — чанк для последней строки результатов

&tplOdd — чанк для каждой второй строки

&tpl_N — чанк для n строки, например для 4й строки будет &tpl_4=«

&tpl_nN — чанк для каждой n строки, например для каждой третьей будет &tpl_n3=«

Эта возможность не включится автоматически — для нее сниппеты нужно апгредить. Конечно, новый pdoResources это уже умеет.

В лог менеджеру теперь выводится потребление памяти. Не знаю, пригодится это кому то, или нет — но мне нравится. Для просмотра лога нужно быть авторизованным в админке у вызвать сниппет с параметром

&showLog=`1`

Заключение

С версии 1.4.0, pdoTools стал не только библиотекой для написания быстрых сниппетов, но и гораздо более быстрой заменой getResources.

Текущая версия — бета. Возможны ошибки и недоработки, но уверен, вместе мы их поправим. В дальнейшем я планирую добавить сниппеты pdoMenu и pdoSitemap, которые, надеюсь, будут повторять функционал Wayfinder и GoogleSiteMap, только более быстро.

По GoogleSiteMap, кстати, уже есть наработки.

И всё таки, чего же нет в pdoResources?

Список вещей, которые есть в getResources, но пока не реализованы в pdoResources:

  • @FILE и @INLINE чанки — не уверен, что кто-то этим пользуется
  • &toSeparatePlaceholders — тоже самое. (Появилось в 1.4.1)
  • &tvFilters — не реализовано, но работает при указании ТВ в &where, например
    [[!pdoResources? &includeTVs=`test` &where=`{"test:!=":""}`]]
  • &sortbyTV, &sortdirTV и &sortbyTVType — не реализовано, но работает при указании сортировки в обычном &sortby, например:
    [[!pdoResources? &includeTVs=`test` &sortby=`{"test":"desc"}`]]
  • &prepareTVs, &prepareTVList, &processTVs, &processTVList — этого нет, и скорее всего, не будет.
  • &debug — есть гораздо более мощный и удобный &showLog=`1`
  • &sortbyAlias, &sortbyEscaped — не знаю, зачем они.
  • &tplCondition, &conditionalTpls и $tplOperator — чанки с условием, в документации не описаны, но скорее всего — сделаю. (Появилось в 1.4.1)

Всё остальное в наличии.

Добавление новых комментариев отключено.

Вывод товаров в слайдах по 4 штуки pdoResources / Вопросы / MODX.im

Доброго дня. Снова за советом. Столкнулся с парой вопросов. Тыкаюсь несколько дней и пока безуспешно.

1. Задача вывести в слайдере товары. Каждый слайд обернут в контейнер, внутри которого выводятся по 4 товара. Соответственно, если сделать вызов msProducts или pdoPage сначала сладов, в чанках которых будет еще по вызову товаров это неправильно. К тому же, надо, чтобы товары в своем количестве выводились по 4 штуки. В первом слайде с1-4, во втором с 5-8 и т.д. Как это можно сделать?

Задача вывести товары в болоке магазина на minishop2 с меткой «Новинка».

Схематика такая:

Вывожу так:

[ [! msProducts?

&limit=`18`

&parents=`5,6,17`

&depth=`10`

&includeThumbs=`medium`

&includeTVs=`1`

&processTVs=`1`

&tpl=`smallSlidesTpl`

&includeContent=`1`

&where=` { » Data.new «: » 1 » } `

] ]

2. Второй вопрос тоже про вывод товаров в табах.

Есть такой фильтр:


При нажатии на кнопки ДЛЯ НЕЕ, ДЛЯ НЕГО и ЭКСКЛЮЗИВ должны выводится под ними товары из соответствующей категории.

Верстка с вызовом такая:

<div>
            <div>
                <div>
                    <div>
                        <h3>Категории товаров</h3>
                        <p>Найди подходящий вариант</p>
                    </div>
                </div>
                <div>
                    <nav>
                        <ul role="tablist">
                            <li>
                                <a data-toggle="pill" href="#for-her"
                                    role="tab" aria-controls="pills-home" aria-selected="true">Для нее</a>
                            </li>
                            <li>
                                <a data-toggle="pill" href="#for-him"
                                    role="tab" aria-controls="pills-profile" aria-selected="false">Для него</a>
                            </li>
                            <li>
                                <a data-toggle="pill" href="#exclusive"
                                    role="tab" aria-controls="pills-contact" aria-selected="false">Эксклюзив</a>
                            </li>
                        </ul>
                    </nav>
                </div>
            </div>
        </div>
        <!-- product-tab-nav end -->
        <div>
            <div>
                <div>
                    <!-- first tab-pane -->
                    <div role="tabpanel"
                        aria-labelledby="pills-home-tab">
                        <div>
                          [ [ ! msProducts?
                          &groupby=`msCategory.id`
                          &parents=`5`
                          &includeThumbs=`medium`                     
                          &includeTVs=`1`
                          &tpl=`slideProductTplUp`
                          &tplOdd=`slideProductTplDown`
                          &includeContent=`1`
                          ] ]
                        </div>
                    </div>
                    <!-- second tab-pane -->
                    <div role="tabpanel" aria-labelledby="pills-profile-tab">
                        <div>
                            [ [ ! msProducts?
                            &groupby=`msCategory.id`
                            &limit=`50`
                            &parents=`6`
                            &includeThumbs=`medium`                     
                            &includeTVs=`1`
                            &tpl=`slideProductTplUp`
                            &tplOdd=`slideProductTplDown`
                            &includeContent=`1`
                            ] ]
                        </div>
                    </div>
                    <!-- third tab-pane -->
                    <div role="tabpanel" aria-labelledby="pills-contact-tab">
                        <div>
                          [ [ ! msProducts?
                          &groupby=`msCategory.id`
                          &limit=`50`
                          &parents=`17`
                          &includeThumbs=`medium`                     
                          &includeTVs=`1`
                          &tpl=`slideProductTplUp`
                          &tplOdd=`slideProductTplDown`
                          &includeContent=`1`
                          ] ]
                        </div>
                    </div>
                </div>
            </div>
        </div>

Почему-то не выводятся, либо не реагируют на нажатие кнопки табов. Может не допустимо делать несколько вызовов?
Пробовал через pdoPage и тоже не получилось. Прежде как-то раз получилось, но во всех категориях выводились все товары магазина без разбора.
Спасибо.

pdoResources / Snippets / pdoTools / docs.modx.pro

Фрагмент для отображения списка ресурсов. Это продвинутая замена getResources: в нем есть все функции, но без недостатков.

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

Недвижимость

Свойства выбора ресурса

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

Имя По умолчанию Описание
и родители Текущий ресурс Список родителей, разделенных запятыми, для поиска результатов. Установите 0 для неограниченного доступа, до +0 для верхнего уровня. Если родительский идентификатор начинается с тире, он и его дочерние элементы исключаются из запроса.
и глубина 10 Глубина поиска дочерних ресурсов от родительского в дереве ресурсов.
и ресурсы Разделенный запятыми список ресурсов для добавления к результатам. Если идентификатор ресурса начинается с дефиса, этот ресурс исключается из запроса.
и контекст Ограничить ресурсы из данного контекста.
и где Массив дополнительных параметров выбора в кодировке JSON.
и показатьСкрытый 1 Показать ресурсы, скрытые в меню.
и показать Неопубликованные 0 Показать неопубликованные ресурсы.
и показать Удалено 0 Показать ресурсы, отмеченные как удаленные.
и скрыть Контейнеры 0 Исключить ресурсы контейнера, то есть ресурсы с «isfolder = 1».
и выберите 0 Список полей для извлечения, разделенных запятыми.Вы можете указать массив строк JSON, например {«modResource»: «id, pagetitle, content»} .
и сортировка название страницы Любое поле ресурса для сортировки, включая телевизоры, если также установлено свойство & includeTVs . Вы можете указать строку JSON с массивом из нескольких полей, например {«tvname»: «ASC», «pagetitle»: «DESC»} . Для случайной сортировки используйте «RAND ()».
и sortdir DESC Направление сортировки: по возрастанию или по убыванию.
и предел 10 Ограничьте количество результатов. Вы можете использовать «0» без ограничения.
и офсет 0 Количество элементов, которые нужно пропустить, с самого начала.
и первый 1 Номер первого элемента выходных результатов.
и последние Автомат, по формуле (итого + первая — 1) Номер последней позиции результатов.
и нагрузка Модели Список компонентов, разделенных запятыми, модель которых необходимо загрузить для построения запроса. Пример: & loadModels = `ms2gallery, msearch3` .
и tvFilters Список фильтров для ТВ, разделенных И и ИЛИ. Указанный разделителем параметр & tvFiltersOrDelimiter представляет собой логическое условие ИЛИ и условия, сгруппированные в первую очередь.Внутри каждой группы вы можете указать список значений, разделенных и tvFiltersAndDelimiter . Искать значения можно в любом конкретном ТВ, если указано «myTV == значение», или в любом «значении». Пример вызова: & tvFilters = `filter2 == one, filter1 == bar% || filter1 == foo` . Обратите внимание: в фильтре используется оператор LIKE, а символ «%» является метасимволом. Это будет искать значения для ресурсов, которые находятся в таблице site_tmplvar_contentvalues, а не в настройках телевизора по умолчанию.
и tvFiltersAndDelimiter «,» Разделитель условного И свойства & tvFilters .
и tvFiltersOrDelimiter «||» Разделитель для условного свойства OR и tvFilters .

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

Эти свойства определяют блоки, содержащие шаблоны для форматирования сгенерированного вывода.

Имя Описание
и возврат Установите в «1», чтобы вернуть строку со списком идентификаторов ресурсов вместо полных результатов. Все шаблоны игнорируются.
и tpl Именованный блок для форматирования отдельных элементов. Если не указано иное, содержимое полей ресурсов будет выведено на экран.
и tpl Первый Имя фрагмента для форматирования первого элемента результатов.
и tpl Последний Имя фрагмента для форматирования последнего элемента результатов.
и tplOdd Имя фрагмента для форматирования каждого элемента с нечетным номером в результатах.
и tplWrapper Chunk — обертка для всех результатов. Принимает один заполнитель: [[+ output]] . Он не работает вместе с & toSeparatePlaceholder .
& wrapIfEmpty Включает внешнюю оболочку фрагментов * & tplWrapper **, даже если результатов нет.
и tpl Состояние Определяет поле ресурса для оценки по ключам, определенным в свойстве & conditionalTpls .
и tpl Оператор Необязательный оператор для сравнения поля ресурса & tplCondition с массивом значений и в блоках & conditionalTpls .
и условные Tpls Объект JSON, определяющий карту значений полей и связанных фрагментов tpl для использования, когда поле, определенное в & tplCondition , соответствует значению. Оператор сравнения указан в & tplOperator . Для таких операторов, как isempty , нельзя использовать массив ключей.
и выходной разделитель Необязательная строка для разделения результатов.

Свойства результата

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

Имя По умолчанию Описание
и быстрый режим 0 Быстрый режим для обработки чанков. Все необработанные теги (модификаторы вывода, сниппеты и т. Д.) Удаляются.
и idx Начальное количество итераций вывода.
и комплект Всего 0 Указывает, следует ли заполнить общий заполнитель количеством результатов.
и всего Вар всего Имя заполнителя для хранения общего количества результатов.
и includeContent 0 Указывает, следует ли возвращать в результатах поле «content» каждого ресурса.
и телевизоры Список значений переменных шаблона, разделенных запятыми, которые должны быть включены в заполнители, доступные для каждого шаблона ресурса. Пример: «действие, время» создаст заполнители [[+ tv.action]] и [[+ tv.time]] .
и подготовить телевизоры «1», подготавливает все телевизоры, указанные в , и включает телевизоры Разделенный запятыми список ТВ-значений, зависящих от медиаисточника, которые необходимо подготовить перед выводом.
и технологические телевизоры Разделенный запятыми список телевизоров, которые должны обрабатываться в соответствии с их параметрами вывода. Если установлено значение «1», будут обрабатываться все ТВ, перечисленные в , и includeTVs .
& tvPrefix тв. Свойство ТВ префикса.
и схема -1 Тип схемы URL, передаваемой в modX :: makeUrl (). См. Список допустимых вариантов.
& useWeblinkUrl 0 Создает ссылку на ресурс веб-ссылки, а не на целевой URL. ПРИМЕЧАНИЕ: Для правильной работы обязательно используйте [[+ link]] вместо [[~ [[+ id]]]] , например. [[+ pagetitle]]] .
и к держателю Сохранить вывод в заполнитель с этим именем вместо вывода вывода на экран.
и другие держатели Каждый элемент будет отображаться в виде заполнителя с именем, начинающимся с этого значения и заканчивающимся порядковым номером, начинающимся с нуля. Например, указав значение свойства «myPl», вы получите заполнители [[+ myPl0]] , [[+ myPl1]] и т. Д.
& showLog 0 Показать дополнительную отладочную информацию об обработке сниппета только зарегистрированным пользователям Manager.

Примеры

Простой список дочерних элементов ресурса № 1:

  [[pdoResources?
    & родители = `1`
    & глубина = `0`
    & tpl = `ListRowTpl`
]]  

Чтобы добавить телевизор с именем «image», тогда звонок будет следующим:

  [[pdoResources?
    & родители = `1`
    & глубина = `0`
    & tpl = `ListRowTpl`
    & includeTVs = `изображение`
]]  

Чанк ListRowTpl теперь позволяет использовать заполнитель [[+ tv.изображение]] .

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

и класс Класс производного объекта мод Ресурс
и родители Список родителей для поиска результата, разделенных запятыми. Если поставить 0, выборка не ограничена. Если родительский идентификатор начинается с дефиса, он и его дочерние элементы исключаются из выборки. Если вам нужно ограничить выборку параметром и глубиной в корне ресурса, вы должны использовать & parent = `+ 0` Текущий ресурс
и глубина Глубина поиска дочерних ресурсов от родительского 10
и ресурсы Список ресурсов для поиска результатов, разделенных запятыми.Если идентификатор ресурса начинается с дефиса, этот ресурс исключается из выборки.
и шаблоны Список шаблонов для фильтрации результатов, разделенных запятыми. Если идентификатор шаблона начинается с дефиса, ресурсы с ним исключаются из выборки.
и контекст Ограничение выборки контекстом ресурса
и где Дополнительный массив параметров образца, закодированного в JSON
и показатьСкрытый Показать ресурсы, скрытые в меню 0
и показать Неопубликованные Показать неопубликованные ресурсы 0
и показать Удалено Показать удаленные ресурсы 0
и скрыть Контейнеры Исключить ресурсы контейнера, то есть ресурсы с «isfolder = 1». 0
& скрыть Неисследованный Исключить ресурсы, скрытые из поиска
и выберите Список полей для образца, разделенных запятыми. JSON можно указать с помощью массива, например {«modResource»: «id, pagetitle, content»} .
и слева Присоединиться Аналог SQL левого соединения
и вправо Присоединиться Аналог SQL правого соединения
и внутреннее присоединение Аналог SQL внутреннего соединения
и сортировка Любое поле ресурса для сортировки, оно включает параметр TV, если он указан в параметре & includeTVs .Строку JSON можно указать массивом на несколько полей. Укажите « RAND () » для случайной сортировки название страницы
и sortdir Направление сортировки: по убыванию или по возрастанию ASC
и группа от Укажите поле, по которому группируются результаты
и имеющий Используется для ограничения выборки группирующих строк по условию для всей группы, заданной в & group по
и предел Ограничение результатов выборки.«0» можно использовать 0
и офсет Пропустить результат с начала 0
и первый Номер первой итерации в выходных результатах 1
и последние Номер последней итерации в выходных результатах Автоматический расчет формулы (всего + первый — 1)
и нагрузка Модели Список компонентов, модели которых необходимо скачать для построения запроса, через запятую, e.грамм. & loadModels = `ms2gallery, msearch3` .
и tvFilters Список ТВ-фильтров с разделителями И и ИЛИ. Разделитель, указанный в & tvFiltersOrDelimiter , является логическим условием ИЛИ, и его условия сгруппированы в первую очередь. Вы можете определить список значений в каждой группе, разделенный метками и tvFiltersAndDelimiter . Поиск значений может производиться в любом конкретном ТВ, если он есть (« myTV == значение ») или любом (« значение »).Например. & tvFilters = `filter2 == one, filter1 == bar% || filter1 == foo` . Обратите внимание: фильтрация использует LIKE, а «%» — это метасимвол. Поиск осуществляется по значениям, которые физически находятся в базе данных, то есть значения из настроек телевизора не попадают сюда по умолчанию
и tvFiltersAndDelimiter Разделитель для условий И в и tvFilters . «,»
и tvFiltersOrDelimiter Разделитель для условий ИЛИ в и tvFilters . « «
и sortbyTV Дополнительное поле, по которому должны быть отсортированы все результаты. Его можно указать прямо в & sortby
и sortdirTV Направление сортировки по дополнительным объектам, указанным в & sortby. Его можно указать прямо в & sortby
и проверка разрешений Укажите, какие разрешения следует проверять при выводе объектов
и отключить условия Он отключает определенные параметры образца modResource класса

Что такое pdoTools? (Часть 1)

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

Обычный набор всем известен:

  • getResources для списка ваших документов
  • getPage для нумерации списков
  • Wayfinder для меню сборки
  • Панировочные сухари для панировочных сухарей
  • GoogleSitemap для карты сайта

Но можно заменить все одним пакетом: pdoTools!

Начнем с введения в pdoTools.

9 фрагментов

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

pdoResources

pdoResources является заменой getResources.

Как и все другие сниппеты в pdoTools, он не использует объекты xPDO для представления ресурсов. Он работает напрямую с таблицами базы данных. Это делает его быстрее.

Вам не нужно преобразовывать даты ресурсов в метки времени, прежде чем вы сможете передать их в выходной фильтр «date».И он объединяет только необходимые телевизоры, поэтому вы должны указать их в свойстве & includeTVs в виде списка, разделенного запятыми.

  [[pdoResources?
    & родители = `0`
    & includeTVs = `my_tv1, my_tv2`
    & tvPrefix = `tv.`
    & processTVs = `1`
    & includeContent = `1`
    & showLog = `1`
]]  

Одной из наиболее важных функций pdoTools является свойство & showLog . Это позволяет вам проверить, насколько быстр фрагмент. Это медленный SQL-запрос или слишком сложный фрагмент? Свойство & showLog поможет вам в этом разобраться.

Вторая важная особенность — соединения SQL. С помощью pdoResources вы можете создавать сложные запросы и выбирать только то, что вам нужно.

  [[! PdoResources?
    & родители = `0`
    & class = `modResource`
    & leftJoin = `{
        "Родитель": {
            "класс": "modResource",
            "on": "modResource.parent = Parent.id"
        },
        "Создан": {
            "класс": "modUserProfile",
            "on": "modResource.createdby = CreatedBy.internalKey"
        }
    } `
    & select = `{
        «modResource»: «modResource.id, modResource.pagetitle ",
        "Parent": "Parent.pagetitle as parent",
        "CreatedBy": "CreatedBy.fullname как автор"
    } `
    & showLog = `1`
]]  

В приведенном выше примере вам не нужно вызывать какие-либо фрагменты или фильтры вывода, чтобы получить родительский элемент ресурса или имя создателя. Насколько быстро это работает? Посмотрим на вывод журнала ..

Есть много других интересных функций, но это самые важные.

pdo Страница

pdoPage — это замена для getPage.Есть несколько отличий от getPage:

  1. Пустые страницы не отображаются. Если у вас нет результатов на странице, или пользователь ввел неверную страницу вручную — вы будете перенаправлены на первую страницу.
  2. У него есть свойство & maxLimit , для которого по умолчанию установлено значение 100. Это гарантирует, что пользователи не могут замедлить работу вашего сайта, установив в URL-адресе & limit = 100000 . Если вы используете getPage — попробуйте сделать это на своем сайте.
  3. Устанавливает метатеги для предыдущей и следующей страниц для поисковых роботов в заголовке страницы.
  4. Имеет встроенную разбивку на страницы ajax. Вот как это работает:
  
[[! pdoPage? & родители = `0` & ajaxMode = `по умолчанию` ]]
[[! + page.nav]]

Конечно, вы можете изменить разметку, указав дополнительные параметры для сниппета.

pdoMenu

Этот фрагмент может заменить Wayfinder. В основном это работает так же, но немного быстрее.

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

  [[! PdoMenu?
    & родители = `0`
    & checkPermissions = `список`
]]  

По умолчанию все проверки разрешений отключены.Кстати, это свойство можно использовать во всех сниппетах pdoTools.

pdo Пользователи

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

  [[! PdoUsers?
    & groups = `Авторы`
    & sortdir = `asc`
]]  

Вы можете объединить это с pdoPage , чтобы получить разбитый на страницы список пользователей:

  [[! PdoPage?
    & element = `pdoUsers`
    & groups = `Авторы`
    & роли = `Член`
    & sortby = `id`
    & sortdir = `asc`
]]
[[! + стр.nav]]  

Заполнители — это все поля из объектов modUser и modUserProfile . Вы можете увидеть их все, если просто установите пустой параметр и tpl (или не задавайте его вообще, если сниппет не имеет значения tpl по умолчанию).

Пустые & tpl — еще одна общая черта всех сниппетов pdoTools.

pdoКарта сайта

pdoSitemap создает быструю карту сайта, которая не требует, чтобы ресурс был установлен в XML, если свойство & forceXML включено (по умолчанию).

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

Чтобы увидеть, насколько это быстро, мы можем протестировать его, отключив и forceXML и включив и showLog . На моем сайте для первого запуска требуется почти 30 секунд, а для второго всего 0,03:

  [[! PdoSitemap?
    & forceXML = `0`
    & showLog = `1`
]]  

В моей карте сайта 6873 ресурсов.

pdoСоседи

Фрагмент для создания ссылок на предыдущую, следующую и верхнюю страницы текущего документа.

  [[! PdoNeighbours?
    & sortby = `menuindex`
    & sortdirc = `desc`
]]  
pdoCrumbs

Моя версия простого сниппета для панировочных сухарей на сайте. Ничего особенного, за исключением того, что он использует ядро ​​pdoTools с быстрой обработкой фрагментов и выборкой данных.

  [[! PdoCrumbs]]  
pdoTitle

Этот фрагмент кода генерирует тег «заголовок» страниц. Он запускает pdoCrumbs и показывает путь к текущему документу в заголовке.

   [[! PdoTitle]] / [[++ site_name]]   

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

   Вопросы / стр. 5 из 593 / Sections / mysite.com   

Краулерам это нравится!

pdo Поле

И, наконец, pdoField — это сниппет, позволяющий получить любое поле из любых ресурсов. Это замена сниппетов UltimateParent и getResourceField .

Например, нам нужно получить longtitle ресурса с id = 15

  [[pdoField?
    & id = `15`
    & field = `longtitle`
]]  

Или, если мы хотим получить pagetitle прародителя текущего документа:

  [[pdoField?
    & id = `[[* id]]`
    & field = `pagetitle`
    & top = `2`
]]  

Заключение

Я могу писать все больше и больше о pdoTools, но этого достаточно для первой статьи.В следующих двух статьях я расскажу о скорости и файле pdoParser.

Важно помнить, что все сниппеты pdoTools используют одно и то же ядро, и большинство параметров можно использовать для всех из них.

Вы можете использовать & showLog , чтобы увидеть, как работают фрагменты, вы можете указать пустые фрагменты, чтобы увидеть доступные заполнители, и вы можете объединять таблицы на лету.

pdoTools — это библиотека, а не просто набор сниппетов. Многие дополнения MODX используют pdoTools для своих собственных сниппетов, таких как miniShop2, Tickets, BannerY, AjaxForm и другие.

Самый большой недостаток pdoTools — ограниченная документация на английском языке. Все, что у нас есть, находится здесь https://github.com/bezumkin/Docs/tree/master/en/01_Components/01_pdoTools. Если вам интересно, вы можете помочь, добавив больше страниц в документацию.

И не забывайте, что все параметры сниппетов описаны внутри них. Просто откройте сниппет в менеджере и увидите вкладку «Свойства».

Как отобразить дополнительные поля дочерних ресурсов Pdoresources Modx Revo

aramisnegron master Полная документация для Fred: https: // modxcms.github.io/fred/ Журнал изменений для текущей версии Fred находится в разделе Создание и организация коллекций элементов в качестве строительных блоков для страниц; В Blueprints можно настроить содержимое с помощью различных элементов управления, включая переключение даты ввода текста.

MoreGallery — это интуитивно понятная и мощная галерея изображений для MODX с видео. Убедитесь, что эскизы самого высокого качества загружены из модального окна Vimeo [# 217]; Исправить селектор массового изображения, имеющий более высокий zindex, чем модальная маска. Обеспечьте поддержку дополнительных функций, таких как FileSluggy, которые очищают имена файлов при загрузке [# 142].

. пользователи могут вводить текст и загружать изображения без необходимости знать какой-либо HTML или CSS. Когда компания использует CMS для публикации своих страниц, она снижает свою зависимость от Optimizely; Drupal; Joomla; Magento; ModX; Squarespace; Wix; Weebly; WordPress Вам нужно будет начать с составления списка бизнес-проблем, которые у вас есть.

В этом файле показаны изменения в последних выпусках MODX. с помощью кнопки установки после изменения текста [# 13078] Исправить проверку порта сервера в сценарии запуска установки в диспетчере [# 5556] Включить объединение соединений с поддержкой ведущего / ведомого устройства [# 5499] cacheactionmap modAccessibleObject: Реорганизован объект и загрузчик коллекции.

. эволюция MODX Evolution! Участвуйте в разработке Dmi3yy / modx.evo.custom, создав учетную запись на GitHub. В этом файле показаны изменения в последних выпусках Evolution CMS. Самая последняя версия — [GitHub: # 128e35b88] исправляет наследование светлых полей входа в систему Nicola TV var для нового субресурса MrSwed.

. Фреймворк. Внесите свой вклад в развитие modxcms / Revolution, создав учетную запись на GitHub. революция / ядро ​​/ документы / changelog.txt. Перейти к файлу Перейти к файлу T Исправить недопустимое слияние, сохраненное в основной ветке из 2.1.0rc1 modAccessibleObject: Реорганизована логика загрузчика объектов и коллекций для улучшения показателей попадания в кеш.

Я также уже установил значение конфигурации отладки в Revolution на EALL. PS: Вы можете задать мне также сложные вопросы или дать мне советы, где искать в разделе Как я уже упоминал в Stack Overflow, я не могу воспроизвести это. Я обеспокоен недавним объявлением Google для Reader, что они, возможно, забеспокоились.

Я создавал сайты с ModX Revolution около 4 месяцев, но слышал много хорошего о Craft.Вопросы должны быть вручную преобразованы в вики сообщества, если они не подходят, или Update: Up and Running with Craft, новейшая версия Mijingo’s Learning Craft — это блог Overflow.

Вручите этот документ Руководству по параметрам синтезатора и Перечню данных. В то время как Описывает, как настроить MODX6 / MODX7 / MODX8 и как выполнять основные операции. Подробную информацию о влиянии регуляторов 12 см. на стр. 37 быстрого редактирования. Когда значения настроек отображаются на нескольких страницах, вы.

MODX Content Management modxcms Dallas TX http://modx.com/ Дополнительное приложение для MODX Revolution, которое предоставляет Коллекции ресурсов, управляемые и ограниченные, поэтому его можно использовать для определения того, какое направление текста использовать. Обновите locutus.codeworkspace

  • changelog.txt js / css сжатие в диспетчере [# 5556] Включение пула соединений с выходными фильтрами и плавающей точкой поддержки ведущего / ведомого устройства [# 4205] Убедитесь, что старый поставщик modxcms.com удален после изменения в modAccessibleObject: изменена логика загрузчика объектов и коллекций для улучшения показателей попадания в кеш.

    В этом уроке мы собираемся установить MODX Revolution 2.6.0 CMS на Теперь используйте команду su, чтобы переключиться на нового пользователя sudo user1 Чтобы избежать проблем с правами доступа к файлам с MODX Revolution позже вниз Vultr Twitter Vultr Facebook Vultr Instagram Vultr LinkedIn Vultr GitHub Vultr Stack Overflow.

    Стек Bitnami MODX для облачного хостинга Bitnami Найдите инструкции по установке определенных модулей PHP. sudo aptget update sudo aptget install buildessential libtool autoconf unzip wget aptkey add curl https: // packages.microsoft.com/config/ubuntu/16.04/prod.list ПРИМЕЧАНИЕ. Y и Z — заполнители.

    1 2 В этом файле показаны изменения в последних выпусках MODX. Исправление недопустимого слияния, сохраненного в основной ветке из 2.1.0rc1 Исправление 1904 [# 4205] Убедитесь, что старый провайдер modxcms.com удален после изменения в modAccessibleObject: отредактирована логика объекта и загрузчика коллекции для улучшения показателей попадания в кеш.

    MODX Revolution — это быстрая и гибкая масштабируемая программа с открытым исходным кодом. Теперь используйте команду su, чтобы переключиться на новую учетную запись пользователя sudo user1.Просто ответьте Y на все остальные вопросы «да / нет» как Vultr Twitter Vultr Facebook Vultr Instagram Vultr LinkedIn Vultr GitHub Vultr Stack Overflow.

    MODx CMS постоянно набирает популярность на протяжении многих лет, и в 1994 году я переехал в Даллас, штат Техас, где я поступил в колледж, чтобы получить степень по бизнесу в SMU. Revo сохранил те же парадигмы, что и MODX Evolution, но его выполнение в режиме «Ответы даже на самые простые вопросы» — отличный способ.

    Зак Уоллес копается в MODX CMS, как это работает, как его использовать и почему В 2009 году MODX был выпущен как Evolution and Revolution.Кстати, форумы построены на самом MODX с использованием свободно доступных дополнений, и вы можете найти людей, которые всегда готовы ответить на быстрые вопросы и проблемы.

    С момента публикации первой части Stack Overflow опубликовал хороший отчет о производительности Вопросы, скрытые из-за настроек игнорируемых тегов vuforia layar metaio rolify rubyonrails4 logentries favicon modxrevolution codefluent coreos var extendedTags new HashSet; foreach var wildcard in.

    В моей статье о правилах кэширования для MODX Revolution @MadeMyDay Марк Хинс задал очень хороший вопрос о том, как определить хороший вопрос, который я не хочу оставлять без ответа.однако ответ. Теперь мы видим, что у нас есть кешированный тег TV с некэшированными фрагментами.

    Вы должны обслуживать веб-страницы через Apache с помощью modrewrite, чтобы использовать это. Вы можете сделать свои URL нечувствительными к регистру, добавив NC без восклицательного знака, чтобы повысить скорость загрузки страницы: RewriteCond% {THEREQUEST} [AZ] {39 }\ /показатель\. Список действий Действия и меню.

    MODX Упрощенный импорт / экспорт с помощью importX и pdoResources Добавьте любые телевизоры, которые вам также нужны, или другие поля, которые вы хотите, например, editedon или Сначала перед большим запуском сделайте небольшой тест, чтобы убедиться, что он работает нормально, затем выполните весь пакет без тестовых данных .

    Дополнение для MODX Revolution, которое обеспечивает Коллекции ресурсов, управляемые CollectionContainer Resources modxcms / Collections. Официальную документацию по коллекциям можно найти здесь: https://docs.modx.com/extras/revo/.

    Вы можете отобразить миниатюру Image + в столбце сетки коллекций, установив для параметра To use that Image + MIGXField в Frontend вызов фрагмента ImagePlus, проанализированного с помощью фрагмента getResources / pdoResources, убедитесь, что вы добавили файл.

    Поле шаблона не указано в документе как доступные поля http: // rtfm.modx.com/display/revolution20/FCResource Но когда я добавляю дополнительный FC для другого ресурса, чтобы установить шаблон его подресурсов, у меня тоже есть.

    Еще одно отличие состоит в том, что нашему сниппету требуется фрагмент для вывода каждого из них, и он вмещает любые поля или телевизоры, которые мы хотим отобразить в нашем списке. / en / components / pdotools / snippets / pdoresources & parent целое число необязательно.

    Коллекции — это MODX Revolution Extra, который добавляет метку пользовательской вкладки. Настройте текст метки для вкладки «Дети».в элементе h3 со ссылкой для редактирования и кнопками для просмотра обновлений удалить публикацию аля статьи в виде сетки.

    Найдите самые популярные ссылки для входа непосредственно на страницу документов для входа в Modx. 9 марта 2018 г. Теперь перезапустите службу sshd, чтобы вы могли войти через ssh с новым. https://stackoverflow.com/questions/18752570/modxrevolutionusingcap.

    Я работаю над учебным веб-сайтом по MODX, и я хотел бы поместить внутрь тега MODX HTML CSS Javascript. На этот вопрос ответил BobRay. Смотрите, я нашел этот пост Я использую MODX Revolution 2.3.5пл традиционный.

    Как вывести дополнительные поля подресурса pdoResources MODX Revo? +1 голос

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

    Коллекции — это настраиваемый тип ресурса CRC, который действует как контейнер для группы ресурсов, скрытых от дерева ресурсов.Или, по крайней мере, так все.

    Фрагмент кода работает хорошо при вызове из pdoResources. Например, вот фрагмент:

    [[+ pagetitle]]

    [[+ introtext]]

    [[pdoCrumbs?

    . Политика входа. Вот список всех статей блога сайта, отсортированных по дате. Убедитесь, что ваш блог статей о MODX не создает угрозы безопасности для вашего сайта.

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

    Фрагмент SiteAtoZ использует getResources для перечисления ресурсов в алфавитном порядке с заголовком от A до Z ссылок на якоря в тексте. В каждом разделе есть файл.

    Создание быстро загружаемого списка страниц от А до Я в MODX. Недавно у нас возникла необходимость создать список от А до Я большого количества ресурсов на сайте MODX. Наш список.

    Начнем с коллекций простой пример. Начните с чтения документации http://rtfm.modx.com/extras/revo/collections. Если вы еще этого не сделали.

    Заполнители задаются в коде и отображаются с тегами-заполнителями. Переменные шаблона — это дополнительные поля содержимого ресурса, созданные пользователем. Они могут быть.

    Древовидная информация блога; Нужна помощь и руководство с вашими вопросами по деревьям и расчистке земель? Загляните в наш блог, чтобы узнать, как мы можем сотрудничать.

    Совместите это с Коллекциями и Tagger, доступными на MODX.com для больших каталогов с мощной фильтрацией. Отображение информации о продукте Цена SKU.

    . вашего сайта. См. Наш Глоссарий MODX для терминологии, используемой на вашей панели. Все остальные поля / флажки следует оставить в покое. Вот список.

    Фреймворк для управления контентом с открытым исходным кодом на основе PHP и MySQL. Modx предлагает дистрибутив уровня Enterprise, который также включает Apache SOLR. 0.

    resource> id ;. } если! emptyreturnIds {.

    Статьи в блоге Боба РэяQuickList Руководства Боба. 4 ноября 2013 г. Обработка расширенных полей профиля пользователя MODX в коде. 23 апреля 2015 г. Плагин для входа в систему.

    [pdoMenu] Возвращено назад # 283 и исправлены документы для & tplCategoryFolder. [pdoResources] Более быстрая обработка дополнительных параметров сниппета для заполнителей.

    Как вывести дополнительные поля подресурса pdoResources MODX Revo? Возможно, вы правы. Она сделала это, но теперь ничего не отображается, что не так? @brady.

    Хотите практический подход к изучению того, как освоить известный контент, группировать данные в Коллекции и запустить наш самый первый сайт MODX.

    Добавление настраиваемых полей в формы менеджера, такие как Create Chunk Update, если issetscriptProperties [‘resource’] {/ на экране обновления, поэтому установите значение.

    Добавление дополнительных параметров в специальное место, чтобы мы могли поместить их в результаты. / @var modSnippet snippet /. массив свойств additionalPlaceholder ;.

    После установки modx Revo 2.2.2 в менеджере остается только меню без содержания. Инструмент разработчика в логотипе Stack Overflow. Новый токен CSRF на запрос или НЕТ?

    ClassExtender Extra для MODX Revolution.Автор: Боб Рэй Руководства Боба. Документация: ClassExtender Docs. Ошибки и пожелания: проблемы с ClassExtender.

    Фрагмент для отображения списка ресурсов. Это продвинутая замена getResources: в нем есть все функции, но без недостатков. Умеет.

    ruКак вывести дополнительные поля подресурса pdoResources MODX Modx MODX Revolution ContentBlocks ModX Revo База данных: Связь между участниками.

    На этой странице перечислены наиболее часто используемые теги MODX Revolution в качестве вспомогательных тегов или заполнителей, а иногда и переменных шаблона, о которых мы упоминаем.

    Коллекция Vintage Keyboard для Yamaha Montage / MODX включает семь электромеханических клавиатур 1960-х и 1970-х годов. Они включают:.

    Этот документ направлен на то, чтобы вы начали с типичными проблемами / вопросами, связанными с MODX Revolution, либо ответив на него, либо указав направо.

    Доступен ли такой сборщик в редакторе TinyMCE в MODX Revolution? Я имею в виду, что я не против использования синтаксиса ресурсов, но я не вижу своих пользователей.

    Что такое коллекции? Для непосвященных Collections is an Extra часть программного обеспечения, расширяющая основные функции MODX Revolution.

    Collections — это MODX Revolution Extra, который добавляет настраиваемый класс ресурсов CollectionContainer со следующим поведением: Любой прямой дочерний элемент.

    Вы можете указать строку JSON с массивом из нескольких полей. Эти свойства дополнительно определяют, какие данные следует извлекать и как их отображать.

    modx. MODX, также известный как MODX Revolution, представляет собой платформу CMS и веб-приложений с открытым исходным кодом, написанную на PHP с использованием базы данных MySQL или MSSQL.

    Создание быстро загружаемого списка страниц от А до Я в MODX.Автор Энн Торокио. Недавно у нас возникла необходимость создать список от А до Я из большого количества файлов.

    Телевизионная переменная шаблона — это настраиваемое поле, точнее говоря, когда ресурс отображается в веб-ТВ, теги заменяются на.

    Главная страница блога. Приемочное тестирование XVIII отдельных файлов среды. Отправленный Бобом Рэем | Теги: PhpUnit Codeception среды отдельных файлов.

    . полезная опция и showLog для ваших нужд из pdoTools extra: https://docs.modx.pro/en/components/pdotools/snippets/pdoresources Для тестирования.

    Открытый в октябре 1993 года Майком Смитом, давним ветераном лондонской бары и ресторанной сцены, Джим Боб уже начал свою работу.

    Мы посмотрели на фрагмент SiteAtoZ, думая, что можем улучшить: //docs.modx.pro/en/components/pdotools/snippets/pdoresources.

    Имена переменных: Независимо от вашего стиля кодирования, будьте последовательны. Если вы хотите использовать имена переменных camelCase, убедитесь, что все ваши переменные.

    Подробнее о Коллекциях читайте в документации.Демо. Сайт MODX Cloud был развернут только с описанными здесь элементами. Ты.

    Список изменений для коллекций.

    Коллекции 3.6.0
    ===================
    — Добавить преобразователь таблиц синхронизации
    — Добавлены 3 опции для ускорения больших дочерних списков (+ 10К ресурсов)
    — Исправлена ​​сортировка D&D для ресурсов в глубине> 1

    Коллекции 3.5.0
    ===================
    — Добавить collections.renderer.boolean renderer
    — Добавить совместимость с AjaxManager
    — Отрегулируйте положение других столбцов при создании / обновлении столбца с указанной позицией
    — Добавить параметр excludeResources в фрагмент getSelections
    — Предотвратить сброс просмотра Коллекции после быстрого обновления ресурсов
    — Используйте лексиконы для кнопки Открыть
    — Добавить эллипс переполнения в главный столбец
    — Добавить область в системные настройки

    Коллекции 3.4.2
    ===================
    — Исправлено сохранение значений телевизора из обновления из сетки
    — Исправлено после события сохранения, запущенного при обновлении из сетки

    Коллекции 3.4.1
    ===================
    — Исправить бесконечную перезагрузку Safari
    — Исправить выбор при сортировке по menuindex

    Коллекции 3.4.0
    ===================
    — Передать имя столбца средству рендеринга сниппета
    — Предотвратить постоянную сортировку, нарушающую сортировку D&D
    — Добавить рендерер Collections.renderer.buttons
    — Разрешить рендеринг фрагментов в несуществующем столбце
    — Добавить имена событий для обновления из процессора сетки
    — Показывать папки под коллекциями
    — Показывать хлебные крошки при просмотре папок в коллекциях
    — Импорт / экспорт представлений коллекции
    — Добавить быстрое обновление для сбора и выбора детей
    — Запретить сохранение столбцов с помощью рендеринга сниппетов из сетки
    — Добавлены новые системные настройки для отображения кнопки создания коллекции / выбора на древовидной панели инструментов.
    — Отображение идентификатора ресурса в окне ресурса ссылки
    — Настроить цвета в сетке коллекций

    Коллекции 3.3.0
    ===================
    — Показать назначенные шаблоны в сетке просмотра Коллекции
    — Исправить игнорирование родителей для pdoResources
    — Добавить «Условие для окна ресурса ссылки» в качестве настройки для просмотра выбора.
    — Исправлено отображение ContentBlocks, когда контент находится на отдельной вкладке
    — Исправлена ​​проверка использования шаблона в представлениях.

    Коллекции 3.2.2
    ===================
    — Исправлена ​​сортировка D&D для столбцов просмотра Коллекции.
    — Добавлен Collections.renderer.pagetitleWithIcons.
    — Улучшен обработчик встроенных кнопок действий, позволяющих использовать значки.
    — Исправлена ​​сортировка D&D, когда menuindex установлен как поле сортировки по умолчанию
    — Переименовать тип сортировки String

    Коллекции 3.2.1
    ===================
    — Исправить обновление с предыдущих версий

    Коллекции 3.2.0
    ===================
    — Добавить тип сортировки в качестве настройки столбца шаблона новой коллекции
    — Добавить постоянную сортировку
    — Автоматическая установка метки столбца из заголовка ТВ или имени группы тегов
    — Передавать значение столбцов в качестве входных данных для средства визуализации сниппета
    — Добавить тип сортировки в качестве новой настройки просмотра коллекции.
    — Добавить расположение содержимого в качестве настройки просмотра новой коллекции.
    — Добавить родителя в качестве настройки представления новой коллекции
    — Сделайте колонки ТВ доступными для поиска
    — Используйте modx-> getTableName, чтобы получить имена таблиц для таблиц Tagger
    — Показать значение по умолчанию для телевизора в сетке
    — Очистить фильтр, использовать поле сортировки и каталог из просмотра
    — Предотвратить ошибку, не передавая шаблоны ресурсов в представлении коллекции

    Коллекции 3.1.1
    ===================
    — Исправлено отображение (пустого) шаблона в поле выбора дочернего шаблона.
    — Исправлен путь к изображению в рендерере
    — Исправлены дочерние элементы, переупорядочивающие D&D при выборе элемента или дерева файлов.
    — Исправлена ​​кнопка возврата к сбору / выбору для статических ресурсов / веб-ссылок / символических ссылок.
    — Исправлена ​​кнопка возврата к коллекции / выбора при создании новой дочерней страницы.

    Коллекции 3.1.0
    ===================
    — Исправлена ​​кнопка сброса фильтра в разделе «Выбор».
    — Добавлена ​​возможность установить значения по умолчанию для типа контента для новых детей.
    — Добавлена ​​системная настройка для изменения пути к изображению в рендерере изображений.
    — Разрешить детям в разделе «Выбор»
    — Добавлена ​​возможность добавить колонку quip.
    — Исправлен выбор шаблонов в представлении Коллекции в Revo 2.2.x
    — Добавлена ​​возможность установить значения по умолчанию для скрытого меню, опубликованного, кешируемого, доступного для поиска и расширенного текста для новых детей.
    — Добавлена ​​возможность указать сортировку для поискового запроса ресурса Selections.
    — Добавлена ​​возможность установить метку для кнопки «Назад в коллекцию / выбор».
    — Исправлено отображение сетки выбора с телевизорами
    — Передать целую строку средству рендеринга фрагментов
    — Исправлена ​​сортировка по ТВ с тире в названии

    Коллекции 3.0.2
    ===================
    — Исправлено сохранение представления коллекций из вкладки настроек ресурса.
    — Связать ресурс с выделением можно с помощью поиска по идентификатору.
    — Исправлена ​​передача формата sort dir int в верхнем регистре в getSelections.
    — Удалена опция родителей из вызова getSelections

    Коллекции 3.0,1
    ===================
    — Исправлено обновление из сетки

    Коллекции 3.0.0
    ===================
    — Добавлена ​​проверка имени столбца, если он содержит точку
    — Добавлен рендерер PHP (сниппет), который будет использоваться для столбца
    — Добавлена ​​опция просмотра для определения классов ресурсов, которые будут доступны при выборе типа ресурса.
    — Добавлена ​​опция просмотра для определения пунктов контекстного меню.
    — Добавлена ​​опция просмотра для определения кнопок и их стиля.
    — Исправлено сохранение параметров просмотра из неактивированной вкладки
    — Изменен значок дерева по умолчанию для коллекций в Revo 2.3
    — Добавлен сниппет getSelections (работает с getPage, getCache и т. Д.)
    — Обновлен вид вкладки настроек Коллекции.
    — Обновлен просмотр коллекций.
    — Добавлен CRC для выбора.
    — Добавлена ​​кнопка возврата для дочерних элементов Коллекции и кнопка возврата к исходному состоянию.
    — Запускать OnBeforeEmptyTrash и OnEmptyTrash при удалении ресурса через коллекции

    Коллекции 2.2.2
    ===================
    — Исправлен рендеринг столбцов TV и Tagger с тире в имени / псевдониме.

    Коллекции 2.2.1
    ===================
    — Исправлена ​​совместимость с PHP 5.2.

    Коллекции 2.2.0
    ===================
    — Добавлена ​​возможность установить положение поля Контент.
    — Добавлены параметры для установки ярлыка вкладки и новой дочерней кнопки.
    — Добавлен Collections.renderer.image для рендеринга изображений.
    — Добавлены вкладки в представления коллекции, чтобы разделить ее настройки.
    — Разделенная вкладка настроек для вкладок vtabs для настроек ресурса и настроек коллекций.
    — Улучшена кнопка закрытия в дочерних элементах коллекции.
    — Исправлено отображение данных в столбцах ТВ.
    — Добавлена ​​возможность безвозвратно удалить удаленный ресурс
    — Исправлено повторяющееся действие из контекстного меню.
    — Добавлен контроллер данных для отображения страницы обзора ресурсов.
    — Исправлено добавление # к URL-адресу менеджера при нажатии кнопки
    — Исправить ошибку строгих стандартов (PHP 5.4+) в процессоре ресурсов / списков получения
    — Исправить неработающую ссылку для редактирования при щелчке по заголовку страницы в сетке.

    Коллекции 2.1.0
    ===================
    — Добавлена ​​возможность дублировать представление Коллекции
    — Обновлен макет для создания / обновления столбца представления.
    — Добавлен просмотр, обновление, удаление, дублирование, публикация элементов в контекстное меню детской сетки.
    — Добавлен дочерний шаблон по умолчанию, тип ресурса по умолчанию и возможность выбора типа ресурса в шаблоны коллекции.
    — Исправлена ​​кнопка просмотра
    — Исправлены сообщения журнала от плагина

    Коллекции 2.0,2
    ===================
    — Исправлены рендеры даты и времени

    Коллекции 2.0.1
    ===================
    — Исправлено сохранение контейнера коллекций в Revolution 2.2.x

    Коллекции 2.0.0
    ===================
    — Добавлены шаблоны коллекций
    — Добавлена ​​возможность создавать разные дочерние типы из сетки
    — Поддержка Revolution 2.3

    Коллекции 1.3.3
    ===================
    — Удалить вызов отладчика: X

    Коллекции 1.3.2
    ===================
    — Исправление для диалога подтверждения навигации
    — Исправлен выбор нескольких строк
    — Исправлена ​​проверка на Tagger

    Коллекции 1.3.1
    ===================
    — Выпуск с правильным номером версии

    Коллекции 1.3.0
    ===================
    — Поддержка Tagger в поле поиска на вкладке Children
    — Добавлена ​​возможность перетаскивать дочерний элемент в дерево ресурсов для смены родителя.
    — Обновлена ​​английская и немецкая лексика.

    Коллекции 1.2.0
    ===================
    — Добавлена ​​возможность поиска через созданное по полному имени
    — Добавлена ​​возможность поиска через созданное по имени пользователя
    — Исправлено переключение ребенка между двумя коллекциями
    — Исправлено переключение отличного родителя на Коллекции при перемещении последнего ребенка
    — Исправлено имя ребенка после создания дубликата
    — Добавлена ​​сортировка перетаскиванием по индексу меню.

    Коллекции 1.1.1
    ===================
    — # 20 Исправлено после повторного сохранения дочернего набора show_in_tree 1

    Коллекции 1.1.0
    ===================
    — # 9 Добавлена ​​кнопка дублирования
    — # 10 Добавлен значок коллекции в дерево ресурсов
    — # 11 Сделать сетку с отслеживанием состояния и добавить еще несколько столбцов (до очистки кеша сетка сохраняет отображаемые / скрытые столбцы и их порядок)
    — «Сборник» переименован в «Сборник».
    — # 7 Добавлен немецкий перевод (спасибо pepebe)
    — # 12 Добавлен чешский перевод
    — # 14 Добавлен голландский перевод (спасибо @mark_hamstra)
    — # 15 Добавлен французский перевод (спасибо @rtripault)
    — # 16 # 17 Добавлен русский перевод (спасибо vanchelo)
    — # 18 Исправлен конфликт show_in_tree

    Коллекции 1.0,0
    ===================
    — Публикуется в дополнениях MODX

    Коллекции 0.8.2
    ===================
    — Завершено переименование CollectionsContainer -> CollectionContainer.
    — Удалены вызовы журнала chromephp.

    Коллекции 0.8.1
    ===================
    — Исправлено отображение псевдонимов в дочерней сетке.

    Коллекции 0.8.0
    ===================
    — CollectionsContainer переименован в CollectionContainer.
    — Исправлено возвращение правильного количества детей в контейнере для сбора.

    Коллекции 0.7.0
    ===================
    — Добавлен обратный преобразователь, который переключит все контейнеры коллекций обратно на modDocument и установит для show_in_tree значение 1 для всех дочерних коллекций при удалении.
    — Добавлена ​​поддержка переключения class_key дескриптора из CollectionContainer и в CollectionContainer.

    Коллекции 0.6.0
    ===================
    — Исправлено правильное отображение контейнера коллекций под другим контейнером коллекций.
    — Исправлено правильное отображение обычных контейнеров с детьми под CRC.
    — Добавлен слушатель для события Before Empty Trash, чтобы скрыть ресурсы, которые находятся в контейнере коллекций и у которых не будет других дочерних элементов после очистки корзины.

    Коллекции 0.5.0
    ===================
    — Обновлен плагин для внедрения JS для обработки кнопки отмены на панели обновления ресурсов.

    Коллекции 0.4.0
    ===================
    — Добавлен плагин, который обрабатывает правильную установку параметра show_in_tree для ресурсов после создания нового ресурса или сортировки ресурсов.

    Коллекции 0.3.0
    ===================
    — Визуальные улучшения для сетки с детьми

    Коллекции 0.2.0
    ===================
    — Расширенная панель обновления ресурсов с новой вкладкой, которая содержит сетку с дочерними элементами

    Коллекции 0.1.0
    ===================
    — Первый выпуск.

    Использование pdoMenu для создания главной панели навигации Bootstrap 3

    Вызов Drop-in Snippet для использования с Bootstrap 3.

    Опубликовано
    09 мая, 2015 в 15:02:00