Index: trunk/core/units/categories/categories_event_handler.php =================================================================== diff -u -N -r8491 -r8562 --- trunk/core/units/categories/categories_event_handler.php (.../categories_event_handler.php) (revision 8491) +++ trunk/core/units/categories/categories_event_handler.php (.../categories_event_handler.php) (revision 8562) @@ -141,9 +141,15 @@ if ("$parent_cat_id" != 'any') { if ($event->getEventParam('recursive')) { - $current_path = $this->Conn->GetOne('SELECT ParentPath FROM '.TABLE_PREFIX.'Category WHERE CategoryId='.$parent_cat_id); - $subcats = $this->Conn->GetCol('SELECT CategoryId FROM '.TABLE_PREFIX.'Category WHERE ParentPath LIKE "'.$current_path.'%" '); - $object->addFilter('parent_filter', 'ParentId IN ('.implode(', ', $subcats).')'); + if ($parent_cat_id > 0) { + // not "Home" category + $sql = 'SELECT TreeLeft, TreeRight + FROM '.TABLE_PREFIX.'Category + WHERE CategoryId = '.$parent_cat_id; + $tree_indexes = $this->Conn->GetRow($sql); + + $object->addFilter('parent_filter', TABLE_PREFIX.'Category.TreeLeft BETWEEN '.$tree_indexes['TreeLeft'].' AND '.$tree_indexes['TreeRight']); + } } else { $object->addFilter('parent_filter', 'ParentId = '.$parent_cat_id);