Форум русской поддержки Joomla!® CMS
03.12.2016, 13:42:04 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Список производителей с количеством товара

 (Прочитано 404 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ivan.sergeev
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 79



« : 19.08.2015, 21:44:50 »

Добрый вечер!
Возможно ли как нибудь реализовать список производителей, а рядом с каждым производителем количество его товаров?. Допустим - apple (5) Samsung (10) и т.п.
Записан
Linfuby
Живу я здесь
******

Репутация: +165/-0
Offline Offline

Пол: Мужской
Сообщений: 1202


Всё просто...


« Ответ #1 : 19.08.2015, 22:28:49 »

Количество продуктов для производителя №1
Код:
$manufacturer = JSFactory::getTable('manufacturer', 'jshop');
$manufacturer->load(1);
$filters = array();
$total = $manufacturer->getCountProducts($filters);
echo $manufacturer->name.' ('.$total.')';
Записан
ivan.sergeev
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 79



« Ответ #2 : 20.08.2015, 13:56:43 »

Спасибо, будем пробовать!
Записан
ivan.sergeev
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 79



« Ответ #3 : 22.08.2015, 04:17:41 »

Отлично, работает!)
Только вопрос - в модуле для джшоппинга производители стоит стандартный универсальный default template для каждого производителя, как этот код переделать, чтобы он был актуален для каждого производителя, независимо от его порядкового номера?
Записан
Linfuby
Живу я здесь
******

Репутация: +165/-0
Offline Offline

Пол: Мужской
Сообщений: 1202


Всё просто...


« Ответ #4 : 22.08.2015, 10:16:18 »

Рассматривался стандартный модуль для версии 4.0.1:

Если не хотите Сами думать и читать готовый код, который Вам дают, то держите следующую порцию кода, и осознавайте, что кодить Вам пока рано.
Внутри цикла в файле модуля (см. путь к файлу)
Код:
foreach ($list as $key => $value){
Нужно добавить:
Код:
$manufacturer = JSFactory::getTable('manufacturer', 'jshop');
$manufacturer->load($list[$key]->manufacturer_id);
$list[$key]->count_products = $manufacturer->getCountProducts(array());
Ну а в шаблоне (см. путь к файлу) соответственно вывести это количество где нужно. Оно доступно в переменной <?php print $curr->count_products; ?>
Записан
ivan.sergeev
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 79



« Ответ #5 : 22.08.2015, 12:32:14 »

спасибо огромное!) я не программист, сам бы не разобрался
Записан
Biss
Завсегдатай
*****

Репутация: +64/-0
Offline Offline

Пол: Мужской
Сообщений: 659



« Ответ #6 : 22.08.2015, 15:16:23 »

В дополнение к теме.
Тоже задумал такое прикрутить на днях
С модулем получилось, а в шаблоне производителей прописал так
Код:
<?php
$manufacturer = JSFactory::getTable('manufacturer', 'jshop');
$manufacturer->load($row->manufacturer_id);
$filters = array();
$total = $manufacturer->getCountProducts($filters);
print $manufacturer->name.' ('.$total.')';
 ?>
если что не так поправьте пожалуйста.
« Последнее редактирование: 22.08.2015, 15:36:02 от Biss » Записан
dmitry_stas
Профи
********

Репутация: +794/-4
Offline Offline

Сообщений: 7732



« Ответ #7 : 22.08.2015, 17:21:48 »

если уж делать запрос на каждого производителя, то хотя бы сэкономить на load.
Код:
$this->manufacturer->manufacturer_id = $row->manufacturer_id;
$total = $this->manufacturer->getCountProducts(array());
print $row->name.' ('.$total.')';

а вообще лучше конечно все вытащить 1 запросом.
Записан
Biss
Завсегдатай
*****

Репутация: +64/-0
Offline Offline

Пол: Мужской
Сообщений: 659



« Ответ #8 : 22.08.2015, 19:10:21 »

только $row->name. наверно лишнее если в шаблоне делать в моем случае.
а для модуля тоже можно упростить код ? или оставить как есть...
Записан
dmitry_stas
Профи
********

Репутация: +794/-4
Offline Offline

Сообщений: 7732



« Ответ #9 : 22.08.2015, 21:22:29 »

лучше конечно все вытащить 1 запросом.
Azn
Записан
Biss
Завсегдатай
*****

Репутация: +64/-0
Offline Offline

Пол: Мужской
Сообщений: 659



« Ответ #10 : 23.08.2015, 22:35:54 »

Знать бы ещё как написать...
Записан
dmitry_stas
Профи
********

Репутация: +794/-4
Offline Offline

Сообщений: 7732



« Ответ #11 : 23.08.2015, 23:49:01 »

Код:
$db = JFactory::getDBO();
$db->setQuery('SELECT product_manufacturer_id, count(product_id) AS count FROM `#__jshopping_products` WHERE product_publish=1 GROUP BY product_manufacturer_id');
$man = $db->loadObjectList('product_manufacturer_id');
// количество для ID производителя - $man[ID производителя]->count
Записан
Biss
Завсегдатай
*****

Репутация: +64/-0
Offline Offline

Пол: Мужской
Сообщений: 659



« Ответ #12 : 24.08.2015, 13:30:13 »

вывожу в модуле так работает
<?php print $man[2]->count; ?>
а как сделать чтоб автоматически подставлялось ид
пробовал
<?php print $man[$manufacturer_id]->count; ?>
Записан
dmitry_stas
Профи
********

Репутация: +794/-4
Offline Offline

Сообщений: 7732



« Ответ #13 : 24.08.2015, 13:33:32 »

ну видимо $man[$row->manufacturer_id]->count , или как там в модуле manufacturer_id получить
Записан
Biss
Завсегдатай
*****

Репутация: +64/-0
Offline Offline

Пол: Мужской
Сообщений: 659



« Ответ #14 : 24.08.2015, 13:35:30 »

curr  Smiley  . победа!
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet