在DedeCMS中,相关文章的标签匹配和调用是网站SEO优化的重要组成部分,通过合理配置和使用标签,可以显著提升网站的用户体验和搜索引擎排名,本文将详细介绍如何通过Tag、关键词、标题来匹配相关文章,并调用全站相关文章的方法。
DedeCMS默认相关文章标签
DedeCMS默认自带的相关文章标签是likearticle
,然而在实际应用中,这个标签的调用效果并不完美,通常只能调用当前栏目的文章,并且仅能匹配文章的标题(title)和关键词(keywords),而无法匹配其他文章的tag,为了改进这一情况,需要对代码进行一些调整。
实现全站按TAG和关键字调用相关文章
可以通过修改include/taglib/likearticle.lib里的代码来实现全站按TAG和关键字调用相关文章,具体方法如下:
1、替换include/taglib/likearticle.lib里的代码
将以下PHP代码保存到文章模板的适当位置:
“`php
<?php
if(!’);
/
按关键词关连文章的标签
eregtype属性
eregtype = keyword 只匹配关键字
eregtype = tag 只匹配tag
eregtype = all tag优先,不存在tag则匹配关键字
mytypeid=” 栏目ID,多个栏目用,隔开
*/
function lib_likearticle(&$ctag,&$refObj)
{
global $dsql;
//属性处理
$attlist="row|12,titlelen|28,infolen|150,col|1,tablewidth|100,mytypeid|0,byabs|0,imgwidth|120,imgheight|90";
FillAttsDefault($ctag>CAttribute>Items,$attlist);
extract($ctag>CAttribute>Items, EXTR_SKIP);
$revalue = ”;
if(empty($tablewidth)) $tablewidth = 100;
if(empty($col)) $col = 1;
$colWidth = ceil(100/$col);
$tablewidth = $tablewidth."%";
$colWidth = $colWidth."%";
$ids = array();
$tids = array();
$typeid = ( !empty($mytypeid) ? $mytypeid : 0 );
if(empty($typeid))
{
if(!empty($refObj>Typelink>TypeInfos[‘reid’])) {
$typeid = $refObj>Typelink>TypeInfos[‘reid’];
} else {
if(!empty($refObj>Fields[‘typeid’])) $typeid = $refObj>Fields[‘typeid’];
}
}
if( !empty($typeid) && !ereg(‘,’, $typeid) ) {
$typeid = GetSonIds($typeid);
}
if(!empty($refObj>Fields[‘tags’]) && $eregtype != ‘keyword’ )
{
$tags = explode(‘,’, addslashes($refObj>Fields[‘tags’]));
$getsql = " tag like ‘".join("’ OR tag like ‘", $tags)."’ ";
$dsql>Execute(‘me’, "Select * Fromdede_tagindex
where $getsql ");
while($arow = $dsql>GetArray(‘me’)) {
$tids[] = $arow[‘id’];
}
$tid = join(‘,’, $tids);
if($tid!=”)
{
$dsql>Execute("me", "Select aid Fromdede_taglist
where tid in($tid) And arcrank > 1 group by aid order by aid desc limit 0, $row");
while($arow = $dsql>GetArray("me"))
{
$ids[] = $arow[‘aid’];
}
}
}
if($eregtype == ‘tag’ && count($ids) == 0 )
{
return ”;
}
else
{
if(count($ids) > 0)
{
if(!empty($typeid)) {
$typeid = " And arc.typeid in($typeid) And arc.id<>$arcid ";
}
$idsStr = join(‘,’, $ids);
$query = "Select arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,
tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath
fromdede_archives
arc left joindede_arctype
tp on arc.typeid=tp.id
where arc.id in($idsStr) $typeid order by arc.id desc";
}
else
{
$limitRow = $row count($ids);
$keyword = ”;
if(!empty($refObj>Fields[‘keywords’]))
{
$keywords = explode(‘,’, addslashes($refObj>Fields[‘keywords’]));
$getsql = " title like ‘%".join("%’ OR title like ‘%", $keywords)."%’ ";
$dsql>Execute(‘me’, "Select * Fromdede_archives
where $getsql and len(title)>2 ");
while($arow = $dsql>GetArray(‘me’)) {
$ids[] = $arow[‘id’];
}
}
if(count($ids) > 0) {
$idsStr = join(‘,’, $ids);
$query = "Select arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule,
tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath
fromdede_archives
arc left joindede_arctype
tp on arc.typeid=tp.id
where arc.id in($idsStr) order by arc.id desc";
} else {
return ”;
}
}
}
if(!empty($query)) {
$dsql>ExecuteNoneReturn($query,"me");
$result = $dsql>GetOne("me");
while($result = $dsql>GetArray("me")) {
$revalue .= preg_replace(‘/([field:titlefunc])/’,”,$result[‘title’]);
$revalue .= ‘<br />’;
if(strlen($revalue) >= $row) break;
}
}
return $revalue;
}
“`
这段代码实现了按TAG和关键字匹配相关文章的功能,并且可以根据需要调整优先级。
使用新版DedeCMS调用全站相关文章
对于新版DedeCMS(如5.7版本),可以通过以下步骤实现全站调用相关文章:
1、保存代码到文章模板的适当位置:
“`php
<div class="xgwz">
<dl class="tbox">
<dt><strong>相关文章</strong></dt>
<dd>
<ul class="c1 ico2">
{dede:likearticle col=’2′ row=’10’ titlelen=’42’ eregtype=all|tag|keyword}
<li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:likearticle}
</ul>
</dd>
</dl>
</div>
“`
这段代码可以在文章模板中插入相关文章列表,显示数量和列数可以根据需求调整。
相关问答FAQs
Q1: 如何确保相关文章的准确性和相关性?
A1: 确保相关文章的准确性和相关性,可以通过以下几点实现:
1、精确的标签和关键词:确保每篇文章的标签和关键词设置准确,避免模糊和不准确的标记。
2、定期检查和更新:定期检查和更新文章内容及其标签、关键词,确保其与最新内容保持一致。
3、多样化匹配方式:结合使用Tag和关键词匹配,提高匹配的全面性和准确性。
4、用户反馈:收集用户反馈,根据用户需求不断优化相关文章的推荐算法。
Q2: 如何在DedeCMS中实现相关文章的分页显示?
A2: 在DedeCMS中实现相关文章的分页显示,可以通过修改模板代码来实现,可以在模板文件中添加分页功能的相关代码:
{dede:pagelist listitem="info,index,end,pre,next,head,tail" listsize="5"/}
这段代码会在相关文章列表下方生成分页导航,用户可以通过点击分页按钮查看更多相关文章。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1115542.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复