Index: kernel/db/cat_tag_processor.php =================================================================== --- kernel/db/cat_tag_processor.php (revision 13571) +++ kernel/db/cat_tag_processor.php (working copy) @@ -653,23 +653,27 @@ list ($view_perm, $view_filter) = $count_helper->GetPermissionClause('c', 'perm_cache'); // get category list (permission based) - $sql = 'SELECT c.'.$title_field.', c.'.$id_field.' + $sql = 'SELECT c.'.$title_field.' AS CategoryName, c.'.$id_field.', c.l' . $this->Application->GetVar('m_lang') . '_CachedNavbar AS CachedNavbar FROM '.$table_name.' c INNER JOIN '.TABLE_PREFIX.'PermCache perm_cache ON c.CategoryId = perm_cache.CategoryId WHERE (ParentId = '.$category_id.') AND ('.$view_filter.') AND (perm_cache.PermId = '.$view_perm.') AND (c.Status = '.STATUS_ACTIVE.') ORDER BY c.'.$title_field.' ASC'; - $categories = $this->Conn->GetCol($sql, $id_field); + $categories = $this->Conn->Query($sql, $id_field); $block_params = $this->prepareTagParams($params); $block_params['name'] = $params['render_as']; $block_params['strip_nl'] = 2; $ret = ''; - foreach ($categories as $category_id => $category_name) { + foreach ($categories as $category_id => $category_data) { // print category $block_params['separator'] = isset($params['category_id']) ? $params['separator'] : ''; // return original separator, remove separator for top level categories $block_params['category_id'] = $category_id; - $block_params['category_name'] = $category_name; + $block_params['category_name'] = $category_data['CategoryName']; + + $cached_navbar = preg_replace('/^(Content&\|&|Content)/i', '', $category_data['CachedNavbar']); + $block_params['full_path'] = str_replace('&|&', ' > ', $cached_navbar); + $ret .= $this->Application->ParseBlock($block_params); // print it's children @@ -696,18 +700,22 @@ $title_field = $this->Application->getUnitOption('c', 'TitleField'); $table_name = $this->Application->getUnitOption('c', 'TableName'); - $sql = 'SELECT '.$title_field.', '.$id_field.' + $sql = 'SELECT '.$title_field.' AS CategoryName, '.$id_field.', l' . $this->Application->GetVar('m_lang') . '_CachedNavbar AS CachedNavbar FROM '.$table_name.' WHERE '.$id_field.' IN ('.implode(',', $category_ids).')'; - $categories = $this->Conn->GetCol($sql, $id_field); + $categories = $this->Conn->Query($sql, $id_field); $block_params = $this->prepareTagParams($params); $block_params['name'] = $params['render_as']; $ret = ''; - foreach ($categories as $category_id => $category_name) { + foreach ($categories as $category_id => $category_data) { $block_params['category_id'] = $category_id; - $block_params['category_name'] = $category_name; + $block_params['category_name'] = $category_data['CategoryName']; + + $cached_navbar = preg_replace('/^(Content&\|&|Content)/i', '', $category_data['CachedNavbar']); + $block_params['full_path'] = str_replace('&|&', ' > ', $cached_navbar); + $ret .= $this->Application->ParseBlock($block_params); }