Dedecms中{dede:type}标签支持调用父级栏目名称

需求:

我们用{dede:type}标签调用栏目相关内容时,同时需要调用该栏目的父级栏目的名称。

{dede:type}标签的代码做了一下开发,支持这个调用了。

开发方法:

1.打开include/taglib/type.lib.php,找到函数lib_type下的代码:

$row = $dsql->GetOne("SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath FROM `#@__arctype` WHERE id='$typeid' "); //42行

改为:

$row = $dsql->GetOne("SELECT id,topid,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath FROM `#@__arctype` WHERE id='$typeid' ");

2.找到如下代码:

$row['typelink'] = $row['typeurl'] = GetOneTypeUrlA($row);

在其下面添加如下代码:

$row['parent_name'] = $row['parent_id'] ='';
if(!empty($row['topid'])){
    row1 = $dsql->GetOne("select typename as parent_name,id as parent_id from `#@__arctype` where id ='".$row['topid']."'");
    $row['parent_name'] = $row1['parent_name'];
    $row['parent_id']   = $row1['parent_id'];
} else {
    $row['parent_name'] = $row['typename']; //如果时顶级栏目,就显示为该栏目名称
     $row['parent_id']   = $row['id'];
}

3.前台调用方法:

<!--如果是内容页模板,可以不用指定typeid,直接调用-->
{dede:type}[field:parent_name/]{/dede:type}
{dede:type}[field:parent_id/]{/dede:type}
<!--在首页或者列表页模板,可指定typeid调用--> 
{dede:type typeid='1'}[field:parent_name/]{/dede:type}
{dede:type typeid='1'}[field:parent_id/]{/dede:type}

 

附加:

1.调用当前栏目的名称
{dede:field name="typename"}  

2.调用该顶级频道所有子栏目,row代表调用5条
 {dede:channel  type='son'  row='5'} <a href="[field:typeurl/]">[field:typename/]</a> {/dede:channel} 

3.调用子栏目当前顶级栏目名称
{dede:channel   type='top'}<a>[field:typename/]</a> {/dede:channel} 

4.调用指定栏目ID
{dede:type   typeid='栏目id'} <a href="[field:typeurl/]">[field:typename/]</a> {/dede:type} 

posted @ 2019-02-22 14:19  心无引擎,眼无流派  阅读(1259)  评论(0编辑  收藏  举报