第一步:检查最常见的原因(90%的问题出在这里)
模板文件标签格式错误
这是最常见的原因,Dede标签对格式非常敏感。

(图片来源网络,侵删)
- 检查大括号 :确保标签使用的是英文半角的大括号 ,而不是中文全角的 ,直接复制粘贴或手动输入时很容易出错。
- 错误:
{dede:arclist} - 正确:
{dede:arclist}
- 错误:
- 检查标签闭合:某些标签(如
field)需要正确闭合。- 错误:
{dede:field name='title/} - 正确:
{dede:field name='title'/}或{dede:field name='title'}{/dede:field}
- 错误:
- 检查空格和引号:标签内部的属性名和值之间不要有多余的空格,引号建议使用英文半角双引号 。
标签未在 {dede:loop} 循环内使用
很多列表类标签(如 arclist, channel, flink 等)必须在循环标签(如 loop 或 list)内部使用,否则无法解析。
- 错误示例:
<body> {dede:arclist} <li><a href="[field:link/]">[field:title/]</a></li> {/dede:arclist} </body>在这个例子中,
arclist需要被一个循环包裹,loop。 - 正确示例:
<body> {dede:loop table='dede_archives' sort='id' row='10'} <li> <a href="[field:arcurl/]">[field:title/]</a> </li> {/dede:loop} </body>或者直接使用
arclist自带的循环功能(它本身就是个循环标签):<body> {dede:arclist row='10' titlelen='24'} <li> <a href="[field:arcurl/]">[field:title/]</a> </li> {/dede:arclist} </body>
第二步:检查系统和环境问题
如果第一步检查无误,那么问题可能出在网站环境或系统本身。

(图片来源网络,侵删)
PHP 文件解析问题
DedeCMS 的标签解析依赖于 index.php 文件,如果这个文件被修改、损坏或丢失,标签将无法被解析。
- 检查
index.php文件:- 登录你的FTP或主机控制面板。
- 找到网站根目录下的
index.php文件。 - 用文本编辑器打开它,内容应该大致如下(核心代码是
require_once(dirname(__FILE__)."/include/common.inc.php");):<?php if(!file_exists(dirname(__FILE__).'/data/common.inc.php')) { header('Location:install/index.php'); exit(); } require_once(dirname(__FILE__)."/include/common.inc.php"); require_once(DEDEINC."/arc.partview.class.php"); $pv = new PartView(); $pv->SetTemplet($cfg_basedir.$cfg_templets_dir."/".$cfg_defaultindex); $pv->Display(); ?> - 如果文件内容为空、被篡改,或者缺少
require_once(...)这一行,你需要从官方下载一个完整的DedeCMS安装包,用里面的index.php文件覆盖你网站上的这个文件。
缓存问题
DedeCMS 有很强的缓存机制,即使你修改了模板,但因为缓存的存在,前台页面仍然显示旧的内容。
- 解决方案:
- 后台清理缓存:登录DedeCMS后台,进入【系统】->【一键更新网站】->【更新缓存】,点击“更新系统缓存”。
- 手动删除缓存文件:通过FTP删除
/data目录下的cache文件夹里的所有文件,这通常是最有效的方法。 - 检查模板缓存:确保你的模板目录(默认为
/templets/)有写入权限,并且里面的缓存文件(如.htm文件)是最新的。
文件编码问题
如果你的模板文件保存的编码格式不正确(例如保存为UTF-8 with BOM),可能会导致PHP解析出错,从而无法解析标签。
- 解决方案:
- 用专业的代码编辑器(如 VS Code, Sublime Text, Notepad++)打开你的模板文件。
- 检查并转换文件编码为 UTF-8 无BOM格式 或 GBK,DedeCMS通常默认使用GBK,但现在UTF-8更常见,请确保你的数据库、程序文件和模板文件三者编码一致。
目录权限问题
Web服务器(如Apache, Nginx)需要对你网站的某些目录有写入权限,特别是 /data 目录,因为它用于存放缓存和配置文件,权限不足会导致缓存无法生成,标签解析失败。

(图片来源网络,侵删)
- 解决方案:
- 通过FTP或主机控制面板,将以下目录的权限设置为 755(目录)或 644(文件),特别是
/data目录及其内部文件,权限可能需要设置为 777(仅限调试,生产环境请谨慎)以确保服务器有完全的写入权限。/data/templets(如果模板有动态标签,需要写入权限)/uploads
- 通过FTP或主机控制面板,将以下目录的权限设置为 755(目录)或 644(文件),特别是
第三步:检查特定场景和插件
如果以上方法都无效,问题可能更具体。
自定义标签问题
如果你使用了自定义的标签(通过 lib目录下的.php文件 定义),可能是标签代码本身有bug,或者标签文件未正确放置。
- 检查标签文件:确保你的自定义标签PHP文件放在
/include/taglib/目录下,并且代码没有语法错误。 - 检查标签调用:确保在模板中调用自定义标签的语法正确,
{dede:mytag name='value'/}。
伪静态规则问题
如果你的网站开启了伪静态,可能是伪静态规则(.htaccess 或Nginx的配置)与DedeCMS的标签解析机制产生了冲突。
- 解决方案:
- 暂时关闭伪静态功能,看标签是否能正常解析,如果可以,说明就是伪静态规则的问题。
- 检查你的
.htaccess文件,确保DedeCMS的默认伪静态规则没有被错误修改或覆盖,可以从官方安装包中下载一个标准的.htaccess文件进行替换。
排查清单
当你遇到标签无法解析时,请按以下顺序检查:
- 【模板层面】:检查标签的 是否为英文半角,格式是否正确,是否在正确的循环标签内。
- 【核心文件】:检查根目录
index.php文件是否完整,特别是require_once(...)这一行。 - 【缓存清理】:登录后台清理系统缓存,并手动删除
/data/cache/目录下的所有文件。 - 【文件编码】:确认模板文件、数据库、程序文件三者编码统一(推荐UTF-8无BOM)。
- 【目录权限】:检查
/data和/templets目录的写入权限。 - 【伪静态】:尝试关闭伪静态功能,排查是否是规则冲突。
- 【自定义标签】:如果是自定义标签问题,检查标签PHP文件和调用语法。
按照这个流程,绝大多数的“Dede标签无法解析”问题都能得到解决,如果问题依然存在,请提供具体的错误页面截图、相关模板代码片段和你的DedeCMS版本,以便进一步分析。
