Вход • Регистрация

Количество товаров в категории

  • 02 сентября 2012 г.
  • Добрый день!
    Подскажите, пожалуйста, каким образом вывести на первой странице магазина количество товаров для каждой категории?
    Например, так:
    Категория 1 (10)
    Категория 2 (22)
    и т.п.
    • 03 сентября 2012 г.
    • Здравствуйте!
      Если навскидку, то скажу. Если надо прям код, то в техподдержку идите. Если код маленький и быстрый, обычно они прикладывают.
      Навскидку:
      1. файл модели module/shop/shop.model.php функция first_page(), там идет отбор категорий для вывода их во view. В каждой категории делайте махонький запрос с помощью num_rows, для получения количества рядов, и добавляйте в массив $result
      2. Во view (modules/shop/views/shop.view.first_page.php) выводите
      • 04 сентября 2012 г.
      • Спасибо, Виталий!
        Всё работает. У меня правда структура вывода несколько сложнее на первой странице.
        В итоге получаем, например, такой вариант.
        Для каждой категории делаю запрос и передаю в $result:
        $rrows = DB::query("SELECT id FROM {shop} WHERE cat_id=%d", $lkat);
        $this->result["categories"][$cat]["rows"][$k]["kolvo"]=DB::num_rows($rrows);

        Ну и выдаю всё это в shop.view.first_page.php.

        Хотел уточнить только один момент. Большое количество таких маленьких запросов не сильно скажется на производительности?
        • 05 сентября 2012 г.
        • Скажется, конечно, но не сильно. SQL-сервер же для того и создан, чтобы запросы обрабатывать.
          Включите "Режим разработчика" и "Профилирование запросов" в настройках сайта и посмотрите сами. Там миллисекунды, скорее всего.
  • 10 января 2013 г.
  • А если сделать нужно вывести в шаблоне site.php
    Как быть?
    Если можно поподробнее, а то немного не понятно.

    Спасибо.
  • 06 июня 2013 г.
  • Есть более быстрое решение.
    1) Создаем в таблице diafan_shop_category новое поле count_good типа int.
    2) Обновлем количесвто товаров в категории запросом в базу данных
    Код
    update `diafan_shop_category` c set count_good = (select count(r.id) from diafan_shop_category_rel r where r.trash='0' and c.id=r.cat_id)

    в дальнейшем обновлем по крону или по кнопке из админки
    3) В модели магазина shop.model.php в методе first_page_elements_query добавляем в запрос вывод нашего нового поля
    4) Во вьюшке modules\shop\views\shop.view.first_page.php выводим это поле
    • 06 июня 2013 г.
    • Мы примерно так и сделали. При обновлении таблиц товаров и цен считается колво товаров в категориях и записывается в специально добавленное поле.
      Зачем это делать много раз при каждом обращении пользователей, если можно сделать 1 раз при обновлении каталога. Когда категорий до сотни, наверное все равно как делать, а у нас около 1500 категорий, если для каждого пользователя все это будет считаться и персчитывать с одним и тем же результатом - это быстродействия системе уж точно не прибавит.

Новости

  • 19 сентября, пятница
  • Мы внесли изменения в лицензию и объявляем, что прекращаем техническую консультационную поддержку сайтов на DIAFAN.CMS версий старше 7.0. А это все минорные версии платформы, предшествующие актуальной линейке, а именно: версии серии 4.x, 5.x, 6.x.
  • 15 сентября, понедельник
  • У нас отличные новости! Мы выпустили новую сборку DIAFAN.CMS 7.3, которая включает встроенные нейросети непосредственно в административной панели. Это значит, что создание контента для вашего сайта больше не будет проблемой — искусственный интеллект возьмет эту задачу на себя, избавляя вас от необходимости привлекать копирайтеров или тратить время на написание текстов самостоятельно.
  • 25 марта
  • Мы обновили систему тарифов, учитывая опыт работы с клиентами и современные рыночные условия. Новая тарифная сетка разработана специально для того, чтобы лучше отвечать вашим потребностям. Резкого повышения цен не произошло. Более того, некоторые тарифы даже стали выгоднее и доступнее. 

Блоги

  • 10.09.2025
  • DIAFAN.CMS славится нагрузоустойчивостью и безопасностью, про инциденты со взломом сайта на нашей системе давненько не слышали, но недавно получили мы письмо от fstec.ru такого характера:

    Обнаружена уязвимость в CMS-системе DIAFAN, позволяющая нарушителю, действующему удалённо, красть сессионные куки через XSS-атаку.