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

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

В шаблоне переменной {$sc.count} выводится количество товаров. Но без учета подкатегорий, т.е. выводится только количество товаров которые лежат в корне категории. Как вывести количество всех активных товаров с учетом всех подкатегорий?

11 ответов

  • 3
    Константин Егоров 17 ноября 2015 11:56 # Решение
    {$cid=$category.id}
    {$catcount = $wa->shop->productsCount("category/$cid")}

    {$catcount} будет содержать товары, включая товары из всех подкатегорий.

    Только код размещайте вне цикла, который создает sc.

    • +3
      Светлана Светлана 18 ноября 2015 01:36 #

      Спасибо! Помогло. Сделала чуть-чуть иначе (в цикле):

      {$sc.count} заменила на {$catcount = $wa->shop->productsCount("category/`$sc.id`")}{$catcount}

      И, конечно, в админке надо установить для категорий и подкатегорий "Включить товары из подкатегорий".


  • 1
    Gorec 7 декабря 2015 14:12 #

    А подскажите, плиз, куда вставить данный код? Спасибо.

  • 2
    Ярослав 16 февраля 2016 06:38 #

    Такая же проблема была у меня на главной странице

    по совету выше заменил переменную {$child.count} на

    {$catcount = $wa->shop->productsCount("category/`$child.id`")}{$catcount}

    и все заработало

  • 4
    MadinaMarkt 30 августа 2016 20:50 #

    Ммм, и как вообще этим пользоваться?

    {$catcount = $wa->shop->productsCount("category/`$child.id`")}{$catcount}

    у меня показывает 0, где нужно указать id категорий?

  • 2
    Сергей 28 октября 2016 12:32 #

    Был тот же был вопрос. В файле category.html находите

    {$sc.count}

    у меня было с пробелом:

    { $sc.count}

    поэтому сначала не мог найти - и меняете на

    {$catcount = $wa->shop->productsCount("category/`$sc.id`")}{$catcount}

    в 2-х местах. Не забывайте в настройках категории поставить галочку включать товары из подкатегорий.

    <h4 style="margin-bottom: 0px; font-size: 1.3em; line-height: 1.2em; font-family: "Helvetica Neue", "Liberation Sans", Arial, sans-serif;">
    </h4>
  • 1
    Elena 27 января 2020 15:23 #

    Подскажите - можно как-то вывести количество товаров в категории, включая (суммируя) товары подкатегорий, без галочки "включать товары из подкатегорий" ?

    • +2
      replicant replicant 27 января 2020 17:30 #

      Примерно как-то так можно сделать. Не изящно, но смысл должен быть понятен.

      {if $category.subcategories}
      {foreach $category.subcategories as $sc}
      {assign var="sum" value = $sum + $wa->shop->productsCount("category/`$sc.id`")}
      {/foreach}
      <sup>[{$sum}]</sup> - теги оформления специально не убрал, чтобы понять о каком числе речь
      {/if}


  • 1
    Ксения Даровых 14 июля 2020 05:10 #

    Решение, позволяющее выводить сумму всех товаров подкатегорий при выключенной настройке "показывать товары из подкатегорий" (с включенной этой функцией и так все варианты работают)

    id=0 в данном случае - корень (нам надо было получать колво товаров в самых верхних категориях, у вас могут быть свои id)

    {function name=cat_count id=0}
    {$_c = $wa->shop->category($id)}
    {$count = $wa->shop->productsCount("category/$_c.id")}
    {if $_c.subcategories}
    {foreach $_c.subcategories as $subcat}
    {$count = $count + {cat_count id={$subcat.id}}}
    {/foreach}
    {/if}
    {$count}
    {/function}

    {$all_count=0} - если нужно общее количество товаров в запрашиваемой категории

    {$categories = $wa->shop->categories(0, null, true)}
    {foreach $categories as $c}

    {$all_count = $all_count + {cat_count id={$c.id}}} - складываем количество из всех категорий в цикле - если нужно общее количество товаров в запрашиваемой категории
    ...
    {_w('%d product', '%d product', {cat_count id={$c.id}}|default:0)} - сразу с языковой переменной "товаров"
    ...
    {/foreach}

    {$all_count} - выведет общее количество всех товаров в запрашиваемой категории

    • +1
      Ксения Даровых Ксения Даровых 15 июля 2020 03:05 #

      UPD: (не нашла как отредактировать предыдущее) 

      $count должен объявляться не как {$count = $wa->shop->productsCount("category/$_c.id")}, а как {$count = $_c.count}, тогда количество будет корректным даже при включении товаров из подкатегорий.

Добавить ответ

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