您的位置:首页 > 帝国cms教程

帝国cms结合控制变量实现结合项筛选功能带首字母筛选的方法推荐

2024-01-15 14:49:06 帝国cms教程 217

说到结合项筛选,官方已有提供一种方法,但是的话就是比较繁琐,下面介绍用控制变量来实现这个功能,这个带首字母筛选的。

重点修改前;先备份,先备份,先备份。
内容有的多,优点是配置好后,后面添加修改比较方便。
1:在系统变量里面,添加一个变量-变量的值-多个用逗号隔开;(这里的值就是后面要筛选的筛选名称)如图:

帝国cms结合控制变量实现结合项筛选功能带首字母筛选的方法推荐 第1张

2:在数据表推荐两个要适用到的字段,分别是选项字段和控制变量里面的变量名一致;字母筛选的话随便都可以:(在添加字段要修改 输入表单替换html代码,必须先默认提交在回来来修改,才会生效)如图:

帝国cms结合控制变量实现结合项筛选功能带首字母筛选的方法推荐 第2张

首字母的话 直接添加默认即可。

下面部分是输入表单显示元素,复选框,单选框和下拉的表单替换html代码。
复选框代码

<?
		$p_screen=explode(",",$public_r['add_screen']);
    		for($i=0;$i<count($p_screen);$i++)
    		{
		$j=$i+1;
?>
<input name="screen[]" type="checkbox" value="<?=$j?>"<?=strstr($r[screen],"|".$j."|")?' checked':''?>><?=$p_screen[$i]?>
<?
		}
		?>

单选框的写法

<?
$p_screen=explode(",", $public_r['add_screen']);
for($i=0; $i<count($p_screen); $i++) {
    $j = $i+1;
?>
<input name="screen" type="radio" value="<?=$j?>"<?= $r['screen'] == (string)$j ? ' checked' : ''?>><?=$p_screen[$i]?>
<? } ?>

下拉选择

<?
$j=0;
		$p_diqu=explode(",",$public_r['add_xiala']);
    		for($i=0;$i<count($p_diqu);$i++)
    		{
		$j=$i+1;
		$diqu_selected='';
		if ($r[diqu]==$j){
		$diqu_selected=' selected';
		}
		$diqu.='<option value="'.$j.'"'.$diqu_selected.'>'.$p_diqu[$i].'</option>';
		}
		?>
		<select name="xiala" id="xiala"><?=$diqu?></select>

 

2-1:添加好字段后要在-系统模型-修改里面,把字段项选择上,尤其筛选项必须选择-然后点录入表单模板
( 自动生成表单模板) 提交;

3:在eclassuserfun.php搭建下面的代码:字段和变量名填写自己开始写哪个。

function user_screen($id){
    global $public_r;
            $pd_record=explode(",",$public_r['add_screen']);
    return $pd_record[$id-1];
}

4:在模板里面调用
4-1:首页和内容或其他栏目可以这样写:

<?
        $p_ticai=explode(",",$public_r['add_screen']);
            for($i=0;$i<count($p_ticai);$i++)
            {
        $j=$i+1;
?>
 <li><a href="/list-1-<?=$j?>-0-0-0.html"><?=$p_screen[$i]?></a></li>
<?
        }
?>

4-2:在列表里面这样写,首页为了方便修改可以单独建一个列表模板:
列表模板的最开始这样写:

<?
$classid=(int)$GLOBALS[navclassid];
$screen=(int)$_GET['screen'];
$zm=$_GET['zm']?$_GET['zm']:'0';
$orderby=(int)$_GET['orderby'];
$ticaitile=user_screen($screen);
?>

然后需要显示的地方:         

 <dt>筛选:</dt>
                <li><a<?if (!$screen){?> class="active"<?}?> href="/list-<?=$classid?>-0-<?=$zm?>-<?=$orderby?>-0.html">全部</a></li>
<?
        $p_screen=explode(",",$public_r['add_screen']);
            for($i=0;$i<count($p_screen);$i++)
            {
        $j=$i+1;
?>
 <li><a<?if ($screen==$j){?> class="active"<?}?> href="/list-<?=$classid?>-<?=$j?>-<?=$zm?>-<?=$orderby?>-0.html"><?=$p_screen[$i]?></a></li>
<?
        }
?>

字母筛选代码:

<dt>字 母:</dt>
                    <li><a<?if (!$zm){?> class="active"<?}?> href="/list-<?=$classid?>-<?=$screen?>-0-<?=$orderby?>-0.html" >全部</a></li>
<?
        $p_zm=explode(",","A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z");
            for($i=0;$i<count($p_zm);$i++)
            {
?>
 <li><a<?if ($zm==$p_zm[$i]){?> class="active"<?}?> href="/list-<?=$classid?>-<?=$screen?>-<?=$p_zm[$i]?>-<?=$orderby?>-0.html"><?=$p_zm[$i]?></a></li>
<?
        }
?>

这个包括了选择后的高亮状态 active元素 这个样式自行写即可。

5:标题的调用和优化;可以按照这样来写:

<title><?=$ticaitile?>-[!--list.pageno--]<?=$public_r['add_name']?></title>

6:分页的样式和修改:eclassconnect.php搜索 //前台分页 注释或删除,然后换成下面的样式按照原模板来改即可;

//前台分页(列表结合项分页样式)
function page1($num,$line,$page_line,$start,$page,$search){
    global $fun_r;
    $num=(int)$num;
    $line=(int)$line;
    $page_line=(int)$page_line;
    $start=(int)$start;
    $page=(int)$page;
    $classid=(int)$GLOBALS[navclassid];
    $screen=(int)$_GET['screen'];
    $infozm=$_GET['zm']?$_GET['zm']:'0';
    $orderby=(int)$_GET['orderby'];
    if($num<=$line)
    {
        return '';
    }
    $search='.html';
    $url='/list-'.$classid.'-'.$screen.'-'.$zm.'-'.$orderby;
    $snum=2;//最小页数
    $totalpage=ceil($num/$line);//取得总页数
    //$firststr='<a title="'.$fun_r['trecord'].'">&nbsp;<b>'.$num.'</b> </a>';
    //上一页
    if($page<>0)
    {
        $toppage='<li><a href="'.$url.'-0'.$search.'"><<</a></li>';
        $pagepr=$page-1;
        $prepage='<li><a href="'.$url.'-'.$pagepr.$search.'"><</a></li>';
    }
    //下一页
    if($page!=$totalpage-1)
    {
        $pagenex=$page+1;
        $nextpage='<li><a href="'.$url.'-'.$pagenex.$search.'">></a></li>';
        $lastpage='<li><a href="'.$url.'-'.($totalpage-1).$search.'">>></a></li>';
    }
    $starti=$page-$snum<0?0:$page-$snum;
    $no=0;
    for($i=$starti;$i<$totalpage&&$no<$page_line;$i++)
    {
        $no++;
        if($page==$i)
        {
            $is_1='<a href="'.$url.'-'.$i.$search.'" class="active">';
            $is_2="</a>";
        }
        else
        {
            $is_1='<li><a href="'.$url.'-'.$i.$search.'">';
            $is_2="</a></li>";
        }
        $pagenum=$i+1;
        $returnstr.=$is_1.$pagenum.$is_2;
    }
    $returnstr=$firststr.$toppage.$prepage.$returnstr.$nextpage.$lastpage;
    return $returnstr;
}

最后一步就是伪静态的配置:这里解释一下:List.php文件放到根目录下/e/action/ 不会冲突直接复制即可(已打包自行下载)

list.zip
bc63f35549e1fd75fdae611c9f789933.zip (3.29 KB)
内容加载中..

相关推荐