Joomla. Virtuemart. Вывод товаров из подкатегорий


Неудобства работы с Virtuemart заслуживают множества отдельных статей. Непродуманность модуля просто поражает, но, как часто бывает, иногда надо просто терпеть и писать костыли. В этой заметке покажу, как мне удалось вывести товары дочерних категорий при просмотре родительской.

Итак, следует сделать два шага и поправить два файла:

1. administrator/components/com_virtuemart/models/category.php
В класс добавляем новый метод:

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

2. administrator/components/com_virtuemart/models/products.php
Вместо следующей строки:

$where[] = ' `pc`.`virtuemart_category_id` = ' . $virtuemart_category_id;

Вставляем вот этот блок:

    $categories = array();
    VmModel::getModel('category')->GetTreeCatArray($categories, $virtuemart_category_id);
    $where[] = ' `pc`.`virtuemart_category_id` in (\'' . implode('\',\'',$categories).'\')';

После сохранения в родительской Категории Вы сможете увидеть список товаров с дочерних Категорий. На авторство не претендую — решение найдено в Интернете.

, ,

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

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