pdoPage+pdoResource, как определить в &tpl первую/последнюю запись на странице?

Вывожу на странице список ресурсов используя pdoPage+pdoResource.

Смысл такой, что &limit у меня должен быть четным и я должен оборачивать в результаты парами.
К примеру если у меня &limit=`12`, то у меня на каждой странице должно быть 6 пар, то есть 6 в которых будет по 2 результата. Как я понял, это можно сделать через &tplFirst, &tplLast, &tplOdd и т.п., но это кощунство, шаблон каждого результата достаточно велик, это 4 чанка на 99,9% одинаковых, отличия будут в отрытом/закрытом div. Если что-то надо подправить в шаблоне вывода, править придется во всех четырех!

По этому хотел вот узнать, может есть какие то плейсхолдеры, которые можно использовать в чанке-шаблоне? В принципе по [[+idx]] я могу понять четный или нет, но не могу понять, как в чанке определить, является ли данный шаблон первым или последним выводом на странице? Конечно если знать заранее &limit, можно высчитать…



Сделал так…

Дополнительный параметр &tplWrapper, в него поместил:
&tplWrapper=`@INLINE <div class="row">[[+output]]</div>`
Далее в чанке &tpl в самом низу сделал:
[[+num:input=`[[+idx]]`:mod:is=`0`:then=`</div><div class="row">`]]
В итоге получается что у меня весь вывод результата засовывается в:
<div class="row">...</div>
При этом, на каждом четном выводе происходит добавление
</div><div class="row">
, что по сути закрывает обертку результата (&tplWrapper) и открывает его заново.

Это вполне работает, разве что в конце результата образуется один лишний пустой
<div class="row"></div>
, потому что в случае вывода по 12 на страницу, 12-ый вывод как раз является четным, в конце вывода которого добавляется
</div><div class="row">
и потом сразу закрывается обертка (&tplWrapper) тегом
</div>
. Это не страшно!

Может быть кому то пригодится!
gloobus
27 ноября 2017, 19:52
modx.pro
2
1 362
0

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

Евгений Webinmd
28 ноября 2017, 15:41
0
в fenom есть такая штука как наследование
1) Создаете основной чанк и изменяемые места оборачиваете в блоки
{block 'topProduct'}<div class="111">{/block}
	/// тут одинаковый код
{block 'bottomProduct'}</div>{/block}

2) Создаете нужный чанк для odd last и прочих с таким содержимым
{extends 'tpl.productItem'}
{block 'topProduct'}<div class="2222">{/block}
{block 'bottomProduct'}</div>{/block}
Всё что в тегах блока будет заменено
описал примерно, посмотрите в документации, там вроде как были примеры
    gloobus
    28 ноября 2017, 16:17
    0
    Сделал так…

    Дополнительный параметр &tplWrapper, в него поместил:
    &tplWrapper=`@INLINE <div class="row">[[+output]]</div>`
    Далее в чанке &tpl в самом низу сделал:
    [[+num:input=`[[+idx]]`:mod:is=`0`:then=`</div><div class="row">`]]
    В итоге получается что у меня весь вывод результата засовывается в
    <div class="row">...</div>
    При этом, на каждом четном выводе происходит добавление
    </div><div class="row">
    , что по сути закрывает обертку результата (&tplWrapper) и открывает его заново.

    Это вполне работает, разве что в конце результата образуется один лишний пустой
    <div class="row"></div>
    , потому что в случае вывода по 12 на страницу, 12-ый вывод как раз является четным, в конце вывода которого добавляется
    </div><div class="row">
    и потом сразу закрывается обертка (&tplWrapper) тегом
    </div>
    . Это не страшно!

    Может быть кому то пригодится!
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      2