Куда идем?
Расширение ннтернет-магазина для Joomla 3.

Скрыть пустые категории товаров

  • Михаил
  • Автор темы
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
Больше
6 года 9 мес. назад #8649 от Михаил
Здравствуйте!
После авто импорта столкнулся с такоей проблемой, есть много пустых категорий, настроено таким образом что импорт происходит товаров через 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)){ ... } }
И теперь скрылись ВСЕ категории!!!
Может что то не так?

Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.

Больше
6 года 9 мес. назад #8650 от Wedal
Михаил, вообще, да, всё правильно. Это не очень хороший подход, т.к. в цикле на каждую категорию приходится отдельный SQL-запрос для расчета количества. Если подкатегорий будет много, будет много и запросов.
Попробуйте, для начала, вместо 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; }
Остается только один вариант: у вас для товаров в базе данных проставлен вендор, с ID отличным от 1.

Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.

  • Михаил
  • Автор темы
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
Больше
6 года 9 мес. назад #8651 от Михаил
Михаил ответил в теме Скрыть пустые категории товаров
Проверил в 2-х таблицах БД, xxxx_virtuemart_products и xxxx_virtuemart_vendors везде virtumart_vendor_id - 1

Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.

  • Михаил
  • Автор темы
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
Больше
6 года 9 мес. назад #8652 от Михаил
Михаил ответил в теме Скрыть пустые категории товаров
Вставил следующий код : echo $categoryModel->countProducts($category->virtuemart_category_id).'|';
выдал с верху 0|

Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.

Больше
6 года 9 мес. назад #8653 от Wedal
Михаил, этот код должен быть внутри цикла foreach. Или у вас там только одна подкатегория?

Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.

  • Михаил
  • Автор темы
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
Больше
6 года 9 мес. назад #8654 от Михаил
Михаил ответил в теме Скрыть пустые категории товаров
тогда вообще не чего не выводит и категории пропадают

Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.

Больше
6 года 9 мес. назад #8655 от Wedal
Михаил, приведите итоговый код, который ничего не выводит.

Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.

  • Михаил
  • Автор темы
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
Больше
6 года 9 мес. назад #8656 от Михаил
Михаил ответил в теме Скрыть пустые категории товаров
Сейчас сделали вот так, проверяет категории и под категории, почти все скрылись, но иногда все же пустые проскакивают!
Но уже на много лучше, меньше пустых стало!
Вложения:

Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.

Больше
6 года 9 мес. назад #8657 от Wedal
Михаил, переделал вам макет. Удалил всё лишнее для лучшего понимания. Если будет нужно, потом добавите.
Не проверял, но, теоретически, должно работать.
Вложения:

Пожалуйста Войти или Зарегистрируйтесь, чтобы присоединиться к беседе.