这是一篇记录在日记里面的技术文档,其实是对ecshop的二次开发。主要作用是将一个子类对应多个父类,并指定条跳转url的功能。ecshop是一款在线购物网站,感兴趣的可以下载源码看看。我们看看具体是怎么修改的。

  1、数据库表“表前缀_category”添加如下字段

alter  TABLE `ga_category` add `assign_child` varchar(255) default NULL;
alter  TABLE `ga_category` add `jump_url` varchar(255) default NULL;

  2、includes/lib_goods.php

  get_categories_tree、get_child_tree函数中的

$cat_arr[$row['cat_id']]['url'] = build_uri('category', array('cid' => $row['cat_id']), $row['cat_name']);

  改为

if(isset($row['jump_url']) != NULL && trim($row['jump_url']) != ''){$cat_arr[$row['cat_id']]['url'] = $row['jump_url'];}else{$cat_arr[$row['cat_id']]['url'] = build_uri('category', array('cid' => $row['cat_id']), $row['cat_name']);}

  将

$three_arr[$row['cat_id']]['cat_id'] = get_child_tree($row['cat_id']);

  改为

if(isset($row['assign_child']) != NULL && trim($row['assign_child']) != ''){$three_arr[$row['cat_id']]['cat_id'] = get_assign_child_tree($row['assign_child']);}else{$three_arr[$row['cat_id']]['cat_id'] = get_child_tree($row['cat_id']);}

  将将获取子类的sql

        $sql = 'SELECT cat_id,cat_name ,parent_id,is_show ' .'FROM ' . $GLOBALS['ecs']->table('category') ."WHERE parent_id = '$parent_id' AND is_show = 1 ORDER BY sort_order ASC, cat_id ASC";

  改为(添加assign_child, jump_url两个字段用于查询用)

        $sql = 'SELECT cat_id,cat_name ,parent_id,is_show, template_file, assign_child, jump_url ' .'FROM ' . $GLOBALS['ecs']->table('category') ."WHERE parent_id = '$parent_id' AND is_show = 1 ORDER BY sort_order ASC, cat_id ASC";

  并添加函数

function get_assign_child_tree($tree_id = ''){$three_arr = array();if($tree_id == '') return $three_arr;$child_sql = 'SELECT cat_id, cat_name, parent_id, is_show, assign_child, jump_url ' .'FROM ' . $GLOBALS['ecs']->table('category') ."WHERE cat_id in( $tree_id ) AND is_show = 1 ORDER BY sort_order ASC, cat_id ASC";$res = $GLOBALS['db']->getAll($child_sql);foreach ($res AS $row){if ($row['is_show'])$three_arr[$row['cat_id']]['id']   = $row['cat_id'];$three_arr[$row['cat_id']]['name'] = $row['cat_name'];if(isset($row['jump_url']) != NULL && trim($row['jump_url']) != ''){$three_arr[$row['cat_id']]['url'] = $row['jump_url'];}else{$three_arr[$row['cat_id']]['url']  = build_uri('category', array('cid' => $row['cat_id']), $row['cat_name']);}if (isset($row['cat_id']) != NULL){if(isset($row['assign_child']) != NULL && trim($row['assign_child']) != ''){$three_arr[$row['cat_id']]['cat_id'] = get_assign_child_tree($row['assign_child']);}else{$three_arr[$row['cat_id']]['cat_id'] = get_child_tree($row['cat_id']);}}}return $three_arr;}

  3、admin/category.php中作如下修改

  在($_REQUEST['act'] == 'insert')、if ($_REQUEST['act'] == 'update')的条件中的

$cat['grade'] = !empty($_POST['grade']) ? intval($_POST['grade']) : 0;
$cat['filter_attr'] = !empty($_POST['filter_attr']) ? implode(',', array_unique(array_diff($_POST['filter_attr'],array(0)))) : 0;

  后面添加

    $cat['jump_url']     = !empty($_POST['jump_url'])     ? trim($_POST['jump_url'])      : '';$cat['assign_child'] = !empty($_POST['assign_child']) ? trim($_POST['assign_child']) : '';

  4、在admin/templates/category_info.htm的

      <tr id="assign_child"><td class="label">{$lang.assign_child}:</td><td><input type="text" name='assign_child' value='{$cat_info.assign_child}' size="32" /></td></tr>

  中添加

      <tr id="jump_url"><td class="label">{$lang.jump_url}:</td><td><input type="text" name='jump_url' value='{$cat_info.jump_url}' size="32" /></td></tr>

  5、languages/zh-cn/admin/category.php中添加如下语言描述

  $_LANG['jump_url']='跳转url(指定跳转至的url)';

  $_LANG['assign_child']='指定子类(将其id填写在输入框中即可,多个是用应为的“,”号隔开)';

ecshop设置一个子类对应多个父类并指定跳转url的修改方法相关推荐

  1. python设置一个初始为0的计数器_python中统计计数的几种方法

    以下实例展示了 count() 方法的使用方法: 以上实例输出结果如下: 1) 使用字典dict() 循环遍历出一个可迭代对象中的元素,如果字典没有该元素,那么就让该元素作为字典的键,并将该键赋值为1 ...

  2. 一个空间绑定多个域名实现自动跳转的几种方法!

    如果只有一个ASP空间,而你又想放置多个多个站点,这些代码可以帮到你 第一个 程序代码 <% if Request.ServerVariables("SERVER_NAME" ...

  3. Linux上创建一个用户,并给该用户指定目录的权限,修改时区

    useradd user1 passwd user1 输入密码 然后指定可操作的目录 chown -R user1:root /usr/local/work/tomcat/webapps 修改时区: ...

  4. Java 中子类是否只继承父类的非私有变量和方法?

    今天在 CSDN 论坛中见到有人问在 Java 中子类是否只继承父类的非私有变量和方法(原贴在此).大部分跟贴都认为这句话是正确的,但是对于这个问题背后的本质理解却是错误的. 首先我们明确一下&quo ...

  5. Python 子类继承多个父类属性

    Python 子类继承多个父类属性 可能存在的误区 正确继承方法 可能存在的误区 python允许子类同时继承多个父类.但是在子类初始化父类时,单继承和多继承稍有不同.使用单继承的初始化方法会导致父类 ...

  6. 实现父类一个动物的类, 包括成员变量名字年龄皮毛颜色,带参数构造函数,动物类有一个方法,move,打印动物是可以动的 1.《实现一个子类老鼠的类,继承动物类,老鼠类继承父类成员变量,老鼠还有个自己的属

    编写一个程序,程序包括如下内容 实现父类一个动物的类, 包括成员变量名字年龄皮毛颜色,带参数构造函数,动物类有一个方法,move,打印动物是可以动的 1.<实现一个子类老鼠的类,继承动物类,老鼠 ...

  7. JAVA子类继承多个_Java的一个子类可以继承自多个父类。

    Java的一个子类可以继承自多个父类. 答:× 放样时的路径允许有几个?() 答:1个 下列有关有限合伙企业设立条件的表述中,不符合新颁布的<合伙企业法>规定的是( ) 答:有限合伙企业名 ...

  8. java实验:定义一个People类,为People类派生出一个子类Employee类

    //4.定义一个People类,它包含属性有姓名name和性别sex, //为People类派生出一个子类Employee类,为其增加两个属性年龄age和工资等级grade,工资等级分A.B.C三个等 ...

  9. java 中普通类继承,抽象类继承,接口类继承,子类一定要重写父类中的方法吗

    一.简单总结,需要重写的有 普通类继承抽象类,重写所有抽象类方法:(不包括普通方法) 普通类继承接口,重写所有接口方法.(不包括default关键字修饰的方法) 详解见下: 普通类继承,并非一定要重写 ...

最新文章

  1. 暑假集训8.10-网络流套树剖套线段树
  2. Ring3挂起进程,跟恢复进程.
  3. 项目打包去掉调试时的NSLog、print
  4. python出现中文乱码 RuntimeWarning: Glyph 24180 missing from current font.解决方法
  5. IIS7.0下 HTTP 错误 404.15 - Not Found 请求筛选模块被配置为拒绝包含的查询字符串过长的请求...
  6. nginx 响应服务器静态,405 Not Allowed,nginx静态文件响应post请求
  7. win10虚拟机服务器错误怎么解决方法,虚拟机下安装win10系统后出现升级报错故障的解决方法【图文】...
  8. 15.2. important
  9. python课程索引-0222
  10. ES6模块之export和import详解
  11. 【ClickHouse】查看数据库容量和表大小的方法(system.parts各种操作方法)
  12. Netty工作笔记0075---handler链调用机制实例1
  13. graphics2d 乱码 java_java Graphics2D绘制文字并居中并解决服务器乱码问题
  14. 生怕认可java+flatmap,RxJava 好难理解的一个 FlatMap 的例子
  15. Android项目中JNI技术生成并调用.so动态库实现详解
  16. 自己动手编译nodemcu固件(ESP8266)
  17. word中删除分节符时页面格式会发生改变
  18. 1371: 三位数求解
  19. 个推技术 | ETL工程师必看!超实用的任务优化与断点执行方案
  20. 论文笔记:Template-free Prompt Tuning for Few-shot NER

热门文章

  1. linux sipp 呼叫转移_SIPp 学习笔记 一 (安装)
  2. Vue3.0 Composition API与Vue2.x 使用的 Options API
  3. 二次元福利适应个人引导页
  4. Linux -Ubuntu安装 Tomcat
  5. 重新拎一遍js的正则表达式
  6. magento 获取产品的属性值
  7. 虚拟机与主机串口通信(主机与主机)
  8. C++ 常用基础概念
  9. Oracle删除用户与删除表
  10. 【数字图像处理】求包含白色点得最小凸多边形