织梦利用副栏目做2多级筛选

写完发现有点复杂,还是不要用了!


后台架构

image.png


首先,我们

image.png

他只有2级,我又懒得搞了! 于是就写了个用副栏目2级刷选的功能!

而且只能用动态的做!

首先我们页面调用的时候

1、页面调用

<dl class="cp-type">
    <dt>风格分类</dt>
    <dd>
        <ul class="cp-menu">
            <li class="cp-all sm-{dede:field.id/}">
                <a href="/plus/list.php?tid=13">全部</a>
            </li>
            {dede:channel row='8' typeid='17'}
            <li class="s-[field:id/]"><a href='[field:xhlink/]'>[field:typename/]</a> </li>
            {/dede:channel}
        </ul>
    </dd>
</dl>
<dl class="cp-type">
    <dt>空间</dt>
    <dd>
        <ul class="cp-menu">
            {dede:channel row='8' typeid='18'}
            <li class="s-[field:id/]"><a href='[field:xhlinks/]'>[field:typename/]</a> </li>
            {/dede:channel}
        </ul>
    </dd>
</dl>

直接连接动态,然后我新增了一个标签!

忽然感觉有点复杂,不如用ajax了....

2、修改include/taglib/channel.lib.php标签

32行增加获取typeid2和tid

function lib_channel(&$ctag,&$refObj)
{
    global $dsql,$typeid2,$tid;

149行左右

else
                {
                    $row['typelink'] = $row['typeurl'] = GetOneTypeUrlA($row);
              
                    $row['xhlink'] = "/plus/list.php?tid={$tid}&typeid2=".$row['id']."";
                    $row['xhlinks'] = "/plus/list.php?tid=".$row['id']."&typeid2={$typeid2}";
                    $n="s-27";

增加2个标签!

3、修改list.php文件

$typeid2=$typeid2;
$arrs=explode(",",$typeid2);
$typeid2=$arrs[0];//只能设置一个副栏目,多个取一个!
if($typeid2=='47'){//因为新品栏目是要默认设置的!所以取消新品栏目的
    $typeid2=$arrs[1];
}else{
    $typeid2=$arrs[0];
}
$typeid2= (isset($typeid2) && is_numeric($typeid2) ? $typeid2 : 0);
$tid = (isset($tid) && is_numeric($tid) ? $tid : 0);
if($tid =='0' || $tid =='13' && $typeid2 !=''  && $typeid2 !='0'){//如果只传入了typeid2 则tid等于typeid2 typeid2清空
    $tid=$typeid2;
    $typeid2='';
    echo $typeid2;
}

$channelid = (isset($channelid) && is_numeric($channelid) ? $channelid : 0);
if($tid==0 && $channelid==0) die(" Request Error1! ");
if(isset($TotalResult)) $TotalResult = intval(preg_replace("/[^\d]/", '', $TotalResult));
if($typeid2!='0'){
    $two='';
}


//如果指定了内容模型ID但没有指定栏目ID,那么自动获得为这个内容模型的第一个顶级栏目作为频道默认栏目
if(!empty($channelid) && empty($tid))
{
    $tinfos = $dsql->GetOne("SELECT tp.id,ch.issystem FROM `dede_arctype` tp LEFT JOIN `dede_channeltype` ch ON ch.id=tp.channeltype WHERE tp.channeltype='$channelid' And tp.reid=0 order by sortrank asc");
    if(!is_array($tinfos)) die(" No catalogs in the channel! ");
    $tid = $tinfos['id'];
}
else
{
    $tinfos = $dsql->GetOne("SELECT ch.issystem FROM `dede_arctype` tp LEFT JOIN `dede_channeltype` ch ON ch.id=tp.channeltype WHERE tp.id='$tid' ");
}

if($tinfos['issystem']==-1)
{
    $nativeplace = ( (empty($nativeplace) || !is_numeric($nativeplace)) ? 0 : $nativeplace );
    $infotype = ( (empty($infotype) || !is_numeric($infotype)) ? 0 : $infotype );
    if(!empty($keyword)) $keyword = FilterSearch($keyword);
    $cArr = array();
    if(!empty($nativeplace)) $cArr['nativeplace'] = $nativeplace;
    if(!empty($infotype)) $cArr['infotype'] = $infotype;
    if(!empty($keyword)) $cArr['keyword'] = $keyword;
    include(DEDEINC."/arc.sglistview.class.php");
    $lv = new SgListView($tid,$cArr);
}
else if($typeid2 !='0' && $typeid2 !=''){
   include(DEDEINC."/arc.listview_shop.class.php");

    $lv = new ListView($tid);
    //对设置了会员级别的栏目进行处理
    if(isset($lv->Fields['corank']) && $lv->Fields['corank'] > 0)
    {
        require_once(DEDEINC.'/memberlogin.class.php');
        $cfg_ml = new MemberLogin();
        if( $cfg_ml->M_Rank < $lv->Fields['corank'] )
        {
            $dsql->Execute('me' , "SELECT * FROM `dede_arcrank` ");
            while($row = $dsql->GetObject('me'))
            {
                $memberTypes[$row->rank] = $row->membername;
            }
            $memberTypes[0] = "游客或没权限会员";
            $msgtitle = "你没有权限浏览栏目:{$lv->Fields['typename']} !";
            $moremsg = "这个栏目需要 <font color='red'>".$memberTypes[$lv->Fields['corank']]."</font> 才能访问,你目前是:<font color='red'>".$memberTypes[$cfg_ml->M_Rank]."</font> !";
            include_once(DEDETEMPLATE.'/plus/view_msg_catalog.htm');
            exit();
        }
    }

}else{

    include(DEDEINC."/arc.listview.class.php");
    
    $lv = new ListView($tid);
    //对设置了会员级别的栏目进行处理
    if(isset($lv->Fields['corank']) && $lv->Fields['corank'] > 0)
    {
        require_once(DEDEINC.'/memberlogin.class.php');
        $cfg_ml = new MemberLogin();
        if( $cfg_ml->M_Rank < $lv->Fields['corank'] )
        {
            $dsql->Execute('me' , "SELECT * FROM `dede_arcrank` ");
            while($row = $dsql->GetObject('me'))
            {
                $memberTypes[$row->rank] = $row->membername;
            }
            $memberTypes[0] = "游客或没权限会员";
            $msgtitle = "你没有权限浏览栏目:{$lv->Fields['typename']} !";
            $moremsg = "这个栏目需要 <font color='red'>".$memberTypes[$lv->Fields['corank']]."</font> 才能访问,你目前是:<font color='red'>".$memberTypes[$cfg_ml->M_Rank]."</font> !";
            include_once(DEDETEMPLATE.'/plus/view_msg_catalog.htm');
            exit();
        }
    }
}

if($lv->IsError) ParamError();

$lv->Display();

4、增加

arc.listview_shop.class.php文件

链接: https://pan.baidu.com/s/1oxUrp-qRbzxdJaRi1OfdfQ

提取码: 8cwg 

在百度网盘下吧!

写的好!

微信扫一扫赏大洋