模块说明
根据$cPath参数查询数据表,返回分类列表.$cPath不存在时返回顶级分类列表,当$cPath存在时分析$cPath_array数组,根据数组元素查找相应下级分类,
引用类文件category_tree.php
第一遍查询,得到以ID为键的二维数组tree,this->tree[categories_id] = array(
'name' => categories_name,
'parent' => parent_id,
'level' => 0/1/2,
'path' => c0/c0_c1,
'image' => categories_image,
'next_id' => nextid/false
)
利用tree进行二次查询,生成自然数字为键的二维数组box_categories_array,返回该数组.
$this->box_categories_array[0-9]= array(
'top' => 'true'/'false',
'path' => cPath=cid,
'current' => true/false,
'image' => image,
'name' => name,
'has_sub_cat' => true/false,
'count' => count/0,
)
模块程序文件
<?php
$main_category_tree = new category_tree;
$row = 0;
$box_categories_array = array();
$check_categories = $db->Execute("select categories_id from " . TABLE_CATEGORIES . " where categories_status=1 limit 1");
if ($check_categories->RecordCount() > 0) {
$box_categories_array = $main_category_tree->zen_category_tree();
}
require($template->get_template_dir('tpl_categories.php',DIR_WS_TEMPLATE, $current_page_base,'sideboxes'). '/tpl_categories.php');
$title = BOX_HEADING_CATEGORIES;
$title_link = false;
require($template->get_template_dir($column_box_default, DIR_WS_TEMPLATE, $current_page_base,'common') . '/' . $column_box_default);
?>
模板内容文件
<?php
$content = "";
$content .= '<div id="' . str_replace('_', '-', $box_id . 'Content') . '" class="sideBoxContent">' . "\n";
for ($i=0;$i<sizeof($box_categories_array);$i++) {
switch(true) {
case ($box_categories_array[$i]['top'] == 'true'):
$new_style = 'category-top';
break;
case ($box_categories_array[$i]['has_sub_cat']):
$new_style = 'category-subs';
break;
default:
$new_style = 'category-products';
}
if (zen_get_product_types_to_category($box_categories_array[$i]['path']) == 3 or ($box_categories_array[$i]['top'] != 'true' and SHOW_CATEGORIES_SUBCATEGORIES_ALWAYS != 1)) {
// skip if this is for the document box (==3)
} else {
$content .= '<a class=" . $new_style . " href="' . zen_href_link(FILENAME_DEFAULT, $box_categories_array[$i]['path']) . '">';
if ($box_categories_array[$i]['current']) {
if ($box_categories_array[$i]['has_sub_cat']) {
$content .= '<span class="category-subs-parent">' . $box_categories_array[$i]['name'] . '</span>';
} else {
$content .= '<span class="category-subs-selected">' . $box_categories_array[$i]['name'] . '</span>';
}
} else {
$content .= $box_categories_array[$i]['name'];
}
if ($box_categories_array[$i]['has_sub_cat']) {
$content .= CATEGORIES_SEPARATOR;
}
$content .= '</a>';
if (SHOW_COUNTS == 'true') {
if ((CATEGORIES_COUNT_ZERO == '1' and $box_categories_array[$i]['count'] == 0) or $box_categories_array[$i]['count'] >= 1) {
$content .= CATEGORIES_COUNT_PREFIX . $box_categories_array[$i]['count'] . CATEGORIES_COUNT_SUFFIX;
}
}
$content .= '<br />' . "\n";
}
}
$content .= '</div>';
?>
相应数据表
categoriescategories_id
categories_image
parent_id
sort_order
date_added
last_modified
categories_status
categories_description
categories_id
language_id
categories_name
categories_description