• 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 &#123;&#36;db->pre&#125;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);}   <!--读取本循环的二级分类-->
    &#123;if issubs($cat,$sub)&#125;   //issub函数在init.inc.php里定义 当前一级类别的子类里有用户添加的产品的分类

    <li id="type_&#123;&#36;v0[catid]&#125;"&#123;if $typeid==$v0[catid]&#125; class="f_b"&#123;/if&#125;><a class="com-1" href="{userurl($username, 'file='.$_file.'&catid='.$v0['catid'], $domain)}" title="&#123;&#36;v0[catname]&#125;"><i class="icon-double-angle-right com-1-i"></i><span class="com-1-txt">&#123;&#36;v0[catname]&#125;</span></a></li>
     {loop $sub $v1}
        &#123;if in_array($v1[catid],$cat_catid)&#125;  //当前二级分类里有用户添加产品的分类
     <li id="type_&#123;&#36;v1[catid]&#125;"&#123;if $catid==$v1[catid]&#125; class="f_b"&#123;/if&#125;><a class="com-2" href="{userurl($username, 'file='.$_file.'&catid='.$v1['catid'], $domain)}" title="&#123;&#36;v1[catname]&#125;">&#123;&#36;v1[catname]&#125;</a></li>
        &#123;/if&#125;
     {/loop}
    &#123;/if&#125;
    {/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 {&#36;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 {&#36;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 {&#36;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; 100px; height:25px; "'); } 

  • 相关阅读:
    SQL server management 查询所有触发器
    SQL SERVER 获取近七天每天的日期
    ASP.NET中maxRequestLength和maxAllowedContentLength的区别;上传大文件设置IIS7文件上传的最大大小
    where in 删除
    Sql Server 创建时间截取到年月日
    保留小数点后2位
    c# List数据分页
    图标快捷方式小箭头去掉的方法
    C# List转String的办法
    WinForm中实现通用的弹窗提示框
  • 原文地址:https://www.cnblogs.com/djiz/p/6414229.html
Copyright © 2020-2023  润新知