Модуль категорий virtuemart 2 mod_virtuemart_category выводит 2 уровня категорий.
Чтобы вывести категории третьего уровня, подредактируем немного шаблон вывода модуля mod_virtuemart_category. Так как в папке tmpl находятся 3 шаблона, то возьмем для примера какой-то один, например, all.php В реальности лучше не трогать файлы модуля в папке modules, а скопировать их в папку шаблона, чтобы при обновлении модуля наши изменения не затерлись. В папке шаблона, соответственно, это будет папка html/mod_virtuemart_category и в ней шаблоны вывода модуля.
Открываем файл шаблона и смотрим, что там нужно сделать. В цикле по категориям нужно получить массив категорий третьего уровня, потом с помощью цикла вывести его.
В цикле по подкатегориям:
foreach ($category->childs as $iChild => $child) {
получаем категории уже следующего третьего уровня так:
$childs2 = $cache->call( array( 'VirtueMartModelCategory', 'getChildCategoryList' ),$vendorId=1, $child->virtuemart_category_id );
Эту строку мы позаимствовали из ключевого файла модуля mod_virtuemart_category.php
А в новых версиях Virtuemart это будет
$childs2 = $categoryModel->getChildCategoryList($vendorId, $child->virtuemart_category_id) ;
В любом случае стоит самим посмотреть, образец кода в файле mod_virtuemart_category.php, может у вас другая версия VM..
Полученный массив категорий 3-го уровня выводим с помощью цикла:
foreach ($childs2 as $iChild2 => $ch){}
Код самого цикла копируем из цикла по категориям второго уровня. Мы сейчас, для примера, рассматриваем шаблон all.php, значит код цикла будет выглядеть как-то так
$caturl = JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id='.$child2->virtuemart_category_id); $cattext = $child2->category_name;
Комментарии
Ок, дополнил
RSS лента комментариев этой записи