Пагинация в modx Revolution с разными лимитами страниц для разных страниц

Я работал с getResources и getPages для разбиения на страницы. Теперь у меня есть требование, чтобы на первой странице было 6 дочерних ресурсов, а на последующих страницах было по 9 дочерних ресурсов. Я пытался манипулировать параметром limit, но не получил результатов. Есть ли способ сделать это с помощью getResources и getPages? Любой другой метод, который также может быть полезен.

Заранее спасибо.


person Sandip Agarwal    schedule 13.09.2011    source источник


Ответы (3)


&pageOneLimit можно использовать для установки другого лимита страниц для первой страницы. он добавлен в версию страницы получения 1.2.2-pl., так что обновите его, используйте его.

[[!getPage? &element=getResources &limit=9 &pageOneLimit=6 &tpl=whatever ]]
person Satya Teja    schedule 10.01.2012
comment
Не могли бы вы предоставить мне ссылку на детали выше. - person Sandip Agarwal; 11.01.2012

вы можете передать параметр через GET в URL-ссылке на страницу, чтобы пользователь мог выбирать между просмотром 10, 20 или всех результатов.

<a href="[[~[[*id]]? &limit=`10`]]">see 10 per page</a> | 
<a href="[[~[[*id]]? &limit=`20`]]">see 20 per page</a> |
<a href="[[~[[*id]]? &limit=`0`]]">see all</a>

Где [[*id]] — это страница, на которой вы находитесь и которая содержит вызов сниппета «getPage».

person JulieB    schedule 21.03.2012

зайдите на rtfm.modx.com и найдите «IF» под плагинами — это в основном оператор if для тегов modx. Я бы подумал, что, возможно, вы могли бы найти какое-то условие на своих страницах, на которое вы могли бы установить ограничение getresources. в принципе :

[[!getResources? &limit=`[[!if? &subject=`[[+currentpage]]` &operator=`!=` &operand=`1` then=`6` &else=`9`]]` &tpl=`whatever`]]

Вам нужно будет проверить синтаксис — я только что выкинул это из головы, а также вам нужно будет выяснить, как разбивка на страницы определяет, на какой странице она находится, чтобы получить правильную переменную для темы — но я думаю, что вы должны уметь так делать.

-шон

ОБНОВЛЕНИЕ

Вероятно, вы могли бы сделать это так:

[[!получить страницу? &element=getResources &limit=[[!if? &subject=[[+page]] &operator=!=_5

[[!getResources? &limit=`[[!if? &subject=`[[+currentpage]]` &operator=`!=` &operand=`1` then=`6` &else=`9`]]` &tpl=`whatever`]]
6 &then=7_9 ]] &tpl=whatever ]]

Однако getPage также имеет атрибут limit, и я понятия не имею, как он различает свои атрибуты и атрибуты своих элементов. Документы здесь кажутся запутанными. Переменная +page используется по умолчанию, как и в документах, и похоже, что вы можете изменить ее с помощью атрибута pageVarkey. Опять же, не пришло мне в голову, проверьте синтаксис и документы, прежде чем пытаться.

person Sean Kimball    schedule 13.09.2011
comment
Спасибо, Шон. Это не дает мне результатов. Но я все еще верю, что плагин IF каким-то образом сработает (я также установил его и попробовал ту часть кода, которой вы руководствовались). Не могли бы вы также подсказать мне, как использовать его вместе с getPage и getResources? - person Sandip Agarwal; 14.09.2011
comment
Привет, Шон. Я пробовал точно так же, как вы сказали в своем обновлении. Но атрибут limit принимает постоянное значение, а не условное значение, как мы оба пытались. Я просмотрел фрагмент кода getPage. Он фактически вычисляет общее количество записей, общее количество страниц и назначает значение предельного количества страниц, а затем для страниц. Таким образом, он не принимает эффективное значение условного оператора. Существуют ли какие-либо варианты вышеуказанного метода или любой другой способ, который я могу попробовать? - person Sandip Agarwal; 15.09.2011