Похоже это лучшее решение.
Только не понятное, описано огрызком, не для ...
Может не то сделал, скопировал только этот файл из архива и не заметил что пустые категории исчезли из бокса, зато увидел как они полетели в дизайне.
А можно по подробнее - что полетело в дизайне? Может чего не учел...
Там все просто:
в методе _buildBranch сразу после цикла добавлена строка:
if (!$this->show_empty_nodes && $this->_show_total_products && $category['count'] == 0) continue;
и все. Но надо "выключить" показ пустых нодов в самом боксе, потому что по умолчанию стоит true - выводить пустые ноды.
В includes/modules/boxes/categories.php
function initialize() {
global $osC_CategoryTree, $cPath;
$osC_CategoryTree->reset();
$osC_CategoryTree->setCategoryPath($cPath, '<b>', '</b>');
$osC_CategoryTree->setParentGroupString('', '');
$osC_CategoryTree->setParentString('', '<br/>');
$osC_CategoryTree->setChildString('<small>', '</small><br />');
$osC_CategoryTree->setSpacerString(' ', 4);
$osC_CategoryTree->setShowCategoryProductCount((BOX_CATEGORIES_SHOW_PRODUCT_COUNT == '1') ? true : false);
/*
* Modified andre
*
* Не показывать категории к которым нет товаров
*/
$osC_CategoryTree->setShowEmptyNodes(false);
/*
* end
*/
$this->_content = $osC_CategoryTree->getTree();
}
Правда, немного расширил buildBranchArray. Там, по аналогии с getData, добавил элементов в массив результата:
было:
$result[] = array('id' => $category_link,
'title' => str_repeat($this->spacer_string, $this->spacer_multiplier * $level) . $category['name']
);
стало
$result[] = array('id' => $category_link,
'title' => str_repeat($this->spacer_string, $this->spacer_multiplier * $level) . $category['name'],
'name' => $category['name'],
'image' => $category['image'],
'count' => $category['count'],
'category_id' => $category_id
);