К содержанию

Определение уровня документа

Захотел сделать разный вывод результатов pdoresources в зависимости от уровня вложенности документа. То есть, если ресурс 3 уровня (Рубрика/Подрубрика/Документ), то в шаблоне про него выводить pagetitle родителя и pagetitle собственно самого документа. А если ресурс 2-го уровня (Рубрика/Документ), чтоб выводился только pagetitle документа.
Как?
Алексей Яковлев
Алексей Яковлев
02 апреля 2015, 14:27
modx.pro
2 812
Реклама

Комментарии: 8

Павел Левин
Павел Левин Проверенный
02 апреля 2015, 18:07
    Алексей Яковлев
    02 апреля 2015, 18:42
    спасибо, попробую там поспрашивать
    Алексей Яковлев
    02 апреля 2015, 20:01
    В идеале хотелось бы что-то вроде определителя уровня [[+id]]. Не знаю только, как можно было бы оформить эту логику в вызове внутри шаблона. Типа, if уровень вложенности +id = 3, то пишем pagetitle родителя и pagetitle +id, else (то есть в моем случае уровень вложенности +id = 2) пишем только pagetitle +id.?
      Алексей Яковлев
      03 апреля 2015, 01:44
      в итоге со своей задачей разобрался двойной проверкой, а именно 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]]`]]
      вычурно, но авось кому пригодится.
        Алексей Ерохин
        Алексей Ерохин Старожил
        03 апреля 2015, 13:45
        Может проще разделить по шаблонам?
          Алексей Яковлев
          06 апреля 2015, 01:31
          не подходит, если шаблоны на одном уровне должны быть (или уже так вышло) разные…
        Сергей Шлоков
        Сергей Шлоков Эксперт
        03 апреля 2015, 18:54
        Для описанной выше задачи (3-уровня, 3-й уровень — документ) можно сделать все проще.
        Алгоритм следующий:
        1-й уровень — isfolder=1, parent=0
        2-й уровень — isflolder=1, parent !=0
        3-й уровень — isfolder=0.
        Ну а составить правильный фильтр дело техники.
        П.С. Я думаю, это решение будет пошустрее, чем предложенное выше.
          Алексей Яковлев
          06 апреля 2015, 01:28
          если быстрее, надо попробовать, вроде похоже на то, что нужно. А как это должно выглядеть семантически, в шаблоне? а то боюсь зависнуть в пробах и ошибках )
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          8