количество товаров, которое указывается в категориях Есть решение

На складе есть товары, которые скрыты от показа на сайте, но количество их почему то учитывается в категориях:

т.е кабин всего три, а в скобках 28. Как исправить ошибку?

3 ответа

  • 1

    обратитесь к автору темы

  • 2
    replicant 6 мая 2018 18:03 # Решение

    Разработчики тем дизайна ленивы и обычно берут количество из таблицы категорий из столбца count "в лоб" примерно так

    в меню
    {foreach $wa->shop->categories(0,0,true) as $c} {$c.count} {/foreach}
    в категории примерно так
    <h1>{$category.name|escape} {$category.count}</h1>
    для подкатегорий обычно так
    {foreach $category.subcategories as $sc}
    {$sc.count}
    {/foreach}
    схемы однотипны и мы видим куда все это ведет

    и такой подход часто приводит к ошибкам, т.к. учитываются скрытые товары, не учитываются товары из подкатегорий и т.п., короче говоря, не количество товара, а "угадайка", которая лишь иногда совпадает с реальным количеством, если повезет. Вывод {$c.count} или {$category.count} надо менять на более точный.

    У себя делаю так

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

    есс-но $c.id надо заменить либо на $category.id, либо на $sc.id

    После этого в случае со скрытыми товарами и/или подкатегориями счетчик перестает попадать "пальцем в небо" и считает нормально. Накладные расходы на обслуживание такого счетчика, как мне думается, увеличиваются, но ради точности оно того стоит ибо некрасиво показывать 3 товара, вместо 28 по счетчику.

    Это всё описано в Шпаргалке к шаблонам, но кто же Шпаргалку читает? :)))

    • +1

      Разработчики тем дизайна обычно умнее, поэтому и не хотят делать в паблик темах так, как пишите вы. У кого будут явные и очевидные несовпадения по количеству - исправит сам. Это сделать легко. А вот 80% остальных магазинов в этой лишней нагрузке не нуждаются.

      • +1
        replicant replicant 6 мая 2018 19:33 #

        {if empty($theme_settings.hide_productcount)} ... ну и т.д. +небольшой текст о "возможном росте нагрузки при большом числе товаров и категорий" при включении опции. Даже можно на выбор предлагать три опции (отключить, считать точно, считать быстро и не всегда точно). Конечно кусочки кода и текст описания в настройках сами не напечатаются, но там дел на 5 минут. Всё это возможно сделать, если подойти к вопросу более основательно.

        • 0

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

          1. Настройки будут пугающе большими и "сложными". Разработчику постоянно будут задавать вопросы "А как сделать, чтобы...?". Хотя если внимательнее посмотреть настройки, то ответ на этот вопрос там есть. Разработчик тратит слишком много времени на поддержку и у него остается гораздо меньше времени на обновления и выпуск других продуктов.

          2. Из-за обилия настроек шаблоны состоят из одних условий. Делать правки в таких шаблонах крайне сложно. А значит владелец магазина на таком шаблоне не сможет за час найти человека, который сделает хорошо и за 500₽. Он будет искать неделю и отдаст за это 2000₽. И не факт, что будет хорошо.


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

          Если вы думаете, что я что-то выдумываю, то увы. Именно так и всё и происходит в действительности.

          • +2
            replicant replicant 8 мая 2018 00:07 #

            Я вас прекрасно понимаю. Сам 16 лет занимался разработкой и поддержкой разных систем и руководил проектами и коллективами, но это в прошлом. Для себя сейчас что-то делаю, когда надо, но не более. Никаких больше клиентов. Хватит. :)))

          • +1

            Я занимаюсь контентом сайта, и у меня периодически возникают вопросы (такие как в этой теме про категории), мне нужна поддержка сайта. С вами можно договорится о сотрудничестве на регулярной основе? Разработчик у нас есть, но он не всегда может сделать оперативно.

            Например, сейчас такая проблема: В админке поставила ссылку (ниже видео), а на сайте ее почему-то нету (страницу обновила) :

            в админке:

            Можете сделать?

            • +1
              replicant replicant 8 мая 2018 11:50 #

              Увы, но не могу согласиться на сотрудничество, т.к. на мне несколько своих магазинов, начиная от хостинга и заканчивая фотоматериалами (сам снимаю в своей мини-студии) и контентом, а также реклама, сео, продвижение. Всё это занимает приличное количество времени. И вроде весь день сижу перед монитором, но иногда даже поесть проблематично (забываю).
              ---

              А касательно вашего вопроса про ссылку, которая потерялась, то для ответа надо видеть html-вариант или ссылку на страницу на сайт, где это выложено. Ссылку на страницу даже лучше, чем html версию.

    • 0

      Учитывая что сюда пишут в основном клиенты, а не верстальщики, то Вам придется заодно сказать заодно где и как это сделать т.к. ни про какие шпаргалки они не знают и слава богу - не накосячат.

      На ресурсоемкость пофиг т.к. есть кеширование.
      • +1
        replicant replicant 7 мая 2018 08:22 #

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

        P.S. На ресурсоемкость пофиг, потому что $products_count втихаря уже постоянно считается, а в категориях без набрасывания фильтров или с фильтрами, которые работают без перезагрузки страницы, можно даже его тащить из шаблона ибо уже всё готово. Ну да ладно. Проехали. Тема себя уже давно исчерпала. Подождем, когда появится ТС.

        • 0

          надо будет прикрутить к шпаргалке список переменных на странице.

          • 0

            вернее к шпаргалке нереально т.к. придется эмулировать запуск экшена, а это тот еще геморрой, проще добавить в шаблон аналог smarty функции wa_tpl_vars:

            function smarty_function_wa_action_vars($params, &$smarty)
            {
                $vars = $smarty->getTemplateVars();
                $defaultVars = wa()->getView()->getVars();
                wa_array_diff_r($vars, $defaultVars, $difference);
                return '<div style="overflow: auto; min-width: 400px"><pre>'
                       . wa_dump_helper($difference)
                       . '</pre></div>' . PHP_EOL;
            }
  • 1
    replicant 6 мая 2018 18:19 # Решение

    Если не достучитесь до разработчика темы или не захотите достукиваться, то для решения нужен кусок из шаблона category.html в частности тот, где упоминается $category.name и на две строки выше него и ниже (на всякий случай), там рядом ещё будет слово count.

    Бросайте указанный кусок шаблона сюда. Попробуем помочь.

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

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