Но хоть про сумму объясни для приземленных, что, а главное куда эти выше написанные мысли вставить)))
function countProductsSF($cat_id=0, $categoryModel) {
$db = JFactory::getDBO();
$vendorId = 1;
if ($cat_id > 0) {
$q = 'SELECT count(#__virtuemart_products.virtuemart_product_id) AS total
FROM `#__virtuemart_products`, `#__virtuemart_product_categories`
WHERE `#__virtuemart_products`.`virtuemart_vendor_id` = "'.(int)$vendorId.'"
AND `#__virtuemart_product_categories`.`virtuemart_category_id` = '.(int)$cat_id.'
AND `#__virtuemart_products`.`virtuemart_product_id` = `#__virtuemart_product_categories`.`virtuemart_product_id`
AND `#__virtuemart_products`.`published` = "1" ';
$db->setQuery($q);
$count = $db->loadResult();
/* --- */
$childCats = $categoryModel->getChildCategoryList($vendorId, $cat_id);
if (isset($childCats) && !empty($childCats)) {
foreach ($childCats as $child) {
$count = $count + countProductsSF($child->virtuemart_category_id, $categoryModel);
}
}
} else $count=0 ;
return $count;
}
function VmCategoryFish ($category_id, $active_category_id, $vendorId, $cache, $categoryModel, $p) {
static $level = 0;
static $columns = 0;// == $submenu
static $parentmenu = 0;
$categories = $cache->call( array( 'VirtueMartModelCategory', 'getChildCategoryList' ),$vendorId, $category_id );
$categories = $categoryModel->getChildCategoryList($vendorId, $category_id);
$parentCategories = $categoryModel->getCategoryRecurse($active_category_id,0);
if ($p['allcategories'] == 1 && $level == 0) {
$categories = array();
$categories[0]->virtuemart_category_id = '0';
$categories[0]->category_name = JText::_('MOD_PHOCA_VM_CATEGORY_ALL_CATEGORIES');
$categories[0]->category_description = JText::_('MOD_PHOCA_VM_CATEGORY_ALL_CATEGORIES');
$categories[0]->metadesc = '';
$categories[0]->metakey = '';
$categories[0]->slug = '';
$categories[0]->virtuemart_media_id = array();
$parentmenu++;
}
if (!empty($categories)) {
$ulA = '';
$submenustyle = '';
$active = '';
if ( $active_category_id <> 0 && ($active_category_id == $category_id || in_array($category_id, $parentCategories)) ) {
$active = ' active';
}
if ($level == 0) {
$ulA = ' id="dropdown" class="sf-menu"';
} else if ($level == 1){
if ($p['submenustyle'] != '') {
$submenustyle = $p['submenustyle'];
}
$ulA = ' class="level'.$level.$active.' child" style="'.strip_tags($submenustyle).'"';
} else {
$ulA = ' class="level'.$level.$active.' child"';
}
echo "\n\n";
echo '<ul'.$ulA.'>'."\n";
foreach ($categories as $c) {
$childCats = $cache->call( array( 'VirtueMartModelCategory', 'getChildCategoryList' ),$vendorId, $c->virtuemart_category_id );
$childCats = $categoryModel->getChildCategoryList($vendorId, $c->virtuemart_category_id);
$url = JRoute::_('index.php?option=com_virtuemart&view=category&virtuemart_category_id='.$c->virtuemart_category_id);
$count = countProductsSF($c->virtuemart_category_id, $categoryModel);
if ($p['countproducts'] == 1) {
$counthtml = '<i>('.$count.')</i>';
}
$parent = '';
$drop = '';
$columnstyle = '';
$active = '';
$span = '';
if (isset($childCats) && !empty($childCats)) {
$parent = ' parent';
$drop = ' class="drop"';
$span = ' <span class="VmArrowdown"></span>';
// Only design issue - no submenu, no style
if ((int)$p['countlevels'] == 1) {
$parent = '';
$drop = '';
$span = '';
}
}
if ( $active_category_id <> 0 && ($active_category_id == $c->virtuemart_category_id || in_array($c->virtuemart_category_id, $parentCategories)) ) {
$active = ' active';
}
if ($level >= 0) {
$categoryModel->addImages($c);
if (isset($c->images[0]->file_url_thumb) && $c->images[0]->file_url_thumb != '') {
$img = JURI::base(true).'/'.$c->images[0]->file_url_thumb;
}
$parentmenu++;
echo '<li class="level'.$level.''.$parent.''.$active.'"><a class="screenshot" '.$drop.' href="'.$url.'" rel="'.$img.'">'.$c->category_name.$counthtml.'</a>' ."\n";
} else {
echo '<li class="level'.$level.''.$parent.''.$active.'"><a class="screenshot" href="'.$url.'" rel="'.$img.'">'.$c->category_name.$counthtml.'</a>'."\n";
}
if ($level >= 0) {
$columns++;
if ($p['enablethumbs'] == 1) { ?>
<?php
$categoryModel->addImages($c);
if (isset($c->images[0]->file_url_thumb) && $c->images[0]->file_url_thumb != '') {
$img = '<img alt="" src="'.JURI::base(true).'/'.$c->images[0]->file_url_thumb.'" />';
echo '<div class="tiptip">
'.$img.'</div>';
}
}
}
echo $span ;
if (isset($childCats) && !empty($childCats)) {
$level++;
if ((int)$p['countlevels'] == (int)$level) {
$level--;
} else {
VmCategoryFish($c->virtuemart_category_id, $active_category_id, $vendorId, $cache, $categoryModel, $p);
$level--;
}
}
echo '</li>'."\n";
}
echo '</ul>'."\n\n";
}
}
VmCategoryFish ($category_id, $active_category_id, $vendorId, $cache, $categoryModel, $p);
echo '';
выдергивай, я просто поудалл кое что лишнее.Если совсем туго, то позже напишу