Расширение ннтернет-магазина для Joomla 3.
Скрыть пустые категории товаров
- Михаил
- Автор темы
- Не в сети
- Осваиваюсь на форуме
Less
Больше
- Сообщений: 13
- Спасибо получено: 0
6 года 9 мес. назад #8649
от Михаил
Михаил создал тему: Скрыть пустые категории товаров
Здравствуйте!
После авто импорта столкнулся с такоей проблемой, есть много пустых категорий, настроено таким образом что импорт происходит товаров через API автоматически, проверяется кол-во на складе и если товара нет он не отображается!
Ну вот в следсвии чего и появляются пустые категории, поискав информацию нашел PHP код который скрывает пустые категории, т.е. если товара нет то и отображаться они не будут, товар появился они появились, но что то у меня не работает, скрывает все категории почецму то! Вот код:
Скрытие категорий без товара
Чтобы скрыть категории, в которых нет товара в файле /components/com_virtuemart/sublayouts/categories.php после
вставьте
в этом же файле заключите весь код внутри цикла
в дополнительное условие
И теперь скрылись ВСЕ категории!!!
Может что то не так?
После авто импорта столкнулся с такоей проблемой, есть много пустых категорий, настроено таким образом что импорт происходит товаров через API автоматически, проверяется кол-во на складе и если товара нет он не отображается!
Ну вот в следсвии чего и появляются пустые категории, поискав информацию нашел PHP код который скрывает пустые категории, т.е. если товара нет то и отображаться они не будут, товар появился они появились, но что то у меня не работает, скрывает все категории почецму то! Вот код:
Скрытие категорий без товара
Чтобы скрыть категории, в которых нет товара в файле /components/com_virtuemart/sublayouts/categories.php после
Code:
defined('_JEXEC') or die('Restricted access');
Code:
$categoryModel = VmModel::getModel('Category');
Code:
foreach ( $categories as $category ) {
...
}
Code:
foreach ( $categories as $category ) {
if($categoryModel->countProducts($category->virtuemart_category_id)){
...
}
}
Может что то не так?
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.
- Wedal
- Не в сети
- Администратор
Less
Больше
- Сообщений: 2868
- Спасибо получено: 659
6 года 9 мес. назад #8650
от Wedal
Wedal ответил в теме Скрыть пустые категории товаров
Михаил, вообще, да, всё правильно. Это не очень хороший подход, т.к. в цикле на каждую категорию приходится отдельный SQL-запрос для расчета количества. Если подкатегорий будет много, будет много и запросов.
Попробуйте, для начала, вместо if подставить просто:
Если выведет все нули, то смотрим, собственно, функцию, которая выполняется:
Остается только один вариант: у вас для товаров в базе данных проставлен вендор, с ID отличным от 1.
Попробуйте, для начала, вместо if подставить просто:
Code:
echo $categoryModel->countProducts($category->virtuemart_category_id).'|';
Code:
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;
}
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.
- Михаил
- Автор темы
- Не в сети
- Осваиваюсь на форуме
Less
Больше
- Сообщений: 13
- Спасибо получено: 0
6 года 9 мес. назад #8651
от Михаил
Михаил ответил в теме Скрыть пустые категории товаров
Проверил в 2-х таблицах БД, xxxx_virtuemart_products и xxxx_virtuemart_vendors везде virtumart_vendor_id - 1
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.
- Михаил
- Автор темы
- Не в сети
- Осваиваюсь на форуме
Less
Больше
- Сообщений: 13
- Спасибо получено: 0
6 года 9 мес. назад #8652
от Михаил
Михаил ответил в теме Скрыть пустые категории товаров
Вставил следующий код : echo $categoryModel->countProducts($category->virtuemart_category_id).'|';
выдал с верху 0|
выдал с верху 0|
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.
- Wedal
- Не в сети
- Администратор
Less
Больше
- Сообщений: 2868
- Спасибо получено: 659
6 года 9 мес. назад #8653
от Wedal
Wedal ответил в теме Скрыть пустые категории товаров
Михаил, этот код должен быть внутри цикла foreach. Или у вас там только одна подкатегория?
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.
- Михаил
- Автор темы
- Не в сети
- Осваиваюсь на форуме
Less
Больше
- Сообщений: 13
- Спасибо получено: 0
6 года 9 мес. назад #8654
от Михаил
Михаил ответил в теме Скрыть пустые категории товаров
тогда вообще не чего не выводит и категории пропадают
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.
- Wedal
- Не в сети
- Администратор
Less
Больше
- Сообщений: 2868
- Спасибо получено: 659
6 года 9 мес. назад #8655
от Wedal
Wedal ответил в теме Скрыть пустые категории товаров
Михаил, приведите итоговый код, который ничего не выводит.
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.
- Михаил
- Автор темы
- Не в сети
- Осваиваюсь на форуме
Less
Больше
- Сообщений: 13
- Спасибо получено: 0
6 года 9 мес. назад #8656
от Михаил
Михаил ответил в теме Скрыть пустые категории товаров
Сейчас сделали вот так, проверяет категории и под категории, почти все скрылись, но иногда все же пустые проскакивают!
Но уже на много лучше, меньше пустых стало!
Но уже на много лучше, меньше пустых стало!
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.
- Wedal
- Не в сети
- Администратор
Less
Больше
- Сообщений: 2868
- Спасибо получено: 659
6 года 9 мес. назад #8657
от Wedal
Wedal ответил в теме Скрыть пустые категории товаров
Михаил, переделал вам макет. Удалил всё лишнее для лучшего понимания. Если будет нужно, потом добавите.
Не проверял, но, теоретически, должно работать.
Не проверял, но, теоретически, должно работать.
Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.