[msProducts] Сортировка товаров по двум полям
Как-то появилась задача сделать сортировку товаров по двум полям. Первое поле всегда одно и то же, а второе — в зависимости от фильтра. К сожалению, завести это дело через стандартные средства pdoTools или сниппет msProducts не удалось, поэтому пришлось немного подправить сниппет msProducts, о чём и поведаю вам.
Итак, создайте копию сниппета msProduct и назовите его, к примеру, myMsProduct. Теперь открываем новый сниппет myMsProduct, находим следующий комментарий:
и строкой выше добавляем такой код:
Вот и всё. Внедрение, конечно, грубое, но рабочее. Теперь можем вызвать сниппет с новым параметром sortAlways, вбив поле и направление, по которому будет всегда производится сортировка:
Хотелось бы видеть, конечно, такую возможность в стандартном наборе miniShop2, но, возможно, задача является специфичной и мало кто с ней сталкивался.
P.S. Сортировать, в теории, можно и по трём полям и более. Но это я не проверял уже.
Итак, создайте копию сниппета msProduct и назовите его, к примеру, myMsProduct. Теперь открываем новый сниппет myMsProduct, находим следующий комментарий:
// Default parametersи строкой выше добавляем такой код:
// Add sort always parameter
if ( isset($scriptProperties['sortAlways']) )
$scriptProperties['sortby'] = $scriptProperties['sortAlways'] . ', ' . $scriptProperties['sortby'];Вот и всё. Внедрение, конечно, грубое, но рабочее. Теперь можем вызвать сниппет с новым параметром sortAlways, вбив поле и направление, по которому будет всегда производится сортировка:
[[!myMsProduct?
&sortAlways = `Data.popular DESC`
&sortby = `Data.price`
&sortdir = `ASC`
]]Или использовать это при вызове mFilter:[[!mFilter?
&snippet=`myMsProducts`
&sortAlways=`Data.popular DESC`
]]Хотелось бы видеть, конечно, такую возможность в стандартном наборе miniShop2, но, возможно, задача является специфичной и мало кто с ней сталкивался.
P.S. Сортировать, в теории, можно и по трём полям и более. Но это я не проверял уже.
Комментарии: 10
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Было для обычных ресурсов
Популярные товары всегда сверху, и сортируем их или по цене, или по дате
подскажите пожалуйста
where не отрабатывает
Если явно указать цену, то работает
лог
получается плейсхолдер не передается или не обрабатывается pdoPage
как лучше поступить в данном случае?
т.к. [[+price]] предоставляется в виде «22 380,79», а в &where надо передавать либо int либо float
написал вот такой сниппет:
теперь так: