原文来自:https://www.zixuephp.com
放在inc_functions.php 文件, ?>前。 通过 {dede:field name=’typeid’ function=”GetTypeName(@me)”/} 调用。
//通过栏目ID获取栏目的名称
function GetTypeName($typeid){
$typeandlink ="";
$dsql = new DedeSql(false);
$dsql->GetOne("Select ID,typedir,isdefault,defaultname,typename,ispart,namerule2 From detest_arctype where ID='$typeid' ");
$dsql->Execute($typeid);
while($row=$dsql->GetObject($typeid))
{
$typelink = GetTypeUrl($row->ID,MfTypedir($row->typedir),$row->isdefault,$row->defaultname,$row->ispart,$row->namerule2);
$typeandlink .= "<li id=\&;list_dh\&;><a href=\&;$typelink\&;>".$row->typename."</a></li>\n";
}
return $typeandlink;
}
本来自己需要,然后搜索论坛,看到很多提问,回答的不多,而且采用的方法比较老。
如:<a href='{dede:field name=typelink /}'>{dede:field name=typename/}</a>
用起来的时候,不会生成地址 只会:<a href=''> 这样,是用这样的原理调用当前栏目的地址。
现在新版的DEDECMS V5.31 更强大了,刚刚去模板手册里转了下,看到了 最新的栏目调用标签,
特此发帖,希望大家注意到这样的一个好的标签。 (栏目地址调用出真实地址,不是“忽悠”地址,推荐!)
Quote:
标签名称:type
功能说明:表示指定的单个栏目的链接
适用范围:全局使用
基本语法:
{dede:type}
<a href="[field:typelink /]">[field:typename /]</a>
{/dede:type}
参数说明:
typeid='' 指定栏目ID
底层模板字段:
typename,typelink(仅表示栏目的网址), 栏目表dede_arctype的所有字段
就“{dede:field name='title'/}-{dede:field name='typename'/}-{dede:global name='cfg_webname'/}”这样就可以显示啦。
第3种:(推荐)
本来想修改inc_archives_view.php来实现,
后来发现用“position”更简便。。。(不知道有没有人发过,现在分享一下,有不足之处还请高手多多指点哦:)
代码如下:
{dede:field name='title'/}-{dede:field name='position' runphp='yes'}
$tc="-"; //分隔符
$tw=$GLOBALS['cfg_list_symbol']; //调用位置分隔符
@me=html2text(@me); //去除html标签
$tf=split($tw,@me); //分解成数组
for($ta=(count($tf)-2);$ta>=1;$ta–){ //循环赋值给$tk
$tk.=trim($tf[$ta]).$tc;
}
$tk=substr($tk,0,-1);
@me=$tk; //赋值给@me
{/dede:field}-{dede:global name='cfg_webname'/}
将以上代码放在<title></title>之间就可以实现“文章标题-2级栏目-1级栏目-网站名”的形式了。
{dede:field name='position' runphp='yes'}
$tw=$GLOBALS['cfg_list_symbol']; //调用位置分隔符
@me=html2text(@me); //去除html标签
$tf=split($tw,@me); //分解成数组
@me=trim($tf[count($tf)-2]);//得到一级栏目名称
{/dede:field}