Блог. Скрипты

Вывести товары подкатегорий в категорию VM

Давайте сделаем вывод товаров всех подкатегорий в категорию интернет-магазина Virtuemart Joomla за три простых шага.

1. Находим в файле /administrator/components/com_virtuemart/models/product.php функцию:

function setKeyWord ($keyword) {
	$this->keyword = $keyword;
}

и после нее вставляем свою функцию:

function untreeCat($vm_catid, &$ccont){
	$dbx = JFactory::getDBO();
	$q = 'SELECT `category_child_id` FROM `#__virtuemart_category_categories` WHERE `category_parent_id`="'.$vm_catid.'"';
	$dbx->setQuery($q);
	$dby = $dbx->query();
	if (!$dby->num_rows) {
		return;
	} else {
		while($tt = $dby->fetch_row()) {
			array_push($ccont, $tt[0]);
			$kat = $tt[0];
			$this->untreeCat($kat, $ccont);
		}
	}
}                                                                                                                             

2. Находим здесь же блок с проверкой:

if ($virtuemart_category_id > 0) {
	$joinCategory = TRUE;
	$where[] = ' `#__virtuemart_product_categories`.`virtuemart_category_id` = ' . $virtuemart_category_id;
}

и заменяем его на:

if ($virtuemart_category_id>0){
	$joinCategory = true;
	$catscont = array();
	$this->untreeCat($virtuemart_category_id, $catscont);
	$qkat = ' `#__virtuemart_product_categories`.`virtuemart_category_id` IN('.$virtuemart_category_id;
	foreach ($catscont as &$kat){
		$qkat .= ', '.$kat;
	}
	$qkat .= ')';
	$where[] = $qkat;
}

3. Наслаждаемся результатом.

Смотреть все статьи