$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修改笔记的更多相关文章

  1. CentOS7环境下SSH端口修改笔记

    CentOS7环境下SSH端口修改笔记 说明: CentOS7服务器环境,默认SSH端口为22,考虑到安全方面问题,欲修改端口为62231(机器内网IP为192.168.1.31) ssh配置文件和i ...

  2. destoon修改搜索页面标题方法

    最近研究destoon内核开发,发现destoon6.0的搜索页面模块的标题太长,是搜索标题+模块+首页标题,这样导致标题过长,百度不喜欢,所以我经过修改成百度所喜欢的. 修改前截图: 修改的文件:/ ...

  3. maximo功能修改笔记

    经过前几次的简单的修改系统功能,对maximo的bean开发已经有了一定了解,现在是耗时近两个礼拜来修改了一项系统功能,所用到的知识 Bean Fld, 下面我认真总结修改功能过程中的学到的知识: 目 ...

  4. MTK Android 默认值修改笔记

    1.设置菜单: 1.1位置信息(Location)默认关闭: 请将 alps\frameworks\base\packages\SettingsProvider\res\values\default. ...

  5. knowledge_map 修改笔记

    20150110 knowledge_map修改的地方: 1.dialog的调整.把结构图中的dialog(另存,新建知识点)调整到全局中(我的列表,knowledge_map_js_showKnow ...

  6. destoon开发笔记-调取资讯标题图

    今天刚申请博客园的博客,申请速度挺快的.之前我的文章都是发在自己搭建的博客网站,但是是香港服务器,不想续费了,所以就关闭了.之前的数据也没有了,挺可惜了.不过既然加入博客园的大家庭,我就在这每天记录工 ...

  7. 帝国cms 7.5版列表页分页样式修改笔记

    最近在用帝国改版我的个人博客站点,这个也是我第一次尝试用帝国来做博客,之前用过wordpress,每用一个新的程序,都会有些新的收获,也会学到一些新的东西. 在改用帝国之前,我也在网上大概了解了一下, ...

  8. destoon修改手机端分页

    1. global.func.php pages函数和listpages函数 函数开头增加 $DT_TOUCH,$newsamplepages变量 global $DT_URL, $DT, $L,$D ...

  9. destoon开发笔记-JQ+JS实现倒计时功能

    页面代码 <div class="time " class="" id="onBidtime125" pid="125&qu ...

随机推荐

  1. 常见的div布局面试题

    题目1:如何让一个子元素在父元素里水平垂直居中? 方法1 .box{width:400px;height:400px;background:#ccc;position:relative;} .chil ...

  2. python进阶02 特殊方法与特殊属性

    python进阶02 特殊方法与特殊属性 一.初始化.析构 1.初始化 # python中有很多双下划线开头且以下划线结尾的固定方法,它们会在特定的时机被触发执行,这便是特殊方法 # 在实例化的时候就 ...

  3. A.dreamstart的催促

    题目描述 有一天集训队的学弟们正在计算一堆数,但是dreamstart感觉他们算的太慢了,就让他们坐在一起想出一个快速计算的方法,但是由于他们一时想不出来,想让你帮助他们.他们说现在有一个数列,要算出 ...

  4. 服务器配置,负载均衡时需配置MachineKey

    服务器配置,负载均衡时需配置MachineKey https://blog.csdn.net/liuqiao0327/article/details/54018922 Asp.Net应用程序中为什么要 ...

  5. 渣渣菜鸡的 ElasticSearch 源码解析 —— 启动流程(下)

    关注我 转载请务必注明原创地址为:http://www.54tianzhisheng.cn/2018/08/12/es-code03/ 前提 上篇文章写完了 ES 流程启动的一部分,main 方法都入 ...

  6. 部署WebService服务碰到的一个小问题

    在部署WebService服务到IIS上之后,发现一直无法在浏览器访问到编写的asmx文件,一直提示404或403错误.提示当前访问的文件时脚本文件. 1.首先检查了在IIS上部署WebService ...

  7. vue or react mvvm里的文字上下滚动

    1.jQuery 时候实现 上下滚动很简单,基本上一个animateTop就可以了 2. vue等MVVM就有些麻烦了,因为不推荐操作DOM,专注于数据 我们可以使用 css3 transition: ...

  8. JavaScript 事件对象event

    什么是事件对象? 比如当用户单击某个元素的时候,我们给这个元素注册的事件就会触发,该事件的本质就是一个函数,而该函数的形参接收一个event对象. 注:事件通常与函数结合使用,函数不会在事件发生前被执 ...

  9. CF1157D N Problems During K Days

    思路: 在1, 2, 3, ... , k的基础上贪心构造. 实现: #include <bits/stdc++.h> using namespace std; typedef long ...

  10. 洛谷P2606 [ZJOI2010]排列计数(组合数 dp)

    题意 题目链接 称一个1,2,...,N的排列P1,P2...,Pn是Magic的,当且仅当2<=i<=N时,Pi>Pi/2. 计算1,2,...N的排列中有多少是Magic的,答案 ...