问题的根源通常不在于手机端本身,而在于 数据调用逻辑 或 权限控制 的配置上。

下面我将从 原因分析、排查步骤 和 解决方案 三个方面,为您详细拆解这个问题。
原因分析
为什么未审核的文章会跑到手机端去?主要有以下几个可能性:
-
手机端调用模型不完整(最常见原因):
- 织梦的PC端和手机端是两套独立的模板,它们调用数据的方式可能不同。
- PC端的文章列表调用标签(如
{dede:arclist})可能包含了channelid等属性,正确地指向了文章模型。 - 而手机端的模板开发者可能为了图方便,使用了更简单的调用方式,或者直接复制了PC端的标签但没有做适配,导致调用出了问题。
-
缺少审核状态的条件判断:
(图片来源网络,侵删)- 正确的文章列表调用,应该默认只显示
arcrank(文章状态) 字段为0(已审核)或-1(特殊文档)的文章。 - 如果手机端的调用标签里没有明确加上这个条件,或者条件写错了,就会把所有状态的文章(包括
1-未审核)都查询出来。
- 正确的文章列表调用,应该默认只显示
-
缓存问题:
织梦有强大的静态缓存和动态缓存功能,当你修改了后台的审核状态后,如果网站开启了缓存,前台页面可能不会立即更新,仍然显示旧的数据。
-
权限或角色问题(较少见):
如果这是一个多用户的管理后台,可能存在权限设置问题,导致某个角色有权限看到未审核的内容,并且其浏览体验被错误地应用到了所有用户。
排查步骤
请按照以下步骤,一步步定位问题所在:
第1步:确认后台状态
确保问题确实存在,去后台找到那篇“未审核”的文章,确认其 审核状态 确实是“未审核”,发布状态 是“仅动态”或“生成HTML”,如果状态是“未审核”但“发布状态”是“仅动态”,前台在清空缓存后理论上也是看不到的。
第2步:检查手机端模板文件
这是最关键的一步,你需要找到手机端首页、列表页等显示文章的模板文件。
-
定位模板文件:
- 登录织梦后台 -> 模板 -> 手机模板。
- 检查首页、文章列表页、文章栏目页等可能显示文章列表的页面模板,文件名通常是
index.htm,list_article.htm,index_list.htm等,具体取决于你的模板。
-
查找核心调用标签:
- 在模板文件中,找到调用文章列表的代码,最常见的标签是
{dede:arclist}。 - 你可能会找到类似这样的代码:
{dede:arclist typeid='' row='10' titlelen='30'} <a href="[field:arcurl/]">[field:title/]</a> {/dede:arclist}
- 在模板文件中,找到调用文章列表的代码,最常见的标签是
-
分析标签属性:
- 重点检查
channelid属性:{dede:arclist}默认调用的是“普通文章”模型(channelid=1),如果你的手机端调用了其他模型,或者没有指定channelid,可能会导致数据混乱。 - 检查是否有
arcrank属性:这是判断审核状态的关键。正确的调用应该显式地指定只调用已审核的文章。- 正确写法:
arcrank='0'或arcrank='-1,0',这表示只调用特殊文档(如首页图)和已审核的文章。 - 错误/不完整写法:没有
arcrank属性,或者写成了arcrank=''(空值,可能调用所有状态)。
- 正确写法:
- 重点检查
第3步:清空网站缓存
无论你修改了什么,清空缓存都是必须的。
- 登录织梦后台 -> 系统 -> 一键更新。
- 点击“更新系统缓存”和“清空所有缓存”。
- 如果开启了静态生成,也可以尝试重新生成手机端的首页和列表页。
解决方案
根据排查结果,选择对应的解决方案:
修改手机端模板调用标签(最常用)
如果发现是手机端模板里的 {dede:arclist} 标签缺少 arcrank 属性或 channelid 属性不正确,请按以下方式修改:
-
添加审核状态过滤: 在
{dede:arclist}标签里,加上arcrank='-1,0',这是最核心的修复。{dede:arclist typeid='' row='10' titlelen='30' channelid='1' arcrank='-1,0'} <a href="[field:arcurl/]">[field:title/]</a> {/dede:arclist}channelid='1':明确指定调用“普通文章”模型,虽然很多时候默认就是1,但写上更严谨。arcrank='-1,0':这是关键,确保只显示已审核和特殊文档。
-
检查其他调用标签: 除了
{dede:arclist},手机端模板里可能还有{dede:list}(用于列表页)、{dede:sql}(直接用SQL查询)等标签。{dede:list}:同样需要加上arcrank='-1,0'。{dede:sql}:这种写法风险较高,需要检查SQL语句本身是否包含了WHERE arcrank IN (-1, 0)这样的条件。
检查并修正数据表权限(较少用)
如果修改模板和清空缓存后问题依旧,可能是数据库权限或数据问题。
- 登录你的数据库管理工具(如 phpMyAdmin)。
- 找到织梦的数据库,找到
dede_archives表(文章主表)。 - 检查这个表的
arcrank字段,确保那篇未审核的文章,其arcrank值确实是1。 - 检查
dede_arctype表(栏目表),看看相关栏目的isdefault等字段是否有异常,但这可能性极小。
使用织梦后台的“一键更新”功能
一些底层的数据表结构或字段定义可能出现了不一致,织梦后台的“一键更新”功能可以尝试修复一些基础问题。
- 进入 系统 -> 一键更新 -> 更新数据库。
- 按照提示操作,让它检查并尝试修复,这通常不会丢失数据,但操作前最好备份一下数据库。
总结与预防
90%的“手机端文章未审核”问题,都是因为手机端模板里的文章列表调用标签没有加上 arcrank='-1,0' 这个条件。
预防措施:
- 规范模板开发:在开发或修改织梦模板时,养成良好习惯,所有调用文章列表的标签都应明确指定
channelid和arcrank。 - 版本控制:修改模板前,先备份原始模板文件,这样如果修改出错,可以快速恢复。
- 定期清理缓存:在后台修改数据后,第一时间清空前台缓存,确保看到的是最新结果。
希望这份详细的指南能帮助您成功解决问题!如果按照以上步骤操作后仍然无法解决,请提供您手机端模板中 {dede:arclist} 标签的具体代码,我可以帮您进一步分析。
