zencart侧边导航点击一级目录展开二级目录

mac2022-06-30  99

 

[ ]    来源: 未知  作者:wtozz_admin  我要投稿 zencart侧边导航点击一级目录展开二级目录 zen cart Categories默认的是只显示一级目录,当点开一级后才能展开二级目录等,若要让它把一级和二级并列展开,则要更改些东西。 includes\classes\category_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;  }}?>

转载于:https://www.cnblogs.com/alex-13/p/3659398.html

相关资源:zencart 左边导航菜单无限分级
最新回复(0)