zen cart 类 category_tree 位于 /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 */ // 继承 base 基本类 class category_tree extends base { // zen_category_tree 方法,传递一个参数:$product_type,默认值是:all function zen_category_tree($product_type = "all") { global $db, $cPath, $cPath_array; // 定义3个 global 变量。$cPath 和 $cPath_array 可以在 /includes/init_includes/init_category_path.php 文件中找到 // 如果 $product_type 不是 'all',则执行以下代码(因为默认值是 all,所以如果不传递任何参数,则以下代码不会被执行) if ($product_type != 'all') { // 将一条 sql 语句赋值给 $sql 变量。该语句的作用是 // 从 product_types 数据库表中选择 type_master_type 字段,必须是和 $product_type 相等的 type_master_type 字段 $sql = "select type_master_type from " . TABLE_PRODUCT_TYPES . " where type_master_type = " . $product_type . ""; // 执行 $sql 语句 $master_type_result = $db->Execute($sql); // 从 $master_type_result 对象中得到 type_master_type 字段值 $master_type = $master_type_result->fields['type_master_type']; } $this->tree = array(); // 定义一个类成员 tree 为数组,$this->tree 是类变量的表示方法,如果不在类里面定义,其实就是 $tree if ($product_type == 'all') { // 如果 $product_type 的值等于 all // 将一条 sql 语句赋值给 $categories_query // 该语句的作用是多表查询 categories 和 categories_description 数据库表 // 返回 categories 表中的 categories_id,parent_id,categories_image 字段;categories_description 表中的 categories_name 字段 // 返回结果必须符合:parent_id = 0,同一个 categories_id,language_id = $_SESSION['languages_id'] 以及 categories_status= 1 // 返回结果按照 categories_name 排序 $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 { // 如果 $product_type 不为 all,则执行以下代码 // 将一条 sql 语句赋值给 $categories_query,代码分析如上 $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_query 语句 $categories = $db->Execute($categories_query, '', true, 150); while (!$categories->EOF) { // 查询结果没有出尽,则循环执行以下语句 // 把查询得到的 categories_name,parent_id,categories_id,categories_image 和其它几个值合成一个数组,赋值给 $this->tree(X) // 这个 X 就是:$categories->fields['categories_id'] 即商品分类的 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)) { // 如果存在 $parent_id 这个变量 // 把查询得到的 categories_id 赋值给 $this->tree[X]['next_id'],在上面的代码中,next_id 这个值默认是 false $this->tree[$parent_id]['next_id'] = $categories->fields['categories_id']; } // 把查询得到的 categories_id 赋值给 $parent_id; $parent_id = $categories->fields['categories_id']; if (!isset($first_element)) { // 如果不存在 $first_element 这个变量 // 将查询得到的 categories_id 赋值给 $first_element $first_element = $categories->fields['categories_id']; } $categories->MoveNext(); // $categories 往后移动一个指针 } if (zen_not_null($cPath)) { // 如果 $cPath 不为空 $new_path = ''; reset($cPath_array); // 把 $cPath_array 数组的内部指针指向第一个元素,并返回这个元素的值 while (list($key, $value) = each($cPath_array)) { // 把 $cPath_array 元素为 $key $value 变量赋值 unset($parent_id); // 销毁 $parent_id 变量 unset($first_id); // 销毁 $first_id 变量 if ($product_type == 'all') { // 如果 $product_type 的值等于 all // sql 查询语句 $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 { // 如果 $product_type 的值不为 all /* $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"; */ // sql 查询语句,可以和上一条比较,看有什么不同 $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); // 执行 $categories_query 查询语句 if ($rows->RecordCount()>0) { // 如果 $rows 对象中的 RecordCount() 方法返回的结果大于0 $new_path .= $value; // 将 $cPath_array 数组的值,累计赋值给 $new_path while (!$rows->EOF) { // 如果 $rows 没出尽 $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 .= 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; } } ?>
您还没有登录,请您登录后再发表评论
自动与Zen同行(例如 )甚至其他网桥共享新消息 :male_sign::male_sign: 可在过时的macOS硬件上运行(OS X / macOS 10.10及更高版本,清除旧Mac mini上的灰尘)! 支持原始文件传输。 Zen Bridge的GUI包装!链接...
高度可定制的 lua 回调on_open , on_close 插件: 禁用 gitsigns 隐藏状态行增加字体大小打开新的非浮动窗口时, Zen Mode会自动关闭与插件配合使用可在 Zen 窗口内打开新缓冲区使用:ZenMode 、 :close或:quit关闭 ...
禅模 开源团队管理和沟通工具。 看板项目委员会。 在看板中跟踪待办事项和状态。 自动同步。 无论您进行什么更改,甚至拖放任务位置,都可以与所有其他pod成员同步。 实时通讯。 与pod成员实时聊天。...
Zen Cart 1.3.9h 是一个流行的开源电子商务解决方案,专为在线商店设计和管理。配置文件优化是提升Zen Cart性能和安全性的关键步骤,它涉及到调整系统设置以达到最佳运行状态。以下是对Zen Cart 1.3.9h配置文件优化...
Zen-Cart是一个开源的电子商务平台,它为在线商家提供了一个功能强大的购物车系统。"Login_Box"是Zen-Cart中的一个重要模块,专为提升用户体验而设计,尤其关注顾客登录过程的便捷性。这个模块使客户能够在任何页面...
Zen Cart是一款开源电子商务解决方案,它提供了丰富的功能和灵活性,帮助商家建立和管理在线商店。"Zen Cart分类插件"是专门为Zen Cart设计的一款扩展,旨在优化产品列表页面的商品分类展示方式,以提升用户体验和...
Zen Cart 是一个开源的电子商务购物车系统,专为在线商家设计,提供强大的商品管理和销售功能。这个模板版本1.3.9是...通过下载和安装free_zen_cart_template1_139.zip,商家可以开始打造他们个性化的电子商务平台。
- **所属项目版本**:英文版Zen-Cart v1.3.9h - **文件路径**:`includes\templates\template_default\common\html_header.php` - **所属类别**:公共模板文件 #### 主要功能与结构 `html_header.php`的主要功能是...
- **隶属版本**:英文版Zen-Cart v1.3.9h - **系统归属**:公共模板文件 通过以上分析,我们可以了解到`tpl_header.php`文件在ZenCart系统中的作用及其内部实现机制。对于开发者而言,掌握这些知识有助于更好地定制...
Zen Cart 是一个开源的电子商务购物车系统,专为在线商家设计,提供强大的功能和灵活性。这个免费模板集合是为了帮助商家自定义他们的Zen Cart商店外观,使其更具吸引力并符合品牌形象。 一、Zen Cart 系统介绍 Zen...
禅宗接力 :speech_balloon: :brain: 为和构建的可自我托管且易于破解的websockets中继服务器– 开源并基于完善的JS库构建。...使用软件包管理器npm安装Zen Relay的依赖项。 git clone https://github.c
Zen Cart 1.5.1 是一款开源电子商务解决方案,专为在线商家设计,提供全面的购物车功能。这款中文版的 Zen Cart 旨在满足中国及中文使用者的需求,使其能够更方便地建立和管理网上商店。下面我们将深入探讨 Zen Cart...
Zen Cart 1.5.0 模板是一个专为电子商务平台设计的专业模板,适用于Zen Cart系统的两个主要版本:V1.3.9和V1.5.0。这个免费模板以其清新的绿色设计和用户友好的界面,为在线商家提供了一个吸引顾客、提升购物体验的...
Zen Cart 是一个开源的电子商务购物车系统,专为在线商家设计,用于建立和管理在线商店。在Zen Cart中,"分类产品列表显示"是商店核心功能之一,它涉及到如何展示和组织商店的商品,以便于顾客浏览和购买。这个功能...
### ZEN CART判断首页、分类页与产品页的相关知识点 #### 一、ZEN CART简介 ZEN CART是一款开源的电子商务平台,它基于PHP语言开发,并使用MySQL数据库进行数据存储。由于其高度可定制性和易用性,ZEN CART成为了...
Zen Cart 是一个开源的电子商务购物车系统,专为在线商家设计,提供全面的电商解决方案。这个"Zen Cart资料"的压缩包很可能包含了关于Zen Cart的各种资源,包括安装指南、用户手册、开发者文档、模板设计、插件、...
Zen Cart 1.3.9h 是一个流行的开源电子商务解决方案,专为在线商家设计,以构建功能丰富的网上商店。这个中文版是针对中国用户优化的,不仅提供了完整的英文界面,还支持简体中文,使国内用户能够更加方便地进行设置...
【描述】"fast_and_easy_checkout_for_zen_cart_1-8-1.zip" 这个压缩包文件包含了"快速便捷结账"模块的所有必要组件,用于升级或安装到Zen Cart 1.8.1上。用户可以下载此ZIP文件,解压后将内容上传到Zen Cart网站的...
bemto组件 :bento_box: 将与使用的智能组件。 最好与一起使用。... 当然,还有BEM的Vitaly ,Zen-Coding的Vadim (我迫不及待地要实现),以及负责所有底层工具(包括React,样式化组件,styleguid
Zen Cart是一种开源电子商务解决方案,专为在线商店设计。在Zen Cart中,商品分类是组织产品的重要方式。"ZEN CART直接显示下级分类模块"指的是一个功能,它允许您在商店的前端界面直接展示商品分类的子类别,而无需...
相关推荐
自动与Zen同行(例如 )甚至其他网桥共享新消息 :male_sign::male_sign: 可在过时的macOS硬件上运行(OS X / macOS 10.10及更高版本,清除旧Mac mini上的灰尘)! 支持原始文件传输。 Zen Bridge的GUI包装!链接...
高度可定制的 lua 回调on_open , on_close 插件: 禁用 gitsigns 隐藏状态行增加字体大小打开新的非浮动窗口时, Zen Mode会自动关闭与插件配合使用可在 Zen 窗口内打开新缓冲区使用:ZenMode 、 :close或:quit关闭 ...
禅模 开源团队管理和沟通工具。 看板项目委员会。 在看板中跟踪待办事项和状态。 自动同步。 无论您进行什么更改,甚至拖放任务位置,都可以与所有其他pod成员同步。 实时通讯。 与pod成员实时聊天。...
Zen Cart 1.3.9h 是一个流行的开源电子商务解决方案,专为在线商店设计和管理。配置文件优化是提升Zen Cart性能和安全性的关键步骤,它涉及到调整系统设置以达到最佳运行状态。以下是对Zen Cart 1.3.9h配置文件优化...
Zen-Cart是一个开源的电子商务平台,它为在线商家提供了一个功能强大的购物车系统。"Login_Box"是Zen-Cart中的一个重要模块,专为提升用户体验而设计,尤其关注顾客登录过程的便捷性。这个模块使客户能够在任何页面...
Zen Cart是一款开源电子商务解决方案,它提供了丰富的功能和灵活性,帮助商家建立和管理在线商店。"Zen Cart分类插件"是专门为Zen Cart设计的一款扩展,旨在优化产品列表页面的商品分类展示方式,以提升用户体验和...
Zen Cart 是一个开源的电子商务购物车系统,专为在线商家设计,提供强大的商品管理和销售功能。这个模板版本1.3.9是...通过下载和安装free_zen_cart_template1_139.zip,商家可以开始打造他们个性化的电子商务平台。
- **所属项目版本**:英文版Zen-Cart v1.3.9h - **文件路径**:`includes\templates\template_default\common\html_header.php` - **所属类别**:公共模板文件 #### 主要功能与结构 `html_header.php`的主要功能是...
- **隶属版本**:英文版Zen-Cart v1.3.9h - **系统归属**:公共模板文件 通过以上分析,我们可以了解到`tpl_header.php`文件在ZenCart系统中的作用及其内部实现机制。对于开发者而言,掌握这些知识有助于更好地定制...
Zen Cart 是一个开源的电子商务购物车系统,专为在线商家设计,提供强大的功能和灵活性。这个免费模板集合是为了帮助商家自定义他们的Zen Cart商店外观,使其更具吸引力并符合品牌形象。 一、Zen Cart 系统介绍 Zen...
禅宗接力 :speech_balloon: :brain: 为和构建的可自我托管且易于破解的websockets中继服务器– 开源并基于完善的JS库构建。...使用软件包管理器npm安装Zen Relay的依赖项。 git clone https://github.c
Zen Cart 1.5.1 是一款开源电子商务解决方案,专为在线商家设计,提供全面的购物车功能。这款中文版的 Zen Cart 旨在满足中国及中文使用者的需求,使其能够更方便地建立和管理网上商店。下面我们将深入探讨 Zen Cart...
Zen Cart 1.5.0 模板是一个专为电子商务平台设计的专业模板,适用于Zen Cart系统的两个主要版本:V1.3.9和V1.5.0。这个免费模板以其清新的绿色设计和用户友好的界面,为在线商家提供了一个吸引顾客、提升购物体验的...
Zen Cart 是一个开源的电子商务购物车系统,专为在线商家设计,用于建立和管理在线商店。在Zen Cart中,"分类产品列表显示"是商店核心功能之一,它涉及到如何展示和组织商店的商品,以便于顾客浏览和购买。这个功能...
### ZEN CART判断首页、分类页与产品页的相关知识点 #### 一、ZEN CART简介 ZEN CART是一款开源的电子商务平台,它基于PHP语言开发,并使用MySQL数据库进行数据存储。由于其高度可定制性和易用性,ZEN CART成为了...
Zen Cart 是一个开源的电子商务购物车系统,专为在线商家设计,提供全面的电商解决方案。这个"Zen Cart资料"的压缩包很可能包含了关于Zen Cart的各种资源,包括安装指南、用户手册、开发者文档、模板设计、插件、...
Zen Cart 1.3.9h 是一个流行的开源电子商务解决方案,专为在线商家设计,以构建功能丰富的网上商店。这个中文版是针对中国用户优化的,不仅提供了完整的英文界面,还支持简体中文,使国内用户能够更加方便地进行设置...
【描述】"fast_and_easy_checkout_for_zen_cart_1-8-1.zip" 这个压缩包文件包含了"快速便捷结账"模块的所有必要组件,用于升级或安装到Zen Cart 1.8.1上。用户可以下载此ZIP文件,解压后将内容上传到Zen Cart网站的...
bemto组件 :bento_box: 将与使用的智能组件。 最好与一起使用。... 当然,还有BEM的Vitaly ,Zen-Coding的Vadim (我迫不及待地要实现),以及负责所有底层工具(包括React,样式化组件,styleguid
Zen Cart是一种开源电子商务解决方案,专为在线商店设计。在Zen Cart中,商品分类是组织产品的重要方式。"ZEN CART直接显示下级分类模块"指的是一个功能,它允许您在商店的前端界面直接展示商品分类的子类别,而无需...