- Форум
- Расширения Joomla
- Электронная коммерция.
- Virtuemart 3
- Скрыть пустые категории товаров
Скрыть пустые категории товаров
Михаил / Автор темы \
Новичок

13
1
0
5 года 8 мес. назад #8649 от Михаил
Здравствуйте!
После авто импорта столкнулся с такоей проблемой, есть много пустых категорий, настроено таким образом что импорт происходит товаров через API автоматически, проверяется кол-во на складе и если товара нет он не отображается!
Ну вот в следсвии чего и появляются пустые категории, поискав информацию нашел PHP код который скрывает пустые категории, т.е. если товара нет то и отображаться они не будут, товар появился они появились, но что то у меня не работает, скрывает все категории почецму то! Вот код:
Скрытие категорий без товара
Чтобы скрыть категории, в которых нет товара в файле /components/com_virtuemart/sublayouts/categories.php послевставьтев этом же файле заключите весь код внутри циклав дополнительное условиеИ теперь скрылись ВСЕ категории!!!
Может что то не так?
После авто импорта столкнулся с такоей проблемой, есть много пустых категорий, настроено таким образом что импорт происходит товаров через API автоматически, проверяется кол-во на складе и если товара нет он не отображается!
Ну вот в следсвии чего и появляются пустые категории, поискав информацию нашел PHP код который скрывает пустые категории, т.е. если товара нет то и отображаться они не будут, товар появился они появились, но что то у меня не работает, скрывает все категории почецму то! Вот код:
Скрытие категорий без товара
Чтобы скрыть категории, в которых нет товара в файле /components/com_virtuemart/sublayouts/categories.php после
defined('_JEXEC') or die('Restricted access');
$categoryModel = VmModel::getModel('Category');
foreach ( $categories as $category ) {
...
}
foreach ( $categories as $category ) {
if($categoryModel->countProducts($category->virtuemart_category_id)){
...
}
}
Может что то не так?
Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.
Wedal

Администратор

2882
228
663
5 года 8 мес. назад #8650 от Wedal
Михаил, вообще, да, всё правильно. Это не очень хороший подход, т.к. в цикле на каждую категорию приходится отдельный SQL-запрос для расчета количества. Если подкатегорий будет много, будет много и запросов.
Попробуйте, для начала, вместо if подставить просто:Если выведет все нули, то смотрим, собственно, функцию, которая выполняется:Остается только один вариант: у вас для товаров в базе данных проставлен вендор, с ID отличным от 1.
Попробуйте, для начала, вместо if подставить просто:
echo $categoryModel->countProducts($category->virtuemart_category_id).'|';
public function countProducts($cat_id=0) {
$db = JFactory::getDBO();
$vendorId = 1;
if ($cat_id > 0) {
$q = 'SELECT count(`p`.virtuemart_product_id) AS total
FROM `#__virtuemart_product_categories` as `pc`
LEFT JOIN `#__virtuemart_products` as `p` ON `pc`.virtuemart_product_id = `p`.virtuemart_product_id
WHERE `pc`.`virtuemart_category_id` = "'.(int)$cat_id.'"
AND `p`.`virtuemart_vendor_id` = "'.(int)$vendorId.'"
AND `p`.`published` = "1" ';
$db->setQuery($q);
$count = $db->loadResult();
} else $count=0 ;
return $count;
}
Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.
Михаил / Автор темы \
Новичок

13
1
0
5 года 8 мес. назад #8651 от Михаил
Проверил в 2-х таблицах БД, xxxx_virtuemart_products и xxxx_virtuemart_vendors везде virtumart_vendor_id - 1
Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.
Михаил / Автор темы \
Новичок

13
1
0
5 года 8 мес. назад #8652 от Михаил
Вставил следующий код : echo $categoryModel->countProducts($category->virtuemart_category_id).'|';
выдал с верху 0|
выдал с верху 0|
Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.
Wedal

Администратор

2882
228
663
5 года 8 мес. назад #8653 от Wedal
Михаил, этот код должен быть внутри цикла foreach. Или у вас там только одна подкатегория?
Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.
Михаил / Автор темы \
Новичок

13
1
0
5 года 8 мес. назад #8654 от Михаил
тогда вообще не чего не выводит и категории пропадают
Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.
Wedal

Администратор

2882
228
663
5 года 8 мес. назад #8655 от Wedal
Михаил, приведите итоговый код, который ничего не выводит.
Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.
Михаил / Автор темы \
Новичок

13
1
0
5 года 8 мес. назад #8656 от Михаил
Сейчас сделали вот так, проверяет категории и под категории, почти все скрылись, но иногда все же пустые проскакивают!
Но уже на много лучше, меньше пустых стало!
Но уже на много лучше, меньше пустых стало!
Вложения:
Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.
Wedal

Администратор

2882
228
663
5 года 8 мес. назад #8657 от Wedal
Михаил, переделал вам макет. Удалил всё лишнее для лучшего понимания. Если будет нужно, потом добавите.
Не проверял, но, теоретически, должно работать.
Не проверял, но, теоретически, должно работать.
Вложения:
Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.
- Форум
- Расширения Joomla
- Электронная коммерция.
- Virtuemart 3
- Скрыть пустые категории товаров