zoukankan      html  css  js  c++  java
  • zencart侧边导航点击一级目录展开二级目录

     

    [ ]  来源: 未知 作者:wtozz_admin 我要投稿
    zencart侧边导航点击一级目录展开二级目录


    zen cart Categories默认的是只显示一级目录,当点开一级后才能展开二级目录等,若要让它把一级和二级并列展开,则要更改些东西。


    includesclassescategory_tree.php替换这下面的 代码即可


    <?php
    /**
     * category_tree Class.
     *
     * @package classes
     * @copyright Copyright 2003-2006 Zen Cart Development Team
     * @copyright Portions Copyright 2003 osCommerce
     * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0
     * @version $Id: category_tree.php 3041 2006-02-15 21:56:45Z wilt $
     */
    if (!defined('IS_ADMIN_FLAG')) {
      die('Illegal Access');
    }
    /**
     * category_tree Class.
     * This class is used to generate the category tree used for the categories sidebox
     *
     * @package classes
     */
    class category_tree extends base {

      function zen_category_tree($product_type = "all") {
        global $db, $cPath;
       if($cPath != '') global $cPath_array;
        if ($product_type != 'all') {
          $sql = "select type_master_type from " . TABLE_PRODUCT_TYPES . "
                    where type_master_type = " . $product_type . "";
          $master_type_result = $db->Execute($sql);
          $master_type = $master_type_result->fields['type_master_type'];
        }
        $this->tree = array();
        if ($product_type == 'all') {
          $categories_query = "select c.categories_id, cd.categories_name, c.parent_id, c.categories_image
                                 from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd
                                 where c.parent_id = 0
                                 and c.categories_id = cd.categories_id
                                 and cd.language_id='" . (int)$_SESSION['languages_id'] . "'
                                 and c.categories_status= 1
                                 order by sort_order, cd.categories_name";
        } else {
          $categories_query = "select ptc.category_id as categories_id, cd.categories_name, c.parent_id, c.categories_image
                                 from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd, " . TABLE_PRODUCT_TYPES_TO_CATEGORY . " ptc
                                 where c.parent_id = 0
                                 and ptc.category_id = cd.categories_id
                                 and ptc.product_type_id = " . $master_type . "
                                 and c.categories_id = ptc.category_id
                                 and cd.language_id=" . (int)$_SESSION['languages_id'] ."
                                 and c.categories_status= 1
                                 order by sort_order, cd.categories_name";
        }
         $categories = $db->Execute($categories_query, '', true, 150);
        while (!$categories->EOF)  {
        if($cPath == '') $cPath_array[$i++]=$categories->fields['categories_id'];
          $this->tree[$categories->fields['categories_id']] =
         array(  'name' => $categories->fields['categories_name'],
               'parent' => $categories->fields['parent_id'],
               'level' => 0,
               'path' => $categories->fields['categories_id'],
               'image' => $categories->fields['categories_image'],
               'next_id' => false);

          if (isset($parent_id)) {
            $this->tree[$parent_id]['next_id'] = $categories->fields['categories_id'];
          }

          $parent_id = $categories->fields['categories_id'];

          if (!isset($first_element)) {
            $first_element = $categories->fields['categories_id'];
          }
          $categories->MoveNext();
        }
        if (1) {
          $new_path = '';
          reset($cPath_array);
          while (list($key, $value) = each($cPath_array)) {
          //$new_path = '';
            unset($parent_id);
            unset($first_id);
            if ($product_type == 'all') {
              $categories_query = "select c.categories_id, cd.categories_name, c.parent_id, c.categories_image
                                   from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd
                                   where c.parent_id = " . (int)$value . "
                                   and c.categories_id = cd.categories_id
                                   and cd.language_id=" . (int)$_SESSION['languages_id'] . "
                                   and c.categories_status= 1
                                   order by sort_order, cd.categories_name";
            } else {
              /*
              $categories_query = "select ptc.category_id as categories, cd.categories_name, c.parent_id, c.categories_image
              from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd, " . TABLE_PRODUCT_TYPES_TO_CATEGORY . " ptc
              where c.parent_id = '" . (int)$value . "'
              and ptc.category_id = cd.categories_id
              and ptc.product_type_id = '" . $master_type . "'
              and cd.language_id='" . (int)$_SESSION['languages_id'] . "'
              and c.categories_status= '1'
              order by sort_order, cd.categories_name";
              */
              $categories_query = "select ptc.category_id as categories_id, cd.categories_name, c.parent_id, c.categories_image
                                 from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd, " . TABLE_PRODUCT_TYPES_TO_CATEGORY . " ptc
                                 where c.parent_id = " . (int)$value . "
                                 and ptc.category_id = cd.categories_id
                                 and ptc.product_type_id = " . $master_type . "
                                 and c.categories_id = ptc.category_id
                                 and cd.language_id=" . (int)$_SESSION['languages_id'] ."
                                 and c.categories_status= 1
                                 order by sort_order, cd.categories_name";

            }

            $rows = $db->Execute($categories_query);
            if ($rows->RecordCount()>0) {
              $new_path .= $value;
              while (!$rows->EOF) {
                $this->tree[$rows->fields['categories_id']] = array('name' => $rows->fields['categories_name'],
                'parent' => $rows->fields['parent_id'],
                'level' => $key+1,
                'path' => $new_path . '_' . $rows->fields['categories_id'],
                'image' => $categories->fields['categories_image'],
                'next_id' => false);

                if (isset($parent_id)) {
                  $this->tree[$parent_id]['next_id'] = $rows->fields['categories_id'];
                }

                $parent_id = $rows->fields['categories_id'];
                if (!isset($first_id)) {
                  $first_id = $rows->fields['categories_id'];
                }

                $last_id = $rows->fields['categories_id'];
                $rows->MoveNext();
              }
              $this->tree[$last_id]['next_id'] = $this->tree[$value]['next_id'];
              $this->tree[$value]['next_id'] = $first_id;
              $new_path .= '_';
            } else {
              break;
            }
          }
        }
        $row = 0;
        return $this->zen_show_category($first_element, $row);
      }

      function zen_show_category($counter,$ii) {
        global $cPath_array;

        $this->categories_string = "";

        for ($i=0; $i<$this->tree[$counter]['level']; $i++) {
          if ($this->tree[$counter]['parent'] != 0) {
           $this->categories_string="";  //一二级目录排列不一致时,清空循环加载的空格
            $this->categories_string .= CATEGORIES_SUBCATEGORIES_INDENT;
          }
        }


        if ($this->tree[$counter]['parent'] == 0) {
          $cPath_new = 'cPath=' . $counter;
          $this->box_categories_array[$ii]['top'] = 'true';
        } else {
          $this->box_categories_array[$ii]['top'] = 'false';
          $cPath_new = 'cPath=' . $this->tree[$counter]['path'];
          $this->categories_string .= CATEGORIES_SEPARATOR_SUBS;
        }
        $this->box_categories_array[$ii]['path'] = $cPath_new;

        if (isset($cPath_array) && in_array($counter, $cPath_array)) {
          $this->box_categories_array[$ii]['current'] = true;
        } else {
          $this->box_categories_array[$ii]['current'] = false;
        }

        // display category name
        $this->box_categories_array[$ii]['name'] = $this->categories_string . $this->tree[$counter]['name'];

        // make category image available in case needed
        $this->box_categories_array[$ii]['image'] = $this->tree[$counter]['image'];

        if (zen_has_category_subcategories($counter)) {
          $this->box_categories_array[$ii]['has_sub_cat'] = true;
        } else {
          $this->box_categories_array[$ii]['has_sub_cat'] = false;
        }

        if (SHOW_COUNTS == 'true') {
          $products_in_category = zen_count_products_in_category($counter);
          if ($products_in_category > 0) {
            $this->box_categories_array[$ii]['count'] = $products_in_category;
          } else {
            $this->box_categories_array[$ii]['count'] = 0;
          }
        }

        if ($this->tree[$counter]['next_id'] != false) {
          $ii++;
          $this->zen_show_category($this->tree[$counter]['next_id'], $ii);
        }
        return $this->box_categories_array;
      }
    }
    ?>
  • 相关阅读:
    .NET 3.54.0 并行计算的支持
    温故知新ASP.NET 2.0(C#)(5) Localization(本地化,多语言)
    [翻译]asp.net 2.0中通过压缩ViewState改善性能
    C# 2.0 泛型
    温故知新ASP.NET 2.0(C#)(8) DataSourceControl(数据源控件)
    温故知新ASP.NET 2.0(C#)(1) MasterPage(母版页)
    [翻译]asp.net 2.0中页的生存周期(Lifecycle)和动态控件
    [翻译]ASP.NET AJAX之内部揭秘
    乐在其中设计模式(C#) 命令模式(Command Pattern)
    [翻译]ASP.NET AJAX调用Web Service
  • 原文地址:https://www.cnblogs.com/alex-13/p/3659398.html
Copyright © 2011-2022 走看看