### 问题背景 默认情况下,`{dede:arclist}` 标签中的 `keyword` 属性仅支持静态值。如果每个栏目的关键词或每篇文章的标题都不同,那么静态设置显然无法满足需求。为了解决这一问题,我们可以对 Dedecms 的核心文件进行小范围修改,使 `keyword` 属性支持动态变量。
### 修改步骤 #### 1. 打开核心文件 找到 Dedecms 安装目录下的 `/include/taglib/arclist.lib.php` 文件,并打开它。
#### 2. 修改代码逻辑 在文件中找到以下代码:
$keyword = trim($keyword);
preg_match("/~([A-Za-z0-9_]+)~/s", $keyword, $conditions);
if(isset($refObj->Fields[$conditions[1]])) {
$keyword = addslashes($refObj->Fields[$conditions[1]]);
}
#### 3. 模板标签写法 完成上述修改后,在模板文件中可以这样使用: 其中,`keyword='~keywords~'` 表示根据当前页面的关键词动态调用相关文章。如果你希望基于标题调用,则可以改为 `keyword='~title~'`。
### 注意事项 - **字段匹配**:确保模板中使用的字段名称(如 `keywords` 或 `title`)与数据库表结构一致。 - **缓存更新**:修改完成后,请进入 Dedecms 后台,依次点击“生成” -> “更新系统缓存”,以确保更改生效。 - **安全性**:由于涉及核心文件修改,建议备份原始文件以防万一。
通过以上方法,你可以轻松实现基于动态关键词的文章调用功能,从而提升网站内容的相关性和用户体验。希望这篇文章对你有所帮助!