Добавить хук products_collection.filter На рассмотрении

75

Раз через гит не получается добавить хук, выношу вопрос на голосование.

Нужен хук для фильтрации любой коллекции товаров точно так же, как это сделано с заказами.

Реализация этого хука есть в Github https://github.com/webasyst/shop-script/pull/214 (прим. для неразработчиков: ссылка будет "битой", если у вас нет доступа).


Применения хука

Не буду говорить, что "это нужно каждому интернет-магазину!!!", но ниже примеры, с которыми лично сталкивался. Думаю, что список может быть дополнен.


1. Фильтрация товаров только в наличии.

Потребность, например вот https://support.webasyst.ru/18793/pravilnye-filtry... но также было и в других темах.

С этим хуком можно учитывать наличие на уровне отдельных артикулов товара.

У меня есть готовое обновление Smart Filters, которое добавит нужную функциональность с учётом этого хука.


2. Произвольное исключение товаров из всех списков на определённой витрине.

Реальный пример, сделанный тоже с этим хуком - фильтрация Outlet товаров по регионам. Каждый товар отображается на витрине/в поиске/в категории только если покупатель просматривает сайт из региона, в который этот товар может быть доставлен.


Как частный случай такого исключения - исключение товаров из подкатегории категории в родительской категории.

Т.е. есть категория со включённой опцией "Включить товары из подкатегорий", но возникают ситуации, когда нужно "Включить товары не из всех подкатегорий"... Сейчас это можно сделать только вручную.

19 комментариев

  • +2
    Eugen Nichikov Eugen Nichikov 30 мая 2018 10:27 #

    Сделал свой фильтр по маркам и моделям без использования множественных характеристик. Тоже с этим хуком.

  • +2
    Eugen Nichikov Eugen Nichikov 19 июня 2018 11:43 #

    Ещё пример использования.

    Необходимо сделать так, чтобы товары, которых нет в наличии, не выводились [только] в эти блоки:
    - Перекрестные продажи (Cross-selling)
    - Схожие и альтернативные товары (Upselling)
  • +1
    CATAHA666 CATAHA666 12 апреля 2018 16:11 #

    Да, очень нужно сие, особенно для магазинов с десятками тысяч товаров, как в моём случае.

  • +1
    Pill Pill 19 апреля 2018 15:32 #

    Это нужно всем

    • +2
      Eugen Nichikov Eugen Nichikov 19 апреля 2018 15:55 #

      Не так уж и всем, но сегодня придумал ещё одну хитрую сортировку товаров, которую тоже мог бы с хуком сделать :)

    • +1
      8746005@mail.ru 8746005@mail.ru 11 мая 2018 10:27 #

      UP. Проблема актулаьная. Когда планируется реализация?

    • +1
      Юлия Богемская Юлия Богемская 3 июля 2018 17:56 #

      Очень нужна фильтрация по наличию. У меня два сайта детской одежды, стоят фильтры выбор по размеру, клиент выбирает а ему сайт вываливает кучу товара и только зайдя в карточки товара, кликнув на нужный размер можно увидеть доступно к покупке или нет. В мобильный версиях это вообще треш.

      Просьба разработчикам подумать о столь нужном фильтре и как можно быстрее его внедрить.

    • +1
      Dmitriy55 Dmitriy55 17 июля 2018 11:18 #

      Подтверждаю, нет никакого смысла в блоке Схожие и альтернативные товары (Upselling) выводить товары, которых нет в наличии. Это только вредит сайту.

    • 0
      EnsoStudio EnsoStudio 16 апреля 2018 07:22 #

      Ну или хотя бы перенести хук product_collection чтобы он мог решать и эту задачу. https://github.com/webasyst/shop-script/pull/258

      • 0
        Eugen Nichikov Eugen Nichikov 16 апреля 2018 10:59 #

        Лично мне не очень нравитсяя идея менять уже существующие хуки, т.к. они уже используются в плагинах.

        Да и по описанию product_collection служит для создания новых коллекций, а не для изменения существующих.

        • +1
          EnsoStudio EnsoStudio 16 апреля 2018 13:37 #
          Лично мне не очень нравитсяя идея менять уже существующие хуки, т.к. они уже используются в плагинах.

          плагины как работали так и будут работать - вначале смотрите код, а потом пишите.

          служит для создания новых коллекций, а не для изменения существующих.

          формирование != создание, я вообще слабо понимаю зачем он нужен при создании коллекции - объект и так доступен, а каких-то доп.возможностей хук не дает.

          • +1
            Eugen Nichikov Eugen Nichikov 16 апреля 2018 14:25 #

            Что-то у тебя день не задался, коллега :) проблемы с модерацией? Это пройдёт.

            а каких-то доп.возможностей хук не дает.

            Я бы тоже посоветовал посмотреть код, а потом писать.


            Произвольные коллекции - весьма удобная штука как минимум, в своих проектах. Но и в маркете используется. Примеры плагинов

            https://www.webasyst.ru/store/plugin/shop/rootcategory/

            https://www.webasyst.ru/store/plugin/shop/unclaimed/

            https://www.webasyst.ru/store/plugin/shop/backendfilter/


            Также можно обратить внимание на пару других хуков

            https://developers.webasyst.ru/hooks/shop/orders_collection/

            https://developers.webasyst.ru/hooks/shop/orders_collection.filter/

            в которых тоже разделена функциональность. Первый - для создания новых коллекций, а второй - для изменения существующих.

            • 0
              EnsoStudio EnsoStudio 16 апреля 2018 15:28 #
              Я бы тоже посоветовал посмотреть код, а потом писать.

              приведите примеры

              Произвольные коллекции - весьма удобная штука как минимум, в своих проектах.

              коллекция создается в самом плагине, зачем ему обращаться к ней через хук?

              Первый - для создания новых коллекций, а второй - для изменения существующих.

              по факту оба метода предоставляют доступ к одному тому же объекту т.ч.разделение весьма условное - второй хук может тоже самое что и первый

              • 0
                Eugen Nichikov Eugen Nichikov 16 апреля 2018 16:08 #

                Ну вот вроде и на одной стороне, а всё-равно диалога не выходит. Предлагаю резюме:

                1. Старый хук нужен.

                2. Новая функциональность нужна.

                Как она будет реализована мне не принципиально. Я выразил лишь личное мнение, что меняя старый хук можно сломать старые плагины.

                Ну и orders_collection разделены, было бы логично и products_* разделять

                • -1
                  EnsoStudio EnsoStudio 16 апреля 2018 16:23 #

                  Вы не можете аргументировать свои слова, поэтому и диалога нет. Какой может быть диалог когда оппонент на просьбу примера пишет в духе "ой ну все"? :)

                  • 0
                    Eugen Nichikov Eugen Nichikov 16 апреля 2018 16:31 #

                    ой всё

                    • -1
                      EnsoStudio EnsoStudio 16 апреля 2018 16:59 #

                      Ветка вышла в духе "отрицание, осознание, признание"

                      " width=

                      Пользуясь случаем: перекиньте код для страниц из https://webasyst.ru/store/plugin/menu/ensosite/ в свой плагин меню для магазина - не хватает функционала для публичной темы.

                      P.S. Пока не занялся загрузкой этого плагина, я и не подозревал что тут свои кибер сквоттеры есть, кто-то занял menu/site, а плагин не загрузил :)

                      • 0
                        Eugen Nichikov Eugen Nichikov 16 апреля 2018 17:29 #

                        Ветка вышла в духе: я не знаю как это работает, не пользуюсь, докажите что оно мне надо.

                        Можно было бы продолжать, но не думаю, что это приблизит хоть какую-то реализацию фильтрации.


                        в свой плагин меню для магазина - не хватает функционала для публичной темы.

                        Это не понял. Ты писал о PR со страницами в само приложение. Это не оно?


                        Сквоттеры? Я штоле?



                        • 0
                          EnsoStudio EnsoStudio 16 апреля 2018 18:24 #
                          Ветка вышла в духе: я не знаю как это работает, не пользуюсь, докажите что оно мне надо
                          Я бы тоже посоветовал посмотреть код, а потом писать.

                          PR - это потом как-нибудь как дойдут руки, пока что реализовал функцию наподобие wa_print_tree непосредственно в шаблоне.

                          Я говорил о твоем плагине menu/plugins/shop, там код для вывода страниц не дописан, можно перенести его из моего плагина - различия минимальны.

                          Попался хомяк :)

                          Добавить комментарий

                          Чтобы добавить комментарий, зарегистрируйтесь или войдите