Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

подсчет количества товаров со special


Recommended Posts

Всем привет.

Задача вывести рядом с названием категории в списке категорий количество товаров со скидкой.

Получаю массив категорий:

$data['categories'][] = array(
                    'products' => $products,
                    'textname' => $result['name'],
                    'totally' => $products_total  .' '. $this->getWords($products_total),
                    'category_id' => $result['category_id'],
                    'name' => $result['name'],
                    'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url)
                );

 

Подскажите, пожалуйста, как добавить в массив категорий подсчет количества товара с не пустым значением special

Добавляю в массив категорий

   'totallsp' => count(isset($products['special'])),

Не работает. Ради эксперимента делаю:

   'totallsp' => count($products),

- на выходе для каждой категории получаю количество товаров в ней - т.е. в целом такая конструкция работает.

 

Но не пойму, как сделать выборку именно по ключу special с не пустым значением. Прошу подсказать. Спасибо!
 

 

 

 

 

Надіслати
Поділитися на інших сайтах


17 минут назад, Padlik сказал:

Но не пойму, как сделать выборку именно по ключу special с не пустым значением. Прошу подсказать. Спасибо!

ищите

$specials = array_filter($products,function($k){ return $k['special']; });

$special_count = count($specials);

добавляете в массив $data['categories'] ключ 

'special_count' => $special_count

 

  • +1 1
Надіслати
Поділитися на інших сайтах

а вы хотели посчитать количесво ключей 'special' в массиве $products. Дело в том, что там таких ключей нет, там ключами являются массивы товаров, а уже в них сам ключ special

  • +1 1
Надіслати
Поділитися на інших сайтах

9 минут назад, Seriusis сказал:

а вы хотели посчитать количесво ключей 'special' в массиве $products. Дело в том, что там таких ключей нет, там ключами являются массивы товаров, а уже в них сам ключ special

Огромная благодарность, помогли!!!

Надіслати
Поділитися на інших сайтах


31 минуту назад, Padlik сказал:

Подскажите, пожалуйста, как добавить в массив категорий подсчет количества товара с не пустым значением special

написать свой метод, за основу взять getTotalProductSpecials
catalog\model\catalog\product.php
только добавить в метод фильтр по категории, пример есть тут же в методе getProducts

Надіслати
Поділитися на інших сайтах


15 минут назад, thentru сказал:

написать свой метод, за основу взять getTotalProductSpecials
catalog\model\catalog\product.php
только добавить в метод фильтр по категории, пример есть тут же в методе getProducts

 

Да, я уже было полез в файл модели, но почему-то решил, что проще в контроллере сделать подсчет.

 

 

Надіслати
Поділитися на інших сайтах


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

    $data['categories'] = array();

        $categories = $this->model_catalog_category->getCategories(0);

        foreach ($categories as $category) {
            $children_data = array();

            if ($category['image']) {
                    $image = $this->model_tool_image->resize($category['image'], $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height'));
                } else {
                    $image = $this->model_tool_image->resize('placeholder.png', $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height'));
                }


                $children = $this->model_catalog_category->getCategories($category['category_id']);
                foreach($children as $child) {
                    $filter_data = array('filter_category_id' => $child['category_id'], 'filter_sub_category' => true);

                    $children_data[] = array(
                        'category_id' => $child['category_id'],
                        'name' => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),
                        'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id'])
                    );
                }
          
            $filter_data = array(
                'filter_category_id'  => $category['category_id'],
                'filter_sub_category' => true
            );
         
             $subproducts = array();
               $productresults = $this->model_catalog_product->getProducts($filter_data);
                    $products_total = $this->model_catalog_product->getTotalProducts($filter_data);      
                   foreach ($productresults as $productresult) {
    

                if ((float)$productresult['special']) {
                    $special = $this->currency->format($this->tax->calculate($productresult['special'], $productresult['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']);
                } else {
                    $special = false;
                }
                
                    $subproducts[] = array(
                    'special'     => $special
                );
            }   
            $specials = array_filter($subproducts,function($k){ return $k['special']; });

$special_count = count($specials);

            $data['categories'][] = array(
                'category_id' => $category['category_id'],
                'name'        => $category['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),
                'children'    => $children_data,
                 'special_count' => $special_count,
                'thumb'          => $image,
                'href'        => $this->url->link('product/category', 'path=' . $category['category_id'])
            );
        } 

 

Пытаюсь получить массив товаров из категорий, чтобы вывести количество товаров со скидкой в модуле категорий. Вывод в tpl <?php echo $category['special_count']; ?> - не работает. При этом и ошибок на фронте нет.

Змінено користувачем Padlik
Надіслати
Поділитися на інших сайтах


10 минут назад, Padlik сказал:

print_r($subproducts) нормально выводит массивы товаров со special, но определение переменной $category['special_count'] не работает.

 так понимаю вы перебираете категории в шаблоне ? кэш шаблона чистили ? 

можете продебажить $data['categories'] в контроллере, и посмотрите, что туда ложится

ну или во фронте print_r($categories)

Надіслати
Поділитися на інших сайтах

и зачем вам $subproducts ? вам этот массив не нужен, по сути

Надіслати
Поділитися на інших сайтах

17 минут назад, Seriusis сказал:

 так понимаю вы перебираете категории в шаблоне ? кэш шаблона чистили ? 

можете продебажить $data['categories'] в контроллере, и посмотрите, что туда ложится

ну или во фронте print_r($categories)

print_r($categories) на выходе

Array ( [category_id] => 102 [image] => catalog/theme/image.png [parent_id] => 0 [top] => 0 [column] => 1 [sort_order] => 0 [status] => 1 [date_added] => 2020-02-22 23:11:35 [date_modified] => 2020-04-20 19:51:58 [language_id] => 1

Надіслати
Поділитися на інших сайтах


17 минут назад, Seriusis сказал:

и зачем вам $subproducts ? вам этот массив не нужен, по сути

Я пытаюсь получить массив товаров из категорий и подкатегорий, чтобы вытащить товары со скидочной ценой.

Массив товаров получаю в контроллере модуля категорий, вывод в шаблоне модуля категорий.

 

Кэш модификаторов чистил. Системный тоже. Не помогает. print_r( $special_count ) - получаю правильный подсчет, но, я так понимаю, что $special_count к самим категориям не привязывается. По крайней мере вызов в шаблоне не работает.

Надіслати
Поділитися на інших сайтах


Мой косяк, все работает)))

У меня в модуле несколько однотипных блоков с выводом,в зависимости от медиа-запросов. Так вот, пихал $category['special_count']  в один из блоков, который в стилях скрыт...

 

В общем все ок, еще раз всем спасибо!

Надіслати
Поділитися на інших сайтах


2 минуты назад, Padlik сказал:

Мой косяк, все работает)))

У меня в модуле несколько однотипных блоков с выводом,в зависимости от медиа-запросов. Так вот, пихал $category['special_count']  в один из блоков, который в стилях скрыт...

 

В общем все ок, еще раз всем спасибо!

отлично ) 

Надіслати
Поділитися на інших сайтах

2 минуты назад, Padlik сказал:

Мой косяк, все работает)))

У меня в модуле несколько однотипных блоков с выводом,в зависимости от медиа-запросов. Так вот, пихал $category['special_count']  в один из блоков, который в стилях скрыт...

 

В общем все ок, еще раз всем спасибо!

отлично ) 

то ли форум подлючивает, то ли я ) задвоилось сообщение 

Надіслати
Поділитися на інших сайтах

1 час назад, Seriusis сказал:

отлично ) 

то ли форум подлючивает, то ли я ) задвоилось сообщение 

Тоже самое было в моем предыдущем посте, пришло один дубль изменить)

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.