一、先定位核心原因,别盲目改代码
调用失败的表现通常有3种:标签无任何内容输出、输出内容混乱/错误匹配、后台设置推荐但前台仍不显示。先按顺序用以下2步快速排查:
1.1 检查模板标签的基本格式
EyouCMS推荐文章的核心原生标签是{eyou:arclist flag='c'}(flag='c'就是推荐标识,必须精确小写,字母顺序不能错),直接看你正在用的首页/栏目页/内容页模板(对应目录:application/template/你的当前模板名/),比如index.htm(首页)、list_article.htm(通用文章列表页)是否有以下3种错误格式:
- 错误1:标识大小写错 → 比如写成Flag='C'或FLAG='c'
- 错误2:标识拼写错 → 比如写成flag='recommend'或flag='tuijian'
- 错误3:标签闭合不完整 → 比如开头{eyou:arclist flag='c'}结尾漏写{/eyou:arclist}
如果有,直接改回正确格式{eyou:arclist flag='c' limit='5' titlelen='30'}{/eyou:arclist}(limit='5'表示取5篇,titlelen='30'标题30字符截断,这两个可按需调整),刷新前台看是否恢复。
1.2 验证后台推荐标识与内容设置
格式没问题的话,进入EyouCMS后台:
- 第一步:点击左侧内容管理→文章管理,找1篇你确定设置过推荐的文章,点右侧编辑,拉到高级属性栏,确认推荐(c)是否被勾选、保存状态(修改后记得重新点保存)
- 第二步:如果是栏目标签调用失败,检查arclist标签是否加了typeid='当前栏目ID'或type='self'?如果加了,确认栏目下是否有勾选推荐的子栏目内容?或者是否勾选了type='son'(只调子栏目)但子栏目无推荐?如果有这类问题,按需调整typeid或type参数
- 第三步:清空后台所有缓存→点击左侧系统→清除缓存→全选→确定清除
二、常见硬伤修复(格式和缓存没问题时用)
2.1 修复“后台已推荐+模板正确但仍无输出”的问题
90%以上这类问题是因为arclist标签没有正确绑定数据表字段或过滤条件冲突,分两种场景:
场景A:全站调用无输出(首页或通用全局块)
替换模板中的通用标签为以下最小可测试标签(去掉所有可能冲突的过滤参数,比如channel、arcrank、orderby等),如果能输出,说明原参数有问题,再逐个加回去排查:
```
{eyou:arclist flag='c' limit='3'}
{$field.title}
{/eyou:arclist}
```
如果最小标签仍无输出,可能是数据库推荐字段(archives表的flag字段)被破坏,修复步骤:
- 1. 登录你的网站数据库管理工具(比如宝塔面板的phpMyAdmin、虚拟主机的数据库管理后台)
- 2. 找到你安装EyouCMS时设置的数据库前缀+archives表(比如ey_archives),点击进入
- 3. 点击顶部SQL,输入以下SQL语句(注意把前缀ey_换成你自己的):
```sql
UPDATE `ey_archives` SET `flag`=CONCAT(IFNULL(`flag`,''),',c') WHERE `aid` IN (1,2,3);
```
(1,2,3换成你确定要测试的3篇已发布文章的aid,aid在后台文章列表的“ID”列看)
- 4. 点击执行,显示“成功执行X行”后,刷新后台清除缓存,再看前台
场景B:特定栏目下调用无输出
最小可测试标签换成带type='self'的:
```
{eyou:arclist flag='c' type='self' limit='3'}
{$field.title}
{/eyou:arclist}
```
如果还是不行,检查该栏目的审核权限设置是否导致已推荐文章被隐藏?进入后台内容管理→栏目管理→点击对应栏目右侧编辑→拉到高级设置→前台显示规则,确认是否勾选了只显示已审核内容(如果是,检查该栏目标识c的文章是否审核通过)。
2.2 修复“输出内容是普通文章而非推荐”的问题
这个问题100%是flag标识被覆盖或者模板有重复的arclist标签且没有flag,排查步骤:
- 1. 先检查模板标签是否有两个flag参数?比如写成
{eyou:arclist flag='a' flag='c'}(后覆盖前,会取标识a的头条)
- 2. 检查模板标签是否有if判断覆盖flag?比如:
```
{eyou:arclist limit='5'}
{if $field.xxx == xxx}flag='c'{/if}
{/eyou:arclist}
```
这种写法是错误的,flag必须放在arclist标签的属性里,不能在中间写if
- 3. 检查整个模板文件是否有不带flag的arclist标签被你当成了推荐模块?比如两个模块挨在一起,你只改了第一个的flag
2.3 修复“后台新增推荐文章但前台不更新”的问题
这是缓存设置不合理导致的,分两种方式修复:
方式A:临时修复(快速上线)
后台点击左侧系统→清除缓存→全选→确定清除即可。
方式B:永久修复(避免频繁手动清缓存)
进入后台系统→系统基本参数→性能设置,调整以下2个参数:
- 1. 首页/列表页/内容页HTML静态缓存时间:把默认的3600秒(1小时)改成0(关闭静态缓存,动态更新),或者改成你能接受的较短时间比如300秒(5分钟)
- 2. 数据缓存时间:把默认的3600秒改成0
注意:关闭静态缓存会稍微降低网站速度,如果你的网站访问量很大(日均10万PV以上),建议改成300-600秒,同时开启CDN缓存(但CDN缓存需要自己手动刷新资源)。
三、极端情况修复(前两种都没用时用)
3.1 修复“模板标签被第三方插件/代码篡改”的问题
如果你安装过第三方的内容推荐插件、SEO插件,可能会被篡改原生arclist标签的逻辑,修复步骤:
- 1. 进入后台插件→已安装插件,先停用所有第三方内容相关的插件,然后刷新后台清除缓存,看前台是否恢复
- 2. 如果恢复,说明是某个插件的问题,逐个启用插件排查,找到问题插件后卸载,或者联系插件作者修复
- 3. 如果停用插件后仍不行,检查模板文件的arclist标签是否被替换成了第三方插件的标签?比如
{eyou:plugin:recommend},如果是,直接替换回原生的{eyou:arclist flag='c'}
3.2 修复“数据库ey_archives表flag字段丢失/格式错误”的问题
如果前面的SQL执行失败,提示“flag字段不存在”,修复步骤:
- 1. 登录数据库管理工具,找到ey_archives表,点击结构
- 2. 点击添加字段,设置以下参数:
- 字段名:flag
- 类型:VARCHAR
- 长度/值:255
- 默认值:留空
- 排序规则:utf8mb4_general_ci(如果是旧版本EyouCMS,可能是utf8_general_ci)
- 位置:在字段“is_recommend”后面(如果没有is_recommend,放在“aid”后面)
- 3. 点击保存,然后回到后台重新勾选文章的推荐标识,清除缓存即可
四、修复后的验证与优化
4.1 验证修复效果
- 1. 前台检查:首页、目标栏目页、目标内容页的推荐模块是否正常显示你设置的推荐文章
- 2. 后台新增验证:新增1篇文章,勾选推荐标识,保存后刷新前台(如果是动态更新,直接刷新;如果是静态缓存,手动清缓存后刷新),看是否立即显示
- 3. 后台取消验证:取消1篇文章的推荐标识,刷新前台,看是否立即消失
4.2 优化推荐调用的参数
修复成功后,可以按需优化arclist标签的参数,提升用户体验:
```
{eyou:arclist flag='c' type='self' limit='5' titlelen='30' infolen='60' orderby='sort_order asc,aid desc' addfields='litpic'}
{$field.title}
{$field.description|msubstr=0,60}
{/eyou:arclist}
```
参数说明:
- addfields='litpic':必须加,否则无法调用缩略图
- infolen='60':简介60字符截断
- orderby='sort_order asc,aid desc':先按后台的推荐排序(sort_order越小越靠前),再按发布时间倒序
- {$field.description|msubstr=0,60}:msubstr是EyouCMS的多字节截取函数,避免中文乱码