Задать вопрос

Modx revo, как сделать сортировку ресурсов при клике?

Недавно начал изучать modx, такой вопрос есть :
Есть вывод ресурсов на странице через PdoResourse
Есть тэг Select и 2 option: по дате, по алфавиту.
Как сделать чтобы при клике в Select на option , сортировка была той что нужна? прикрепляю скрины для наглядности.
Есть ли способ сделать это без самописных снипетов (не научился писать снипеты)?
Вывод ресурсов
[[pdoResources?
                      &parents=`[[*id]]`
                      &depth=`2`
                      &limit=`30`
                      &tpl=`article-tpl`
                      &includeTVs=`foto`
                      &includeContent=`1`
                      &where=`{"template:=":4}`
                      &sortby=`{'publishedon','DESC'}`
                    ]]

602ea0b1e5bc4613ab8552a4556deb93.png
  • Вопрос задан
  • 3090 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
ruslan_aleev
@ruslan_aleev
MODX с cat-Art.ru
Здравствуйте, без сниппета никак, т.к. pdoResources уже вывел на сайте ресурсы, исходя из параметра &sortby, и изменить параметр через select нельзя.
Вот пример как делается простая сортировка, там не сложно, все коды представлены с комментами - https://modx.ru/novosti-i-stati/article/216
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Realetive
@Realetive
MODX Ambassador России, самозванный БЭМ-евангелист
1) У вас всего два параметра сортировки, нет смысла прятать их в выпадающем списке — оформите их в виде ссылки.
2) Ссылки могут содержать GET-параметры, которыми вы можете «передать» в MODX, т. е. каждая ссылка ссылается на текущую страницу + параметр сортировки: <a href="[[~[[*id]]]]?sort="date">по дате</a>
3) Сам сниппет вызываете некешируемым, а в параметре сортировки, соответсвенно, «ловите» GET-параметр:
[[!pdoResources?
  …
  &sortby=`{ '[[!#GET.sort:is=`date`:then=`publishedon`:else=`pagetitle`]]' , 'DESC'}`
  …
]]

4) Если всё же выпадающий список и никак иначе — сделайте форму с sumbit на onchange и шлите нужный параметр POST'ом или GET'ом. В сниппете «отлавливаете» аналогично.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы