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

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

  • 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 категорий, если для каждого пользователя все это будет считаться и персчитывать с одним и тем же результатом - это быстродействия системе уж точно не прибавит.

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум