MODX. Блок следующая/предыдущая страница с использованием pdoNeighbors

MODX. Блок следующая/предыдущая страница с использованием pdoNeighbors

Как и с остальными сниппетами из компонента pdoTools, pdoNeighbors достаточно просто вызвать на странице.

Вывод блока с разными шаблонами и подключением изображения будет таким

Документация сниппета pdoNeighbors

pdoNeighbors

pdoNeighbors

Сниппет pdoNeighbors выводит предыдущие и следующие документы от указанного.

Умеет выводить по несколько соседей сразу, проверяет их статус (удалён, опубликован) и позволяет указать сортировку.

Вы можете выводить предыдущие/следующие документы по «menuindex», дате публикации или другому полю ресурса.

Параметры

Принимает все параметры pdoTools (за исключением чанков-шаблонов) и некоторые свои:

Параметр По умолчанию Описание &id Текущий документ Идентификатор ресурса, относительно которого выводятся соседи. &loop Да Показывает или отменяет показ записей в цикле &tplPrev см. ниже Чанк ссылки на предыдущий документ. &tplUp см. ниже Чанк ссылки на родительский документ. &tplNext см. ниже Чанк ссылки на следующий документ. &tplWrapper см. ниже Чанк-обёртка, для заворачивания результатов. Понимает плейсхолдеры: [[+left]] , [[+top]] , [[+right]] и [[+log]] . Не работает вместе с параметром &toSeparatePlaceholders. &toPlaceholder Если не пусто, сниппет сохранит все данные в плейсхолдер с этим именем, вместо вывода не экран. &showLog 0 Показывать дополнительную информацию о работе сниппета. Только для авторизованных в контекте «mgr».

Шаблоны Шаблон По умолчанию &tplPrev @INLINE <span ><a href="/[[+uri]]">&larr; [[+menutitle]]</a></span> &tplUp @INLINE <span >&uarr; <a href="/[[+uri]]">[[+menutitle]]</a></span> &tplNext @INLINE <span ><a href="/[[+uri]]">[[+menutitle]] &rarr;</a></span> &tplWrapper @INLINE <div >[[+prev]][[+up]][[+next]]</div>

Примеры

По умолчанию сниппет выводит соседей, как они есть в дереве ресурсов, то есть, ориентируется на «menuindex»:

По умолчанию, соседи выбираются от текущего документа, но можно указать и другой id:

Сниппет отлично подходит для вывода ссылок на соседние новости (их лучше сортировать по дате публикации):

Получение соседних товаров с выводом превью:

Общие параметры pdoTools

Общие параметры

Общие параметры

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

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

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

Название По умолчанию Описание &class modResource Класс получаемого объекта &parents Текущий ресурс Список родителей, через запятую, для поиска результатов. Если поставить 0 - выборка не ограничивается. Если id родителя начинается с дефиса, он и его потомки исключаются из выборки. &depth 10 Глубина поиска дочерних ресурсов от родителя. &resources Список ресурсов, через запятую, для вывода в результатах. Если id ресурса начинается с дефиса, этот ресурс исключается из выборки. &templates Список шаблонов, через запятую, для фильтрации результатов. Если id шаблона начинается с дефиса, ресурсы с ним исключается из выборки. &context Ограничение выборки по контексту ресурсов. &where Массив дополнительных параметров выборки, закодированный в JSON. &showHidden 0 Показывать ресурсы, скрытые в меню. &showUnpublished 0 Показывать неопубликованные ресурсы. &showDeleted 0 Показывать удалённые ресурсы. &hideContainers 0 Отключает вывод контейнеров, то есть, ресурсов с «isfolder = 1». &hideUnsearchable Отключает вывод спрятанных от поиска ресурсов. &select Список полей для выборки, через запятую. Можно указывать JSON строку с массивом, например {"modResource":"id,pagetitle,content"}. &leftJoin Аналог SQL оператора left join &rightJoin Аналог SQL оператора right join &innerJoin Аналог SQL оператора inner join &joinSequence innerJoin,leftJoin,rightJoin Порядок подключения таблиц, через зяпятую. &sortby pagetitle Любое поле ресурса для сортировки, включая ТВ параметр, если он указан в параметре &includeTVs. Можно указывать JSON строку с массивом нескольких полей. Для случайно сортировки укажите «RAND()» &sortdir ASC Направление сортировки: по убыванию или возрастанию. &groupby Указывает поле, по которому группируются результаты &having Используется, чтобы ограничить выборку сгруппированных строк с помощью условия, относящегося ко всей группе, заданной в &groupby &limit 0 Ограничение количества результатов выборки. Можно использовать «0». &offset 0 Пропуск результатов от начала. &first 1 Номер первой итерации вывода результатов. &last Автоматически, по формуле (total + first - 1) Номер последней итерации вывода результатов. &loadModels Список компонентов, через запятую, чьи модели нужно загрузить для построения запроса. Например: &loadModels=`ms2gallery,msearch2`. &tvFilters Список фильтров по ТВ, с разделителями AND и OR. Разделитель, указанный в параметре &tvFiltersOrDelimiter представляет логическое условие OR и по нему условия группируются в первую очередь. Внутри каждой группы вы можете задать список значений, разделив их &tvFiltersAndDelimiter. Поиск значений может проводиться в каком-то конкретном ТВ, если он указан «myTV==value», или в любом «value». Пример вызова: &tvFilters=`filter2==one,filter1==bar%||filter1==foo`. Обратите внимание: фильтрация использует оператор LIKE и знак «%» является метасимволом. И еще: Поиск идёт по значениям, которые физически находятся в БД, то есть, сюда не подставляются значения по умолчанию из настроек ТВ. &tvFiltersAndDelimiter "," Разделитель для условий AND в параметре &tvFilters. &tvFiltersOrDelimiter "||" Разделитель для условий OR в параметре &tvFilters. &sortbyTV Дополнительное поле, по которому нужно сортировать результаты. Может быть указано напрямую в параметре &sortby &sortdirTV Направление сортировки по дополнительному полю, указанному в &sortbyTV. Может быть указано напрямую в параметре &sortby &sortbyTVType Тип сортировки по ТВ параметру. Возможные варианты: string, integer, decimal и datetime. Если пусто, то ТВ будет отсортирован в зависимости от его типа: как текст, число или дата. &checkPermissions Укажите, какие разрешения нужно проверять у пользователя при выводе объектов. &disableConditions Отключает специфичные для класса modResource параметры выборки. &fenomModifiers список сниппетов-модификаторов через запятую, для подключения в Fenom. Подробности в соответствующем разделе.

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

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

Название Описание &tpl Имя чанка для оформления ресурса. Если не указан, то содержимое полей ресурса будет распечатано на экран. &tplFirst Имя чанка для первого ресурса в результатах. &tplLast Имя чанка для последнего ресурса в результатах. &tplOdd Имя чанка для каждого чётного ресурса (хоть "odd" значит "нечётный", работает для чётных ресурсов). &tpl_N Имя чанка для N-го ресурса, например, &tpl_4=`tpl4th` установит шаблон для 4-го ресурса. &tpl_nN Имя чанка для каждого N-го ресурса, например, &tpl_n4=`tplEvery4th` будет применено к каждому 4-му ресурсу. &tplCondition Поле ресурса, из которого будет получено значение для выбора чанка по условию в &conditionalTpls. &tplOperator Необязательный оператор для проведения сравнения поля ресурса в &tplCondition с массивом значений и чанков в &conditionalTpls. &conditionalTpls JSON строка с массивом, у которого в ключах указано то, с чем будет сравниваться &tplCondition, а в значениях - чанки, которые будут использованы для вывода, если сравнение будет успешно. Оператор сравнения указывается в &tplOperator. Для операторов типа isempty можно использовать массив без ключей. &outputSeparator Необязательная строка для разделения результатов работы.

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

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

Название По умолчанию Описание &return chunks Определяет способ вывода результатов. См. ниже. &fastMode 0 Быстрый режим обработки чанков. Все необработанные теги (условия, сниппеты и т.п.) будут вырезаны. &nestedChunkPrefix pdotools_ Префикс для "быстрых плейсхолдеров", включаемых параметром &fastMode &idx Вы можете указать стартовый номер итерации вывода результатов. &totalVar total Имя плейсхолдера для сохранения общего количества результатов. &includeContent 0 Включаем поле «content» в выборку. &includeTVs Список ТВ параметров для выборки, через запятую. Например: «action,time» дадут плейсхолдеры [[+action]] и [[+time]] . &includeTVList Псевдоним &includeTVs &prepareTVs 1 Список ТВ параметров, с файлами из источников медиа, для которых нужно сгенерировать полные пути. Если установить в «1», будут подготовлены все ТВ, указанные в &includeTVs. &processTVs Список ТВ параметров, которые нужно обработать и вывести согласно их настроек в менеджере системы. Если установить в «1», будут обработаны все ТВ, указанные в &includeTVs. Замедляет работу. &tvPrefix tv. у pdoResources и пусто у других сниппетов Префикс для ТВ параметров. &prepareSnippet 1 Указывает сниппет, который принимает данные перед выводом в чанк и может их менять или добавлять &decodeJSON Разбирает поля типа JSON вместо вывода в виде строки &scheme -1 Схема формирования url, передаётся в modX::makeUrl(), поэтому возможные варианты нужно смотреть здесь. Особый тип uri подставляет значение uri ресурса, без запуска функции. &useWeblinkUrl Генерировать ссылку с учетом класса ресурса. &toSeparatePlaceholders Если вы укажете слово в этом параметре, то ВСЕ результаты будут выставлены в разные плейсхолдеры, начинающиеся с этого слова и заканчивающиеся порядковым номером строки, от нуля. Например, указав в параметре «myPl», вы получите плейсхолдеры [[+myPl0]] , [[+myPl1]] и т.д. &additionalPlaceholders Устанавливает дополнительные плейсхолдеры &cache_key Значение системной настройки cache_resource_key для ресурсов (по умолчанию resource) или default Ключ кеширования &cache_handler Значение системной настройки cache_resource_handler или xPDOFileCache Обработчик кеша &cacheTime Значение системной настройки cache_resource_expires или 0 (вечный) Время жизни кеша

Способы вызова чанков

Все чанки могут иметь один из следующих префиксов:

@INLINE или @CODE. В качестве шаблона будет использован код после этого префикса.

В INLINE чанках нельзя указывать сниппеты, другие чанки или фильтры вывода через обычные теги, потому что так парсер MODX обработает их в первую очередь, и сниппет получит совсем не то, что вы хотели.

Поэтому для INLINE чанков предусмотрена замена [[+]] на {{+}} - такие теги MODX пропускает, а pdoTools при работае конвертирует их как нужно. Конечно, вы всё равно можете использовать теги MODX, если вам нужно, чтобы в чанк попала уже обработанная информация, например:

@FILE. Вместо чанка из базы данных используется содержимое файла. Путь до файла указывается в систеной настройке pdotools_elements_path. Имя файла должно быть с расширением .tpl или .html.

@TEMPLATE. Указывается идентификатор или имя шаблона. Если пусто - для каждого ресурса будет использован его собственный шаблон.

@CHUNK. Аналогично простому указанию имени чанка, оставлено для совместимости со сторонними сниппетами.

Подробнее про возможности pdoParser можно прочитать в соответствующем разделе.

Возвращаемые значения

pdoTools умеет возвращать данные в разном виде, в зависимости от параметр &return . В основном это используют сами сниппеты для внутренних нужд, но вы можете указывать &return в pdoResources:

  • chunks - оформленные чанки, по умолчанию.
  • sql - подготовленный сырой SQL, полезно для отладки. Сам запрос не выполняется, только выводится на экран.
  • data - готовый массив данных. Из-за особенностей работы сниппетов MODX этот вариант имеет смысл использовать только при вызове pdoFetch::run() напрямую из своего сниппета, в противном случае вы получите только строку "Array".
  • ids - возвращает только идентификаторы документов, через запятую. Удобно для подстановки в качестве параметра другим сниппетам. Параметр &returnIds использует именно этот тип.
  • json - возврат массива данных JSON строкой.
  • serialize - возврат массива данных сериализованной строкой. Иногда, по непонятным причинам, может вызвать нехватку памяти. Лучше использовать json .

Позвольте представиться, меня зовут Марина. Более 10 лет я занимаюсь обслуживанием сайтов и развитием интернет проектов. Если вы хотите избавиться от хлопот связанных с созданием и поддержкой сайта, тогда вы попали по адресу. При работе с сайтами я предоставляю качественные услуги, ориентируясь на ваши индивидуальные потребности. Для связи со мной воспользуйтесь формой обратной связи .

📎📎📎📎📎📎📎📎📎📎