dedecms channelartlist不调用指定分类排除指定typeid的方法

时间:2020-06-03 16:50:29 来源:织梦系统 作者:烈火大地 点击:
摘要:dedecms 使用channelartlist标签调出来的全部子分类,如果不希望其中某一个或几个分类不调用出来,即指定排除typeid的栏目不显示,需要稍微改一下源码……

默认使用如下代码调用全部子分类:

{dede:channelartlist row=50}
      <div class="col-12 mb-3 pb-2 bg-white">
        <h4 class="py-2 col-12 border-bottom"><a class="text-secondary" href="{dede:field name='typeurl'/}">{dede:field name='typename'/}殡葬服务</a></h4>
        <div class="row"> {dede:arclist titlelen='120' row='12'}
          <div class="col-12 col-sm-6 inline-h4"> <a class="text-body" href="[field:arcurl /]">[field:title /]</a> </div>
          {/dede:arclist}
		  </div>
      </div>
{/dede:channelartlist}

这样调出来的全部分类,对于某些分类我们有时候并不需要,在使用 dede:channelartlist 自动调用栏目内容时,经常会遇到某些栏目不需要调用,比如“关于我们”、“联系地址”等无持续更新的栏目。要想在 dede:channelartlist 调用时排出某些栏目,这需要修改dede源码,让 dede:channelartlist 排除指定typeid。

打开 /include/taglib/channelartlist.lib.php 文件
找到

$attlist = 'typeid|0,row|20,cacheid|';

修改为:

// 此处添加了一个所要排除typeid的参数—notypeid
$attlist = 'typeid|0,row|20,cacheid|,notypeid|0';

找到(大约78行)

$dsql->SetQuery("SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath 
                                            FROM `dede_arctype` WHERE $tpsql ORDER BY sortrank ASC LIMIT $totalnum");

在其前面添加

//否定指定ID
if($notypeid !=0) {
     $tpsql = $tpsql."and not(id in($notypeid)) ";
}

模板调用:

{dede:channelartlist typeid ='7' notypeid='8'}

其中notypeid=’8′ 中的 8 为 7 的子栏目即生效。
当然notypeid和typeid也可以分开各自使用.


如果没有指定调用某个大栏目的typeid,也可以直接否定不调用的栏目id即可,如下这样:

{dede:channelartlist row=50 notypeid='142'}

调用50个栏目,不调用分类栏目id是142的分类。

(责任编辑:陆柏熺)
相关分类: dedecms
评价:
用户名: 验证码: 看不清?点击更换

相关内容推荐

关注站长自媒体 获取更多优质内容

2019-2020 ©巅峰霸主网 京ICP备12023415号-2
返回顶部