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