文章页通过栏目ID获取栏目的名称


avatar
pcwnas 2023-04-21 245

原文来自: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}