Вывод количества товаров в категориях и подкатегориях Есть решение

1

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


22 год на носу. Может пора уже устранить этот недочет?!

3 комментария

  • +1
    replicant replicant 27 ноября 2021 13:29 #

    Нет никакого недочета и "22 год на носу" тоже не аргумент.

    Как правило в самой категории в шаблоне category.html подсчет надо делать через

    {$products_count} или же {$wa->shop->productsCount("category/`$category.id`")} - результат двух методов одинаковый, но первая переменная уже есть в готовом виде

    для подкатегорий там же аналогично, но только в цикле разбора подкатегорий

    {foreach $category.subcategories as $sc}
        {$wa->shop->productsCount("category/`$sc.id`")}
    {/foreach}

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

    Но есть парочка подводных камней. Попробую объяснить на примере.

    Представим себе категорию А и в ней две подкатегории Б и В. В каждой подкатегории 3 товара, а в самой категории А товаров нет (для упрощения). Вышеописанный метод покажет А - 6, Б - 3, В -3.

    Теперь берем один товар из подкатегории В и помещаем его одновременно в подкатегорию Б. Метод покажет А - 6, Б - 4, В - 3.

    Если вы считаете, что 4+3 = 7 и в категории А должно быть 7, то вы неправы. Товаров в А будет действительно 6.

    Теперь добавим в категорию А 4 новых товара, но тех, которых нет в Б и В. Счет будет А - 10, Б - 4, В -3. Видимых уникальных товаров на витрине в категории А будет действительно 10.

    Теперь один товар из А продублируем в Б. Счет будет А - 10, Б - 5, В - 3. Видимых товаров в А снова 10, в Б - 5, а в В - 3.



    На скриншоте ниже показан счетчик в категории и подкатегориях 10+15+7+16 = 48, но ведь 48 != 44, однако 44 товара в главной категории - это правильный ответ. Такова реальность.



    Думайте сами как лучше эту ситуацию решить для вашего проекта. Движок отдает все нужные данные правильно. Вопросы к теме дизайна.

    • +1

      А если категорий и товаров много, то будьте готовы раскошелиться на секунду-другую на отклик сервера

      • +1
        replicant replicant 27 ноября 2021 13:50 #

        Производительность при большом кол-ве может пострадать, если считать всё всюду и всегда и при этом "голова не включать". Однако

        {$products_count}

        независимо ни от чего в шаблоне (в категории) есть и тут её можно точно не считать. Берем и выводим. Она там притаилась правильная вся из себя такая, но часто её обходят стороной и берут данные так как "завещал великий шаблон Дефолт"... от чего косяки с подсчетом и огребают.



        С подкатегориями тут каждый сам для себя пусть решает.

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

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