VirtueMart: количество продуктов у производителя


Понадобилось в выводе списка производителей вывести их количество товаров, а потом и вовсе скрыть производителей с 0 товаром. Сделал следующее - идем в файл /components/com_virtuemart/views/manufacturer/tmpl/default.php и после defined('_JEXEC') or die('Restricted access'); добавляем новую функцию:

	function countManCat($cat_id=0) {

		$db = JFactory::getDBO();

		if ($cat_id > 0) {
			$q = 'SELECT count(#__virtuemart_product_manufacturers.virtuemart_product_id) AS total
			FROM `#__virtuemart_products`, `#__virtuemart_product_manufacturers`
			WHERE `#__virtuemart_product_manufacturers`.`virtuemart_manufacturer_id` = '.(int)$cat_id.'
			AND `#__virtuemart_products`.`virtuemart_product_id` = `#__virtuemart_product_manufacturers`.`virtuemart_product_id`
			AND `#__virtuemart_products`.`published` = "1" ';
			$db->setQuery($q);
			$count = $db->loadResult();
		} else $count=0 ;

		return $count;
	}

далее внутри цикла foreach ( $this->manufacturers as $manufacturer ) { находим

$manufacturerImage = $manufacturer->images[0]->displayMediaThumb("",false);

и после него добавляем вывод нашей функции:

$m_count = countManCat($manufacturer->virtuemart_manufacturer_id);

далее переменную $m_count можем использовать внутри вывода информации о производители или поставить в начале условие на вывод не пустых, пример:

		if($m_count>0) {
		?>
				<li>
					<a title="<?php echo ucwords(strtolower($manufacturer->mf_name)); ?>" href="<?php echo $manufacturerURL; ?>"><?php echo ucwords(strtolower($manufacturer->mf_name)); ?></a>
				</li>
		<?php
		}

вот такие пироги 🙂

ПОЛЕЗНО  Уязвимость редактора JCE