需求:
我们用{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}