技术湾

您现在的位置是:首页 > 学习笔记 > 帝国CMS

帝国CMS

帝国 三级联动 筛选

2020-09-29 15:17:12 帝国CMS 人点赞
演示网站http://diguo72.zhongyf.com/news/

前端显示1.数据字段的建立后台 -- 系统 -- 数据表与系统模型 --- 管理数据表 -- 表名称(选择要修改增加) -- 管理字段 -- 增加

演示网站

http://diguo72.zhongyf.com/news/

 

前端显示

1.数据字段的建立

后台 -- 系统 -- 数据表与系统模型 --- 管理数据表 -- 表名称(选择要修改增加) -- 管理字段 -- 增加字段
 

在 输入表单替换html代码、投稿表单替换html代码 处填入代码

1.1 字段 daqu 大区 char(20) 单行文本框

<input name="daqu" type="text" id="daqu" value="<?=$ecmsfirstpost==1?"":ehtmlspecialchars(stripSlashes($r[daqu]))?>" size="" readonly="readonly">
 

1.2 字段 sheng 省份 char(20) 单行文本框

<input name="sheng" type="text" id="sheng" value="<?=$ecmsfirstpost==1?"":ehtmlspecialchars(stripSlashes($r[sheng]))?>" size="" readonly="readonly">
 

1.3 字段 shi 地市 char(20) 单行文本框

<input name="shi" type="text" id="shi" value="<?=$ecmsfirstpost==1?"":ehtmlspecialchars(stripSlashes($r[shi]))?>" size=""  readonly="readonly">
 

1.4 字段 xian 县区 char(20) 单行文本框

 <script src="//cdn.staticfile.org/jquery/3.2.1/jquery.min.js" ></script>
<!-- 备份Js /e/extend/liandong/jquery.min.js -->
<input name="xian" type="text" id="xian" value="<?=$ecmsfirstpost==1?"":ehtmlspecialchars(stripSlashes($r[xian]))?>" size="" readonly="readonly">
<input type="button" id="qyxz" value="区域选择" > 
<div id="xuan" style="display:none;width:100%;height:200px;z-index:100;" >
<style type="text/css">  
    .shaixuan li{float:left;width: 60px;list-style:none;}
.selected{font-weight:bold; background: #999; color:#fff;}
.queding{margin:20px 10px 0 100px ;}
.queding button{margin:0px 20px 0 20px ;}
</style>
<ul class="shaixuan"  id="daqu1"><li>大区:</li></ul><div style="clear:both;"></div>
<ul class="sheng shaixuan"  id="sheng1"></ul><div style="clear:both;"></div>
<ul class="shi shaixuan"  id="shi1"></ul><div style="clear:both;"></div>
<ul class="xian shaixuan"  id="xian1"></ul><div style="clear:both;"></div>
<div class="queding"><button type="button">确定</button><button type="button">取消</button></div>
</div>
<script src="/e/extend/liandong/xuan.js" ></script>
 

说明: 重点在1.4 其中的css部分可以调整到统一的css文件中。如果已经引用了jquery,则第一个js引用可以去掉。

后台文章调用

后台 -- 系统 -- 数据表与系统模型 --- 管理数据表 -- 表名称(选择要修改增加) -- 管理系统模型 -- 修改
 

系统模型设置

 

2.伪静态规则

.htaccess

RewriteEngine on
RewriteRule ^shaixuan/([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+).html$ /e/action/ListInfo.php?classid=$1&page=$2&daqu=$3&sheng=$4&shi=$5&xian=$6

Nginx

rewrite ^/shaixuan/([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+).html$ /e/action/ListInfo.php?classid=$1&page=$2&daqu=$3&sheng=$4&shi=$5&xian=$6;
 

3.调用方法

列表类模板 需要筛选的地方,输入 <?=shaixuan();?> 即可。

4.修改和新增的文件

4.1在e/extend/中新增文件夹liandong ,包含三个文件,分别是:

  • diqu.php ------ 行政区划数据文件。有地区名称比较长的,需要简写的话,在这个文件里搜索替换就可以。
  • xuan.js ------ js文件,后台辅助输入调用的
  • xxuan.php ----- 应答xuan.js 的

4.2修改的文件

第一个是 e/action/lisfinfo.php --- 可以覆盖系统原来的

第二个是 e/class/userfun.php -- 增加了一个函数。一般这个文件里有别的函数,不要覆盖,把下面shaixuan这个函数拷贝进去就可以。

以下是需要增加在 userfun.php 的代码

  //shaixuan
function shaixuan($ecms=0){
    global $public_r,$navclassid,$yGET;
    
    $daqur=array("不限","华北","东北","东南","中南","西南","西北");//jhc 此处根据需要可以修改
    $classid=intval($yGET['classid']);
    if(!$classid)$classid=$navclassid;
    if(!$classid)$classid=0;
    $page=0;
    $daqu=intval($yGET['daqu']);
    $sheng=intval($yGET['sheng']);
    $shi=intval($yGET['shi']);
    $xian=intval($yGET['xian']);

    // 参数为24的时候,把get数据从数字格式还原为汉字格式以适应帝国处理。
    if($ecms==24){
        //print_r($_GET);exit;
        $_GET['tempid']=1;  //此处根据需要修改 jiuhecai
        $_GET['mid']=1;
        $_GET['ph']=1;
        if(!$classid)unset($_GET['classid']);
        $_GET['daqu']=$daqur[$daqu];
        if($daqu==0)unset($_GET['daqu']);
        //shi
        include('../extend/liandong/diqu.php');
        foreach($mapr as $k=>$v){
            if(substr($k,0,2)==$sheng && substr($k,2,4)=="0000"){
                $_GET['sheng']=$v;
                break;
            }
        }
        if($sheng==0)unset($_GET['sheng']);
        //shi
        foreach($mapr as $k=>$v){
            if(substr($k,0,2)==$sheng && substr($k,2,2)==$shi && substr($k,4,2)=='00'){
                $_GET['shi']=$v;
                break;
            }
        }
        if($shi==0)unset($_GET['shi']);
        
        //xian
        foreach($mapr as $k=>$v){
            if(substr($k,0,2)==$sheng && substr($k,2,2)==$shi && substr($k,4,2)==$xian){
                $_GET['xian']=$v;
                break;
            }
        }
        if($xian==0)unset($_GET['xian']);
        
        return true;
    }
    // 段落中添加的css,可以统一放到css文件
    $jieguo=<<<jhc
    <style type="text/css">  
    .shaixuan li{float:left;width: 60px;list-style:none;}
</style>
jhc;
    
    //显示大区分类
    $jieguo.='<ul class="shaixuan"><li>大区:</li>';
    foreach($daqur as $k=>$v){
        $cur=$daqu==$k?"<b>$v</b>":$v;
        $jieguo.='<li><a href="/shaixuan/'."$classid-$page-$k-0-0-0".'.html">'.$cur.'</a></li>';
    }
    $jieguo.='</ul><div style="clear:both;"></div>';
    if($daqu==0)return $jieguo;
    
    //根据大区选择省份
    $jieguo.='<ul class="shaixuan"><li>省份:</li>';
    $jieguo.='<li><a href="/shaixuan/'."$classid-$page-$daqu-0-0-0".'.html">不限</a></li>';
    
    include('../extend/liandong/diqu.php');
    
    foreach($mapr as $k=>$v){
        if(substr($k,0,1)==$daqu && substr($k,2,4)=="0000"){
            
            $cur=$sheng==substr($k,0,2)?"<b>$v</b>":$v;
            $cursheng=substr($k,0,2);
            $jieguo.='<li><a href="/shaixuan/'."$classid-$page-$daqu-$cursheng-0-0".'.html">'.$cur.'</a></li>';
            
        }
    }
    $jieguo.='</ul><div style="clear:both;"></div>';
    if($sheng==0)return $jieguo;
    
     //根据省份选择区市
    $jieguo.='<ul class="shaixuan"><li>区市:</li>';
    $jieguo.='<li><a href="/shaixuan/'."$classid-$page-$daqu-$sheng-0-0".'.html">不限</a></li>';
    foreach($mapr as $k=>$v){
        if(substr($k,0,2)==$sheng && substr($k,4,2)=="00" && substr($k,2,4)<>"0000"){
            
            $cur=$shi==substr($k,2,2)?"<b>$v</b>":$v;
            $curshi=substr($k,2,2);
            $jieguo.='<li><a href="/shaixuan/'."$classid-$page-$daqu-$sheng-$curshi-0".'.html">'.$cur.'</a></li>';
            
        }
    }
    $jieguo.='</ul><div style="clear:both;"></div>';
    if($shi==0)return $jieguo;
     //根据区市选择县
    $jieguo.='<ul class="shaixuan"><li>县:</li>';
    $jieguo.='<li><a href="/shaixuan/'."$classid-$page-$daqu-$sheng-$shi-0".'.html">不限</a></li>';
    foreach($mapr as $k=>$v){
        if(substr($k,0,2)==$sheng && substr($k,2,2)==$shi && substr($k,4,2)<>"00"){
            
            $cur=$xian==substr($k,4,2)?"<b>$v</b>":$v;
            $curxian=substr($k,4,2);
            $jieguo.='<li><a href="/shaixuan/'."$classid-$page-$daqu-$sheng-$shi-$curxian".'.html">'.$cur.'</a></li>';
            
        }
    }
    $jieguo.='</ul>';
    return $jieguo;
    
}

 

说明下,代码中的

$_GET['tempid']=1;  //此处根据需要修改 jiuhecai
        $_GET['mid']=1;

分别用以指定模板id和模型id,可以根据需要修改。

 

进化记录

1.第一次

1.1 不能筛选县级

字符串处理不严格导致,已经修正

1.2 分页不对

page1函数后的处理,没有增加县级,已经修正

1.3 不能全站筛选

强制使用系统模型和列表模板后,正常

三级联动插件_1.3.zip
3b6fc4c55e248c38d1c8b32c4170d4e4.zip (93.06 KB)


 

 

830*140广告

文章评论