В стандарте на главной странице магазина Virtuemart2 выводит только корневый категории. Как вывести подкатегории? Покажу как вывести подкатегории первого уровня.
Открываем файл /components/com_virtuemart/views/virtuemart/view.html.php и после
$categoryChildren = $cache->call( array( 'VirtueMartModelCategory', 'getChildCategoryList' ),$vendorId, $categoryId );
добавляем
foreach ($categoryChildren as $category) { $category->childs = $cache->call( array( 'VirtueMartModelCategory', 'getChildCategoryList' ),$vendorId, $category->virtuemart_category_id ); $categoryModel->addImages($category->childs,1); }
Сохраняем, закрываем.
Далее идем в шаблон. Файл шаблона главной страницы находится в /components/com_virtuemart/views/virtuemart/tmpl
причем за вывод категорий отвечает default_categories.php Нам нужно скопировать этот файл в папку нашего шаблона файла по следующему пути - /templates/наш_шаблон/html/com_virtuemart/virtuemart
Открываем файл и перед
<?php $iCategory ++;
добавляем
<?php if ($category->childs ) { ?> <div class="category floatleft<?php echo $category_cellwidth . $show_vertical_separator ?>" style="text-align: center;width:100%;"> <?php foreach ($category->childs as $child) { $caturl = JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id='.$child->virtuemart_category_id); $cattext = $child->category_name; ?> <div style="display:block;float:left;"> <div class="spacer"> <h2> <a href="/<?php echo $caturl ?>" title="<?php echo $child->category_name ?>"> <?php echo $child->category_name ?> <br /> <?php if (!empty($child->images)) { echo $child->images[0]->displayMediaThumb("", false); } ?> </a> </h2> </div> </div> <?php } echo '</div>'; } ?>
правим верстку как нам нужно и наслаждаемся....
UPDATE.
В комментах Андрей предложил решение для VM 2.0.24c
в /components/com_virtuemart/views/virtuemart/view.html.php
$cache = JFactory::getCache('com_virtuemart','callback'); foreach ($categoryChildren as $category) { $category->childs = $cache->call( array( 'VirtueMartModelCategory', 'getChildCategoryList' ),$vendorId, $category->virtuemart_category_id ); }