Алексей Склейнов Опубликовано 1 ноября, 2016 Жалоба Поделиться Опубликовано 1 ноября, 2016 Народ, подскажите лаконичное решение для фильтра товаров не принадлежащих ни к одной категории в админке. Начал с этого: <!-- Фильтры --> <ul id="all_filter"> <li {if !$filter}class="selected"{/if}><a href="{url brand_id=null category_id=null keyword=null page=null filter=null}">Все товары</a></li> <li {if $filter=='nosorting'}class="selected"{/if}><a href="{url keyword=null brand_id=null category_id=null page=null filter='nosorting'}">Не сортированные</a></li> <li {if $filter=='featured'}class="selected"{/if}><a href="{url keyword=null brand_id=null category_id=null page=null filter='featured'}">Рекомендуемые</a></li> <li {if $filter=='discounted'}class="selected"{/if}><a href="{url keyword=null brand_id=null category_id=null page=null filter='discounted'}">Со скидкой</a></li> <li {if $filter=='visible'}class="selected"{/if}><a href="{url keyword=null brand_id=null category_id=null page=null filter='visible'}">Активные</a></li> <li {if $filter=='hidden'}class="selected"{/if}><a href="{url keyword=null brand_id=null category_id=null page=null filter='hidden'}">Неактивные</a></li> <li {if $filter=='outofstock'}class="selected"{/if}><a href="{url keyword=null brand_id=null category_id=null page=null filter='outofstock'}">Отсутствующие</a></li> </ul> <!-- Фильтры --> Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 1 ноября, 2016 Жалоба Поделиться Опубликовано 1 ноября, 2016 Смотря что иметь в виду под "лаконичное"...Если хотите к своему коду добавить одну волшебную строку и все заработает, то вряд ли так получится.Реально надо смотреть, как работает, например, фильтрация Со скидкой, и действовать по аналогии - аккуратненько, во всех файлах, которых это касается. А пока у Вас только вывеска нарисована... Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 1 ноября, 2016 Жалоба Поделиться Опубликовано 1 ноября, 2016 Шаблон в последнюю очередь, начните с api/Products.php, simpla/ProductsAdmin.php, добавьте доп. сортировку. Цитата Ссылка на сообщение Поделиться на другие сайты
Алексей Склейнов Опубликовано 1 ноября, 2016 Автор Жалоба Поделиться Опубликовано 1 ноября, 2016 Шаблон в последнюю очередь, начните с api/Products.php, simpla/ProductsAdmin.php, добавьте доп. сортировку.Спасибо, я надеялся что можно использовать существующие объекты, каким то для меня не знакомым образом (магия симплы)))), что бы не создавать новые. Добро, пойдем в этом направлении. Цитата Ссылка на сообщение Поделиться на другие сайты
Алексей Склейнов Опубликовано 1 ноября, 2016 Автор Жалоба Поделиться Опубликовано 1 ноября, 2016 В общем выложу свое решение, раз тема поднята была. if(!empty($filter['nosorting'])) $nosorting_filter = $this->db->placehold('NOT IN (SELECT 1 FROM __products_categories pc WHERE pc.product_id = p.id) = ?', intval($filter['nosorting'])); это запрос к БД по фильтру отсутствующих товаров в категориях (то есть - товаров не принадлежащих ни к одной категории)остальное делается по аналогии как выше заметил Kors.Собственно для чего нужен такой фильтр? - Выборка товаров нуждающихся в сортировке по категориям. Цитата Ссылка на сообщение Поделиться на другие сайты
megauser Опубликовано 23 марта, 2023 Жалоба Поделиться Опубликовано 23 марта, 2023 В 01.11.2016 в 19:03, Алексей Склейнов сказал: В общем выложу свое решение, раз тема поднята была. if(!empty($filter['nosorting'])) $nosorting_filter = $this->db->placehold('NOT IN (SELECT 1 FROM __products_categories pc WHERE pc.product_id = p.id) = ?', intval($filter['nosorting'])); это запрос к БД по фильтру отсутствующих товаров в категориях (то есть - товаров не принадлежащих ни к одной категории) остальное делается по аналогии как выше заметил Kors. Собственно для чего нужен такой фильтр? - Выборка товаров нуждающихся в сортировке по категориям. А можно такое сделать для товаров где вариантов больше одного? Чтоб в админке можно было посмотреть сколько товаров с вариантами. Цитата Ссылка на сообщение Поделиться на другие сайты
megauser Опубликовано 23 марта, 2023 Жалоба Поделиться Опубликовано 23 марта, 2023 if(isset($filter['visible_outofstock'])) $visible_outofstock_filter = $this->db->placehold('AND p.visible=1 AND (SELECT count(*)>0 FROM __variants pv WHERE pv.product_id=p.id AND pv.price>0 AND (pv.stock IS NULL OR pv.stock>0) LIMIT 1) = ?', intval($filter['visible_outofstock'])); if(isset($filter['modification'])) $modification_filter = $this->db->placehold('AND p.visible=1 AND (SELECT COUNT(*) FROM __variants pv WHERE pv.product_id=p.id AND pv.stock=0) > ?', intval($filter['modification'])); Может кому пригодится. 1 фильтр это товары которые активные и которые не в наличии. ( в параметр фильтра передаем 0 ) 2 фильтр это товары которые активны, не в наличии и имеют модификации. (в параметр фильтра передаем 1) Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.