如何在dede中调用上级栏目信息?

dedecms中,调用上级栏目的方法是使用{dede:field name='topid'/}标签。

在DEDECMS中,调用上级栏目的信息对于SEO优化和内容管理至关重要,通过合理设置栏目的标题、关键字和描述,可以有效提升网站的搜索引擎排名和用户体验,以下是详细的步骤和方法:

如何在dede中调用上级栏目信息?

实现方法

1、修改typelink.class.php文件

打开/include/typelink.class.php文件,找到以下代码段:

“`php

$this>TypeInfos = $this>dsql>GetOne($query);

“`

在该代码段下方添加三行代码:

“`php

$this>TypeInfos[‘keywords’] = $this>TypeInfos[‘keywords’] ? $this>TypeInfos[‘keywords’] : $this>GetTrueInfos(‘keywords’);

$this>TypeInfos[‘seotitle’] = $this>TypeInfos[‘seotitle’] ? $this>TypeInfos[‘seotitle’] : $this>GetTrueInfos(‘seotitle’);

$this>TypeInfos[‘description’] = $this>TypeInfos[‘description’] ? $this>TypeInfos[‘description’] : $this>GetTrueInfos(‘description’);

“`

这段代码的作用是在当前栏目的标题、关键字和描述为空时,自动调用上级栏目的信息。

2、增加GetTrueInfos方法

/include/typelink.class.php文件中,增加一个名为GetTrueInfos的方法:

“`php

function GetTrueInfos($info = ‘seotitle’) {

$infos = array(‘reid’=>$this>TypeID, $info=>”);

while(empty($infos[$info]) && $infos[‘reid’]!=0) {

$this>dsql>SetQuery("SELECT reid, ".$info." FROM idea_arctype WHERE id=’".$infos[‘reid’]."’");

$infos = $this>dsql>GetOne();

}

if(empty($infos[$info])) {

if($info == "seotitle") return $GLOBALS[‘cfg_webname’];

if($info == "keywords") return $GLOBALS[‘cfg_keywords’];

if($info == "description") return $GLOBALS[‘cfg_description’];

}

return $infos[$info];

}

“`

如何在dede中调用上级栏目信息?

这个方法会在当前栏目信息为空时,逐级向上查找上级栏目的信息,直到找到非空值或达到顶级栏目为止。

3、保存并更新

保存对typelink.class.php文件的修改后,一键更新网站缓存,预览效果,此方法在DEDECMS 5.7 SP1版本上测试有效,其他版本未进行测试。

调用导航栏栏目

1、调用顶级栏目

使用以下标签调用顶级栏目:

“`html

{dede:channel type=’top’ currentstyle="<li class=’thisclass’><a href=’~typelink~’>~typename~</a></li>"}/}

“`

如果想调用指定的顶级栏目,可以加上参数typeid=‘所要调用栏目的id’

2、调用二级子栏目

使用以下代码调用带有二级子栏目的栏目:

“`html

{dede:channelartlist typeid=’1,2,3,6,7,10,8,11′ row=’10’}/}

“`

其中typeid是顶级栏目的ID。

3、调用三级子栏目

使用以下代码调用带有三级子栏目的栏目:

“`html

<li>

<h3>{dede:type typeid=’2′}<a href='[field:typelink/]’ class="depth_1">[field:typename/]</a>{/dede:type}</h3>

<ul class="children" style="display: none;"> {dede:channelartlist typeid=’top’ typeid=’2′}/}</ul>

</li>

“`

其中typeid是子栏目所属的顶级栏目的ID。

相关问答FAQs

1、Q: DEDECMS中如何获取当前栏目的顶级栏目名称?

A: 可以通过自定义函数GetTopTypename()来获取当前栏目的顶级栏目名称,在common.func.php中添加以下代码:

“`php

function GetTopTypename($id) {

如何在dede中调用上级栏目信息?

global $dsql;

$row = $dsql>GetOne("SELECT typename,topid FROM dede_arctype WHERE id= $id");

if ($row[‘topid’] == ‘0’) {

return $row[‘typename’];

} else {

$row1 = $dsql>GetOne("SELECT typename FROM dede_arctype WHERE id= $row[topid]");

return $row1[‘typename’];

}

}

“`

然后在模板中使用{dede:field name='typeid' function="GetTopTypename(@me)" /}来调用。

2、Q: DEDECMS中如何获取当前栏目的顶级栏目URL?

A: 可以通过自定义函数GetTopTypeurl()来获取当前栏目的顶级栏目URL,在common.func.php中添加以下代码:

“`php

function GetTopTypeurl($id) {

global $dsql;

$row = $dsql>GetOne("SELECT sitepath,topid FROM dede_arctype WHERE id= $id");

if ($row[‘topid’] == ‘0’) {

return $row[‘sitepath’];

} else {

$row1 = $dsql>GetOne("SELECT sitepath FROM dede_arctype WHERE id= $row[topid]");

return $row1[‘sitepath’];

}

}

“`

然后在模板中使用{dede:field name='typeid' function="GetTopTypeurl(@me)" /}来调用。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1116603.html

(0)
未希的头像未希新媒体运营
上一篇 2024-10-01 14:03
下一篇 2024-10-01 14:05

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

免费注册
电话联系

400-880-8834

产品咨询
产品咨询
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购  >>点击进入