/** * This function is used for the frontend to display a * complete link list of top-level categories * * @param int $category_id The category to be highlighted * @param string $links_css_class The css class that marks mainlevel links * @param string $list_css_class (deprecated) * @param string $highlighted_style The css styles that format the hightlighted category * @return string HTML code with the link list */ function get_category_tree($category_id = 0, $links_css_class = "mainlevel", $list_css_class = "mm123", $highlighted_style = "font-style:italic;") { global $sess; $categories = ps_product_category::getCategoryTreeArray(); // Get array of category objects $result = ps_product_category::sortCategoryTreeArray($categories); // Sort array of category objects $row_list = $result['row_list']; $depth_list = $result['depth_list']; $category_tmp = $result['category_tmp']; $nrows = sizeof($category_tmp); // Copy the Array into an Array with auto_incrementing Indexes $key = array_keys($categories); // Array of category table primary keys $nrows = $size = sizeOf($key); // Category count $html = ""; // Find out if we have subcategories to display $allowed_subcategories = array(); if (!empty($categories[$category_id]["category_parent_id"])) { // Find the Root Category of this category $root = $categories[$category_id]; $allowed_subcategories[] = $categories[$category_id]["category_parent_id"]; // Loop through the Tree up to the root while (!empty($root["category_parent_id"])) { $allowed_subcategories[] = $categories[$root["category_child_id"]]["category_child_id"]; $root = $categories[$root["category_parent_id"]]; } } // Fix the empty Array Fields if ($nrows < count($row_list)) { $nrows = count($row_list); } // Now show the categories for ($n = 0; $n < $nrows; $n++) { if (!isset($row_list[$n]) || !isset($category_tmp[$row_list[$n]]["category_child_id"])) { continue; } if ($category_id == $category_tmp[$row_list[$n]]["category_child_id"]) { $style = $highlighted_style; } else { $style = ""; } $allowed = false; if ($depth_list[$n] > 0) { // Subcategory! if (isset($root) && in_array($category_tmp[$row_list[$n]]["category_child_id"], $allowed_subcategories) || $category_tmp[$row_list[$n]]["category_parent_id"] == $category_id || $category_tmp[$row_list[$n]]["category_parent_id"] == @$categories[$category_id]["category_parent_id"]) { $allowed = true; } } else { $allowed = true; } $append = ""; if ($allowed) { if ($style == $highlighted_style) { $append = 'id="active_menu"'; } if ($depth_list[$n] > 0) { $css_class = "sublevel"; } else { $css_class = $links_css_class; } $catname = shopMakeHtmlSafe($category_tmp[$row_list[$n]]["category_name"]); $html .= ' <a title="' . $catname . '" style="display:block;' . $style . '" class="' . $css_class . '" href="' . $sess->url(URL . "index.php?page=shop.browse&category_id=" . $category_tmp[$row_list[$n]]["category_child_id"]) . '" ' . $append . '>' . str_repeat(" ", $depth_list[$n]) . $catname . ps_product_category::products_in_category($category_tmp[$row_list[$n]]["category_child_id"]) . '</a>'; } } return $html; }
* @subpackage html * @copyright Copyright (C) 2004-2008 soeren - All rights reserved. * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php * VirtueMart is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * See /administrator/components/com_virtuemart/COPYRIGHT.php for copyright notices and details. * * http://virtuemart.net */ mm_showMyFileName(__FILE__); global $ps_product_category; require_once CLASSPATH . "pageNavigation.class.php"; require_once CLASSPATH . "htmlTools.class.php"; $categories = ps_product_category::getCategoryTreeArray(false, $keyword); // Get array of category objects $result = ps_product_category::sortCategoryTreeArray($categories); $nrows = $size = sizeOf($categories); // Category count $id_list = $result['id_list']; $row_list = $result['row_list']; $depth_list = $result['depth_list']; $categories = $result['category_tmp']; // Create the Page Navigation $pageNav = new vmPageNav($nrows, $limitstart, $limit); for ($n = $pageNav->limitstart; $n < $nrows; $n++) { @$levelcounter[$categories[$row_list[$n]]["category_parent_id"]]++; } // Create the List Object with page navigation $listObj = new listFactory($pageNav);