holy shit

寺夺喜从天降

zencart分类列表模块分析

模块说明

根据$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>';
?>


相应数据表

categories
    categories_id
    categories_image
    parent_id
    sort_order
    date_added
    last_modified
    categories_status
categories_description
    categories_id
    language_id
    categories_name
    categories_description
posted @ 2011-04-09 16:52  潜水鱼  阅读(2102)  评论(1编辑  收藏  举报

holy shit on foot