[РЕШЕНО] Многоуровневая сортировка pdoResources
Добрый день!
Подскажите в какую сторону мыслить.
Имеется каталог товаров (генераторов). Необходимо настроить многоуровневую сортировку.
Все товары сортируются в первую очередь по мощности (TV поле) в порядке возрастания, в случае, если у двух товаров мощность одинаковая, то сначала должны строго выводится товары марки А, затем товары марки Б, а затем уже все остальные (марки так же прописываются в TV полях).
Каким образом это можно реализовать?
Подскажите в какую сторону мыслить.
Имеется каталог товаров (генераторов). Необходимо настроить многоуровневую сортировку.
Все товары сортируются в первую очередь по мощности (TV поле) в порядке возрастания, в случае, если у двух товаров мощность одинаковая, то сначала должны строго выводится товары марки А, затем товары марки Б, а затем уже все остальные (марки так же прописываются в TV полях).
Каким образом это можно реализовать?
Комментарии: 19
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Если здесь имеется ввиду что-то иное, вроде того, что порядок сортировки фирм должен где-то задаваться вручную, то это стоит упомянуть в вопросе.
2) При добавлении/редактировании ресурса в ТВ типа «Список (одиночный выбор)» выбирать нужную фирму.
3) В ТВ, на вкладке «Параметры ввода», помимо типа «Список (одиночный выбор)» также необходимо в поле «Возможные значения» указать PHP запрос выборки списка фирм из дерева ресурсов. PHP запрос там указывается таким образом:
Только вместо return '...'; подставляем свои значения фирм, полученные путём выборки из дерева ресурсов.
4) Сделать запрос с Join-ами, который выберет список фирм из дерева ресурсов, приджоинит ТВ value, соответствующее значению названия фирмы, а также приджоинит ресурс, узнав его id из таблицы значения ТВ. Тогда можно будет отсортировать так, как нужно.
Не уверен, что порядок джоинов верный, возможно можно сделать правильнее, надо на практике проверять.
Ну, тут я думаю разобраться не сложно, как сделать проверку нужной подкатегории и подстановку необходимого вызова сниппета. Вообще, советую использовать Fenom для таких целей, т.к. проверку будет сделать очень просто.
Ну или по разным шаблонам, в крайнем случае, раскидать.
Хоть опыта построения Join запросов у меня мало, но основная суть вроде бы ясна — в итоге мы получим список фирм с соответствующими им ресурсами, верно?
А вот как это потом отсортировать в нужном порядке мне непонятно :(
Основная суть подхода заключается в назначении флагов приоритетности для нужных нам двигателей. Затем производим сортировку многомерного массива по двум полям. И в конце просто скармливаем полученный список id ресурсов сниппету.
Еще один осложняющий момент — подобная сортировка нужно только в одной подкатегории каталога, в остальных не нужно. Таково желание заказчика…