dedecms调用文章上级栏目名字和链接的方法
有时候,我们需要在侧面栏调用文章的上级栏目的名称和链接,现在dedecms没有自带了,那么我们应该怎么调用了?
动态页:
{dede:type} [field:id runphp=yes] $tsql = new DedeSql(false); $typelink2 = ''; $tsql->SetQuery("Select i.typedir,i.id,i.typename From dede_arctype t left join dede_arctype i on i.id=t.reid where t.id='@me'"); $tsql->Execute('t'); while($row = $tsql->GetArray('t',MYSQL_ASSOC)) { $typelink2 .= "<a href='list.php?tid=".$row['id']."'>".$row['typename']."</a>"; } @me=$typelink2; [/field:id] {/dede:type}
静态页:
{dede:type} [field:id runphp=yes] $tsql = new DedeSql(false); $typelink2 = ''; $tsql->SetQuery("Select i.typedir,i.id,i.typename From dede_arctype t left join dede_arctype i on i.id=t.reid where t.id='@me'"); $tsql->Execute('t'); while($row = $tsql->GetArray('t',MYSQL_ASSOC)) { $typelink2 .= "<a href='".$row['typedir']."'>".$row['typename']."</a>"; } @me=str_replace("{cmspath}","",$typelink2); [/field:id] {/dede:type}
2、用方法调用标签直接调用栏目名称和链接:
大家首先找到include/taglib/channel.lib.php文件,找到59行,代码如下:
else if($type=='self') { if($reid==0) return ''; $sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath From `dede_arctype` where reid='$reid' And ishidden<>1 order by sortrank asc limit 0, $line "; } 在后面加入下面代码
else if($type=='parent') { //新增代码 获得上级栏目 $sql="Select id,typename,typedir,isdefault,ispart, defaultname,namerule2,moresite,siteurl From dede_arctype where reid='$topid' And ishidden<>1 order by sortrank asc limit 0,$line"; }
继续找到下面代码:
//处理同级栏目中,当前栏目的样式 if( ($row['id']==$typeid || ($topid==$row['id'] && $type=='top') ) &&
修改为:
//处理同级栏目中,当前栏目的样式 if( ($row['id']==$typeid || ($topid==$row['id'] && $type=='top') || ($row['id']==$reid && $type=='parent' )) && $currentstyle!='' )
好了现在有两个方法来修改dedecms文章调用栏目的名称和链接,TC个人比较喜欢第二种方法。呵呵。
本文固定链接: http://20tc.com/dedecms-channel-name-link.html | TC的博客