БЛОГОДЖУМЛА - БЛОГ О ДЖУМЛА

Virtuemart2. Вывод категорий и подкатегорий на главной странице магазина.

  • Категория: Virtuemart 2-3
  • Автор:
  • Просмотров: 22908

В стандарте на главной странице магазина 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 );

}
Back to top