ecshop设置一个子类对应多个父类并指定跳转url的修改方法
这是一篇记录在日记里面的技术文档,其实是对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的修改方法相关推荐
- python设置一个初始为0的计数器_python中统计计数的几种方法
以下实例展示了 count() 方法的使用方法: 以上实例输出结果如下: 1) 使用字典dict() 循环遍历出一个可迭代对象中的元素,如果字典没有该元素,那么就让该元素作为字典的键,并将该键赋值为1 ...
- 一个空间绑定多个域名实现自动跳转的几种方法!
如果只有一个ASP空间,而你又想放置多个多个站点,这些代码可以帮到你 第一个 程序代码 <% if Request.ServerVariables("SERVER_NAME" ...
- Linux上创建一个用户,并给该用户指定目录的权限,修改时区
useradd user1 passwd user1 输入密码 然后指定可操作的目录 chown -R user1:root /usr/local/work/tomcat/webapps 修改时区: ...
- Java 中子类是否只继承父类的非私有变量和方法?
今天在 CSDN 论坛中见到有人问在 Java 中子类是否只继承父类的非私有变量和方法(原贴在此).大部分跟贴都认为这句话是正确的,但是对于这个问题背后的本质理解却是错误的. 首先我们明确一下&quo ...
- Python 子类继承多个父类属性
Python 子类继承多个父类属性 可能存在的误区 正确继承方法 可能存在的误区 python允许子类同时继承多个父类.但是在子类初始化父类时,单继承和多继承稍有不同.使用单继承的初始化方法会导致父类 ...
- 实现父类一个动物的类, 包括成员变量名字年龄皮毛颜色,带参数构造函数,动物类有一个方法,move,打印动物是可以动的 1.《实现一个子类老鼠的类,继承动物类,老鼠类继承父类成员变量,老鼠还有个自己的属
编写一个程序,程序包括如下内容 实现父类一个动物的类, 包括成员变量名字年龄皮毛颜色,带参数构造函数,动物类有一个方法,move,打印动物是可以动的 1.<实现一个子类老鼠的类,继承动物类,老鼠 ...
- JAVA子类继承多个_Java的一个子类可以继承自多个父类。
Java的一个子类可以继承自多个父类. 答:× 放样时的路径允许有几个?() 答:1个 下列有关有限合伙企业设立条件的表述中,不符合新颁布的<合伙企业法>规定的是( ) 答:有限合伙企业名 ...
- java实验:定义一个People类,为People类派生出一个子类Employee类
//4.定义一个People类,它包含属性有姓名name和性别sex, //为People类派生出一个子类Employee类,为其增加两个属性年龄age和工资等级grade,工资等级分A.B.C三个等 ...
- java 中普通类继承,抽象类继承,接口类继承,子类一定要重写父类中的方法吗
一.简单总结,需要重写的有 普通类继承抽象类,重写所有抽象类方法:(不包括普通方法) 普通类继承接口,重写所有接口方法.(不包括default关键字修饰的方法) 详解见下: 普通类继承,并非一定要重写 ...
最新文章
- 暑假集训8.10-网络流套树剖套线段树
- Ring3挂起进程,跟恢复进程.
- 项目打包去掉调试时的NSLog、print
- python出现中文乱码 RuntimeWarning: Glyph 24180 missing from current font.解决方法
- IIS7.0下 HTTP 错误 404.15 - Not Found 请求筛选模块被配置为拒绝包含的查询字符串过长的请求...
- nginx 响应服务器静态,405 Not Allowed,nginx静态文件响应post请求
- win10虚拟机服务器错误怎么解决方法,虚拟机下安装win10系统后出现升级报错故障的解决方法【图文】...
- 15.2. important
- python课程索引-0222
- ES6模块之export和import详解
- 【ClickHouse】查看数据库容量和表大小的方法(system.parts各种操作方法)
- Netty工作笔记0075---handler链调用机制实例1
- graphics2d 乱码 java_java Graphics2D绘制文字并居中并解决服务器乱码问题
- 生怕认可java+flatmap,RxJava 好难理解的一个 FlatMap 的例子
- Android项目中JNI技术生成并调用.so动态库实现详解
- 自己动手编译nodemcu固件(ESP8266)
- word中删除分节符时页面格式会发生改变
- 1371: 三位数求解
- 个推技术 | ETL工程师必看!超实用的任务优化与断点执行方案
- 论文笔记:Template-free Prompt Tuning for Few-shot NER