destoon修改笔记
$EXT = cache_read('module-3.php'); $EXT,存放了module3的设置 后台模型管理,扩展模型 里设置。
1、admin.php 后台管理项目对应文件。
if($module == 'destoon') {
(include DT_ROOT.'/admin/'.$file.'.inc.php') or msg();
} else {
include DT_ROOT.'/module/'.$module.'/common.inc.php';
(include MD_ROOT.'/admin/'.$file.'.inc.php') or msg();
}
$module 没有传$module参数时$module == 'destoon' 没有传$file时 $file='index.php'
例如 会员资料修改页面 admin.php?moduleid=2&action=edit&userid=9
加载的是
include DT_ROOT.'/module/member/common.inc.php'
include DT_ROOT.'/module/member/admin/index.inc.php'
对应模板也在 module/member/admin/template/目录
2、店铺模板调用系统分类
sell/list.html 调用sell的系统分类
{loop $maincat $k $v}
输出分类
{/loop}
$maincat
列表页面系统分类 $maincat = get_maincat($child ? $catid : $parentid, $moduleid); // $child : $moduleid -模型id 列表页面可以显示当前父类的子类。
首页系统分类 $maincat = get_maincat($catid ? $CAT['parentid'] : 0, $moduleid); 首页应该显示全部分类
get_maincat 函数 在global.func.php 定义
// $catid-父类 ,>0时读取其子类,否则读取$moduleid模型的所有顶级类别
function get_maincat($catid, $moduleid, $level = -1) {
global $db;
$condition = $catid ? "parentid=$catid" : "moduleid=$moduleid AND parentid=0";
if($level >= 0) $condition .= " AND level=$level";
$cat = array();
$result = $db->query("SELECT catid,catname,child,style,linkurl,item FROM {$db->pre}category WHERE $condition ORDER BY listorder,catid ASC", 'CACHE');
while($r = $db->fetch_array($result)) {
$cat[] = $r;
}
return $cat;
}
(1) 在init.inc.php 中include DT_ROOT.'/module/company/'.$file.'.inc.php'; 之前添加函数
//分类arr1 是否在分类数组$arr2中出现过 出现过就返回true 为什么直接in_array 不行 难道是数组是通过fetch_array生成的原因,带着字段名
function issubs($arr1,$arr2){
foreach ($arr1 as $a){
foreach($arr2 as $b){
if($a['catid']==$b['catid']) return ture;
}
}
return false;
}
(2)店铺模板的side_type.htm 中
开头的php中增加
<?php
isset($typeid) or $typeid = 0;
$_file = $file;
if($file == 'mall') {
$_item = 'mall-'.$userid;
$_name = '商品分类';
//} else if($file == 'news') {
// $_item = 'news-'.$userid;
// $_name = '新闻分类';
} else {
$_item = 'product-'.$userid;
$_name = '产品分类';
$_file = 'sell';
}
$_TYPE = get_type($_item);
$_TP = $_TYPE ? sort_type($_TYPE) : array();
//以上是读取自定义分类的 基本上用不到
if($file=='xianhuo'){
//读取现货分类
$maincatModule=23;
$_file = 'xianhuo';
}else{
//读取产品分类
$maincatModule=5;
$_file = 'sell';
}
//读取当前用户有产品的分类
$sql="select catid from {$db->pre}sell_".$maincatModule." where username=".$username." group by catid ";
$query=$db->query($sql);
while($r = $db->fetch_array($query)) {
$cat[] = $r; //$cat用于筛选有产品分类的父类(一级分类)
$cat_catid[]=$r['catid']; //$cat_catid 用于筛选有产品分类(二级分类)
}
$maincat = get_maincat(0,$maincatModule); //读取$maincatModule指定模型的一级分类。
?>
循环输出 一级分类和二级分类:
{loop $maincat $v0}
{php $sub=get_maincat($v0[catid],$maincatModule,1);} <!--读取本循环的二级分类-->
{if issubs($cat,$sub)} //issub函数在init.inc.php里定义 当前一级类别的子类里有用户添加的产品的分类
<li id="type_{$v0[catid]}"{if $typeid==$v0[catid]} class="f_b"{/if}><a class="com-1" href="{userurl($username, 'file='.$_file.'&catid='.$v0['catid'], $domain)}" title="{$v0[catname]}"><i class="icon-double-angle-right com-1-i"></i><span class="com-1-txt">{$v0[catname]}</span></a></li>
{loop $sub $v1}
{if in_array($v1[catid],$cat_catid)} //当前二级分类里有用户添加产品的分类
<li id="type_{$v1[catid]}"{if $catid==$v1[catid]} class="f_b"{/if}><a class="com-2" href="{userurl($username, 'file='.$_file.'&catid='.$v1['catid'], $domain)}" title="{$v1[catname]}">{$v1[catname]}</a></li>
{/if}
{/loop}
{/if}
{/loop}
导航和产品页面也有产品二级菜单所以把 这些代码放到init.inc.php里 在需要的地方直接像上边一样循环调用即可,注意 {loop $sub $v1} 中的$v1 会跟详情页面的v1 v2 v3中的$v1 冲突 要是$v1换成别的,loop标签里的变量可能跟页面其他同名变量冲突。
//分类arr1 是否在分类数组$arr2中出现过 出现过就返回true 为什么直接in_array 不行 难道是数组是通过fetch_array生成的原因,带着字段名
function issubs($arr1,$arr2){
foreach ($arr1 as $a){
foreach($arr2 as $b){
if($a['catid']==$b['catid']) return ture;
}
}
return false;
}
if($file=='xianhuo'){
//读取现货分类
$maincatModule=23;
$_file = 'xianhuo';
}else{
//读取产品分类
$maincatModule=5;
$_file = 'sell';
}
//读取当前用户有产品或现货的分类,用于只显示有产品的分类
$sql="select catid from {$db->pre}sell_".$maincatModule." where username=".$username." group by catid ";
$query=$db->query($sql);
while($r = $db->fetch_array($query)) {
$cat[] = $r;
$cat_catid[]=$r['catid'];
}
$maincat = get_maincat(0,$maincatModule); //现货的时候显示现货分类,其他时候显示产品分类
3、页面上的$CAT 和 怎么获得当前分类的名称 跟 子类
$CAT 在根目录下的 commen.inc.php定义赋值 if($catid) $CAT = get_cat($catid); // 如果有catid参数传来 则读取当前分类信息
函数 get_cat 在 include/global.func.php 定义
function get_cat($catid) { //获取指定分类的分类属性,符合条件返回所有字段
global $db;
$catid = intval($catid);
return $catid ? $db->get_one("SELECT * FROM {$db->pre}category WHERE catid=$catid") : array();
}
所有 可以直接用$CAT['catname'];输出当前分类名称。
返回的字段中 有个字段arrchildid 存储了所有子类id和本身id 例如1分类的子类是3,7,20,那么 arrchildid 就是1,3,7,20 获取当前分类的产品时直接
字段 child 标志是否有子类
$condition .= ($CAT['child']) ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid"; //有子类就取当前类和所有子类的产品 没有就取当前分类的产品。
4、产品模块列表不传catid参数时显示全部分类产品
module/selllist.inc.php
行$condition .= ($CAT['child']) ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid"; 改为
if($catid){
$condition .= ($CAT['child']) ? " AND catid IN (".$CAT['arrchildid'].")" : " AND catid=$catid";
}
if($cityid) {
$areaid = $cityid;
$ARE = $AREA[$cityid];
$condition .= $ARE['child'] ? " AND areaid IN (".$ARE['arrchildid'].")" : " AND areaid=$areaid";
$items = $db->count($table, $condition, $CFG['db_expires']);
} else {
if($page == 1) {
$items = $db->count($table, $condition, $CFG['db_expires']);
if($items != $CAT['item']) {
$CAT['item'] = $items;
$db->query("UPDATE {$DT_PRE}category SET item=$items WHERE catid=$catid");
}
} else {
// $items = $CAT['item']; 因为当前没有分类,所以没有$CAT 也无法存储items 改为
if($catid){
$items = $CAT['item'];
}else{
$items = $db->count($table, $condition, $CFG['db_expires']);
}
}
}
5、选择地区
{php require DT_ROOT.'/include/post.func.php';$area_select = ajax_area_select('areaid','请选择地区', '$areaid','id="areaid" style="margin-top:9px; width:100px; height:25px; "'); }
destoon修改笔记的更多相关文章
- CentOS7环境下SSH端口修改笔记
CentOS7环境下SSH端口修改笔记 说明: CentOS7服务器环境,默认SSH端口为22,考虑到安全方面问题,欲修改端口为62231(机器内网IP为192.168.1.31) ssh配置文件和i ...
- destoon修改搜索页面标题方法
最近研究destoon内核开发,发现destoon6.0的搜索页面模块的标题太长,是搜索标题+模块+首页标题,这样导致标题过长,百度不喜欢,所以我经过修改成百度所喜欢的. 修改前截图: 修改的文件:/ ...
- maximo功能修改笔记
经过前几次的简单的修改系统功能,对maximo的bean开发已经有了一定了解,现在是耗时近两个礼拜来修改了一项系统功能,所用到的知识 Bean Fld, 下面我认真总结修改功能过程中的学到的知识: 目 ...
- MTK Android 默认值修改笔记
1.设置菜单: 1.1位置信息(Location)默认关闭: 请将 alps\frameworks\base\packages\SettingsProvider\res\values\default. ...
- knowledge_map 修改笔记
20150110 knowledge_map修改的地方: 1.dialog的调整.把结构图中的dialog(另存,新建知识点)调整到全局中(我的列表,knowledge_map_js_showKnow ...
- destoon开发笔记-调取资讯标题图
今天刚申请博客园的博客,申请速度挺快的.之前我的文章都是发在自己搭建的博客网站,但是是香港服务器,不想续费了,所以就关闭了.之前的数据也没有了,挺可惜了.不过既然加入博客园的大家庭,我就在这每天记录工 ...
- 帝国cms 7.5版列表页分页样式修改笔记
最近在用帝国改版我的个人博客站点,这个也是我第一次尝试用帝国来做博客,之前用过wordpress,每用一个新的程序,都会有些新的收获,也会学到一些新的东西. 在改用帝国之前,我也在网上大概了解了一下, ...
- destoon修改手机端分页
1. global.func.php pages函数和listpages函数 函数开头增加 $DT_TOUCH,$newsamplepages变量 global $DT_URL, $DT, $L,$D ...
- destoon开发笔记-JQ+JS实现倒计时功能
页面代码 <div class="time " class="" id="onBidtime125" pid="125&qu ...
随机推荐
- CC38:第k个数
题目 有一些数的素因子只有3.5.7,请设计一个算法,找出其中的第k个数. 给定一个数int k,请返回第k个数.保证k小于等于100. 测试样例: 3 返回:7 解法 主要就是在于isPrime这个 ...
- Java中List,Set和Map详解及其区别和使用场景(转)
https://www.cnblogs.com/EasonJim/p/7967138.html
- 简单记录下SpringCloud的微服务架构和一些概念
一.微服务的注册与发现——Eureka 和许多分布式设计一样,分布式的应用一般都会有一个服务中心,用于记录各个机器的信息.微服务架构也一样,我们把一个大的应用解耦成这么多个那么多个服务,那么在想要调用 ...
- 《深入理解java虚拟机》笔记(4)对象已死吗
一.垃圾回收器回收的对象 虚拟机内存区域中程序计数器.虚拟机栈.本地方法栈随线程而生,随线程而灭.这3个区域内存分配和回收都具备确定性.因此不需要过多考虑回收问题. 而Java堆和方法区不一样,这部分 ...
- 动态时间规整DTW
动态时间规整DTW 1 概述 动态时间规整是一个计算时间序列之间距离的算法,是为了解决语音识别领域中语速不同的情况下如何计算距离相似度的问题. 相对于用经典的欧式距离来计算相似度而言,DTW在数据点个 ...
- echarts Hello world 入门
<!DOCTYPE html> <html> <head> <title></title> <script type="te ...
- 基于JAVA的设计模式之单例模式
概念 于大二上学期面向对象C++期中考试中有这么道题:一个Computer有多个USB插口,那么意味着这台电脑可以插多个鼠标,但是无论你如何拔插多少个鼠标,桌面上的鼠标一直只显示一个,且多个硬件鼠标都 ...
- 卡了很久的bug
背景:在一个简单的项目中,通过循环前端传来的一个数组,使用mongodb条件查询数据,将满足条件的数据push进一个新数组,并返回至前端. 问题:每次调试到第五行,会自动跳过,直接执行12行,打印出来 ...
- 零基础逆向工程18_PE结构02_联合体_节表_PE加载过程
联合体 特点 1.联合体的成员是共享内存空间的 2.联合体的内存空间大小是联合体成员中对内存空间大小要求最大的空间大小 3.联合体最多只有一个成员有效 节表数据结构说明 PE 加载 过程 FileBu ...
- 评价PE基金绩效的常用指标
作为信息系统,辅助管理层决策是重要的功能之一.前文介绍了PE基金管理系统的建设,对PE业务的运转有了一些了解,但没有介绍如何评价PE基金的绩效,而这是管理层作出重大决策的主要依据之一.PE基金本质也是 ...