在DEDECMS中,调用上级栏目的信息对于SEO优化和内容管理至关重要,通过合理设置栏目的标题、关键字和描述,可以有效提升网站的搜索引擎排名和用户体验,以下是详细的步骤和方法:
实现方法
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];
}
“`
这个方法会在当前栏目信息为空时,逐级向上查找上级栏目的信息,直到找到非空值或达到顶级栏目为止。
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) {
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
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复