Как вывести весь товар в родительской категории

Как вывести весь товар в родительской категории

Привет.

Хочу показать Вам работающую версию доработки viruemart2

Появилась задача вывести весь товар из подкатегорий в главную категорию магазина.

Итак

Ищем файл /administrator/components/com_virtuemart/models/product.php

Не забудьте сделать резервную копию этого файла!:)

Открываем product.php через текстовый редактор (я пользуюсь notepad++)

Ищем через поиск VirtueMartModelProduct и добавляем после кавычки { данный код

function untreeCat($vm_catid, &$ccont){
        $db = JFactory::getDBO();
        $query = 'SELECT `category_child_id` FROM `#__virtuemart_category_categories` WHERE `category_parent_id`="'.$vm_catid.'"';
        $db->setQuery($query);
        $db->query();        
        $rows = $db->loadRowList();
        if (empty($rows))    {
            return;
        } else {            
            foreach($rows as $row) {
                array_push($ccont, $row[0]);
                $kat = $row[0];
                $this->untreeCat($kat, $ccont);                
            }
        }
    }

у меня получилось так

class VirtueMartModelProduct extends VmModel {
function untreeCat($vm_catid, &$ccont){
        $db = JFactory::getDBO();
        $query = 'SELECT `category_child_id` FROM `#__virtuemart_category_categories` WHERE `category_parent_id`="'.$vm_catid.'"';
        $db->setQuery($query);
        ....

далее так же через поиск ищем if ($virtuemart_category_id > 0) { и заменяем всю конструкцию  if ($virtuemart_category_id > 0) {
…..

…..
}

на данный код

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;
}

у меня получилось так

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

			if ($isSite and !VmConfig::get('show_uncat_child_products',TRUE)) {
				$joinCategory = TRUE;
				$where[] = ' `pc`.`virtuemart_category_id` > 0 ';
			}

Вот и все. Осталось сохранить файл и обновить страничку.

Опубликовано:18.02.2014inkognitod

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *