Определение уровня документа
Захотел сделать разный вывод результатов pdoresources в зависимости от уровня вложенности документа. То есть, если ресурс 3 уровня (Рубрика/Подрубрика/Документ), то в шаблоне про него выводить pagetitle родителя и pagetitle собственно самого документа. А если ресурс 2-го уровня (Рубрика/Документ), чтоб выводился только pagetitle документа.
Как?
Как?
Комментарии: 8
спасибо, попробую там поспрашивать
В идеале хотелось бы что-то вроде определителя уровня [[+id]]. Не знаю только, как можно было бы оформить эту логику в вызове внутри шаблона. Типа, if уровень вложенности +id = 3, то пишем pagetitle родителя и pagetitle +id, else (то есть в моем случае уровень вложенности +id = 2) пишем только pagetitle +id.?
в итоге со своей задачей разобрался двойной проверкой, а именно 1) является ли родитель контейнером, и если да то 2) совпадает ли его id с id родителя текущего документа, то есть уровень вложенности документа 2 (а не 3).
вывод в шаблоне выглядит так:
вывод в шаблоне выглядит так:
[[+isfolder:is=`0`:then=`[[+parent:is=`[[+id:pdoField=`{"field":"id", "top":2}`]]`:then=`[[+pagetitle]]`:else=`[[!pdoField? &id=`[[+parent]]` &field=`pagetitle`]]. [[+pagetitle]]`]]`:else=`[[+pagetitle]]`]]
вычурно, но авось кому пригодится.
Может проще разделить по шаблонам?
не подходит, если шаблоны на одном уровне должны быть (или уже так вышло) разные…
Для описанной выше задачи (3-уровня, 3-й уровень — документ) можно сделать все проще.
Алгоритм следующий:
1-й уровень — isfolder=1, parent=0
2-й уровень — isflolder=1, parent !=0
3-й уровень — isfolder=0.
Ну а составить правильный фильтр дело техники.
П.С. Я думаю, это решение будет пошустрее, чем предложенное выше.
Алгоритм следующий:
1-й уровень — isfolder=1, parent=0
2-й уровень — isflolder=1, parent !=0
3-й уровень — isfolder=0.
Ну а составить правильный фильтр дело техники.
П.С. Я думаю, это решение будет пошустрее, чем предложенное выше.
если быстрее, надо попробовать, вроде похоже на то, что нужно. А как это должно выглядеть семантически, в шаблоне? а то боюсь зависнуть в пробах и ошибках )
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.