getPage + getResources - фильтрация вывода
Есть каталог недвижимости. Каталог фильтруется по нескольким критериям, вывод с помощью getPage + getResources. Параметры передаются в tvFilters из формы фильтра через POST. Соответственно после применения фильтра, сниппет возвращает плейсхолдер, что-то типа
propertyCost>=1000000,propertyCost<=2000000,propertyCant==Женева,propertySq>=100,propertySq<=200,propertyRooms==2
, который подставляется в tvFilters. Вывод работает корректно только для первой страницы, при переходе на другую страницу естественно получаем пустые значения POST и вывод не фильтруется. Подскажите, пожалуйста, как лучше в данном случае организовать фильтрацию вывода, чтобы корректно работала постраничная разбивка? Комментарии: 7
Результат поста запихивать в $_SESSION[«filter»] к примеру, и пользоватся им if (isset($_SESSION[«filter»])) в вызов getPage пихать ее. Не забуудьте в конце сессию подчистить, а то будит таскать все время 1 ую
Видимо придется в сессию сохранять… Спасибо, Николай!
а еще есть вот такая вот штука modx.com/extras/package/getproducts подозреваю что она какраз вам вместо гет ресурса подойдет
хотя 1 хрен для гет пейджа, надо сессию таскать.
Если параметры фильтра передавать через $_GET, то getPage их бережно сохранит.
Это со всех сторон правильнее, и для поисковых машин и для передачи ссылок на результаты поиска людям.
Это со всех сторон правильнее, и для поисковых машин и для передачи ссылок на результаты поиска людям.
Уже сделал все через сессию. Думал, что GET запросы не будут передаваться при постраничной навигации, поэтому даже не попробовал этот вариант. Спасибо, за совет.
Богдан подскажите, как передать значения формы:
<form action="[[~[[*id]]]]" method="get">
<select>
<option>2000</option>
<option>2500</option>
</select>
<input type="submit" value="Подобрать" />
</form>
в tvFilters вывода getResources:[[!getResources? &showHidden=`1` &tpl=`вывод-объекты` &includeContent=`1` &includeTVs=`1` &processTVs=`1` &parents=`2` &tvFilters=`???`]]
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.