Тут возникла проблема: как получить парент парента (parent parent'a) или дедушку ресурса или прадедушку. Ну и разумеется решить эту задачу без всяких сниппетов. Оказалось это можно решить довольно просто. Первое это ставим PDOTools и вводим такой код:
[ [#[ [#[ [*id]].parent]].parent]]
Это и есть наш дедушка. Точнее его id, ну а с ним то уж можно делать все что угодно.
Если нужно не id а поля там всякие есть еще один вариант:
[ [pdofield? &top=`2`]]
где &top Выбирает родителя указанного &id на уровне &top. Уровень отсчитывается от начала контекста. Ниже остальные параметры pdofield:
Параметр | По умолчанию | Описание |
---|---|---|
&id | Текущий документ | Идентификатор ресурса. |
&field | pagetitle | Поле ресурса. |
&top | Выбирает родителя указанного &id на уровне &top. | |
&topLevel | Выбирает родителя указанного &id на уровне &topLevel от корня контекста. | |
&default | Указывает поле ресурса, которое вернётся, если &field окажется пуст. Более быстрый аналог фильтра :default= | |
&output | Указывает строку, которая вернётся, если и &default, и &field оказались пусты. | |
&toPlaceholder | Если не пусто, сниппет сохранит все данные в плейсхолдер с этим именем, вместо вывода не экран. |
Ну и еще один пример использования:
[ [pdoField? &id=`[ [*id]]` &field=`longtitle` &top=`2` ]]
Роман:
13 Jan 2019г. в 23:06
День добрый. Подскажите пожалуйста, как получить список всех родителей, если товар находиться в нескольких рубриках?
Администратор:
08 May 2019г. в 12:04
$parentIds = $modx->getParentIds(23); - получить список всех родителей.