pdoPage+pdoResource, как определить в &tpl первую/последнюю запись на странице?
Вывожу на странице список ресурсов используя pdoPage+pdoResource.
Смысл такой, что &limit у меня должен быть четным и я должен оборачивать в результаты парами.
К примеру если у меня &limit=`12`, то у меня на каждой странице должно быть 6 пар, то есть 6 в которых будет по 2 результата. Как я понял, это можно сделать через &tplFirst, &tplLast, &tplOdd и т.п., но это кощунство, шаблон каждого результата достаточно велик, это 4 чанка на 99,9% одинаковых, отличия будут в отрытом/закрытом div. Если что-то надо подправить в шаблоне вывода, править придется во всех четырех!
По этому хотел вот узнать, может есть какие то плейсхолдеры, которые можно использовать в чанке-шаблоне? В принципе по [[+idx]] я могу понять четный или нет, но не могу понять, как в чанке определить, является ли данный шаблон первым или последним выводом на странице? Конечно если знать заранее &limit, можно высчитать…
Сделал так…
Дополнительный параметр &tplWrapper, в него поместил:
Это вполне работает, разве что в конце результата образуется один лишний пустой
Может быть кому то пригодится!
Смысл такой, что &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>
. Это не страшно!Может быть кому то пригодится!
Комментарии: 2
в fenom есть такая штука как наследование
1) Создаете основной чанк и изменяемые места оборачиваете в блоки
2) Создаете нужный чанк для odd last и прочих с таким содержимым
описал примерно, посмотрите в документации, там вроде как были примеры
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}
Всё что в тегах блока будет замененоописал примерно, посмотрите в документации, там вроде как были примеры
Сделал так…
Дополнительный параметр &tplWrapper, в него поместил:
Это вполне работает, разве что в конце результата образуется один лишний пустой
Может быть кому то пригодится!
Дополнительный параметр &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>
. Это не страшно!Может быть кому то пригодится!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.