使用帝国CMS建站时,想要提升页面的相关性和用户体验,可以通过关键词匹配来调用与当前文章相关的内容。实现这一功能不需要插件,只需要合理利用灵动标签(e:loop)和SQL查询即可。

1. 基于关键字匹配调用相关文章

帝国CMS的文章关键词通常存储在infotags字段中,但实际调用相关文章时,可以借助文章的“keyword”字段或tag进行关联。如果希望根据当前文章的关键词(如系统自带的“关键字”字段)查找相似内容,可使用以下方法:

在内容页模板中插入如下灵动标签代码:

[e:loop={"select * from {$dbtbpre}ecms_news where FIND_IN_SET('$navinfor[keyboard]', keyboard) and id$navinfor[id] order by newstime desc limit 10",10,24,0}]

=$bqr['title']?>

[/e:loop]

说明:

- $navinfor[keyboard] 获取当前文章的关键字字段值

- 使用 FIND_IN_SET 匹配包含相同关键词的文章

- id$navinfor[id] 排除当前文章本身

- 调用的是新闻数据表(ecms_news),请根据实际模型调整表名

2. 利用TAGS实现更精准的相关文章推荐

如果你启用了帝国CMS的TAGS功能,可以通过tag关联来获取更准确的相关文章。前提是文章已绑定tag,且tag链接正常。

示例代码:

php

$tagstr = $navinfor['infotags'];

$tags = explode(',', $tagstr);

$related_sql = "";

foreach($tags as $tag) {

if($tag) {

$related_sql .= "tagname='$tag' or ";

}

}

$related_sql = substr($related_sql, 0, -4);

if($related_sql) {

$t = $empire->query("select * from {$dbtbpre}enewstagsdata where ".$related_sql." and id$navinfor[id] order by newstime desc limit 10");

while($r = $empire->fetch($t)) {

$titleurl=sys_ReturnBqTitleLink($r);

echo ''.$r[title].'

';

}

}

?>

该方法通过拆分当前文章的infotags,查找拥有相同tag的文章,实现更智能的推荐逻辑。

3. 注意事项与优化建议

为确保关键词相关文章调用效果更好,请注意以下几点:

确保文章编辑时填写了“关键字”或“TAGS”,否则无法匹配

若使用自定义字段作为关键词来源,需替换$navinfor[keyboard]为对应字段名

对性能敏感的站点建议限制调用数量(如limit 6~10条)

可在列表页或内容页灵活应用,提升内链结构