下面我将从文件位置、模板代码结构、字段说明、自定义修改以及常见问题五个方面进行详细说明。

(图片来源网络,侵删)
模板文件位置
DedeCMS 的注册和登录模板文件都存放在 templets/ 目录下。
-
登录模板
- 主登录页面:
/templets/default/login.htm - 弹出层登录模板:
/templets/default/datalist_login.htm(通常用于首页的“登录”按钮点击后弹出的窗口)
- 主登录页面:
-
注册模板
- 主注册页面:
/templets/default/reg_new.htm - 协议页面:
/templets/default/agreement.htm(注册前需要同意的用户协议)
- 主注册页面:
重要提示:

(图片来源网络,侵删)
default是默认的模板目录,如果你使用的是其他自定义模板(templets/你的模板名/),那么你需要去对应的目录下找到这些文件。- 强烈建议:在修改任何模板文件之前,先备份原文件,这样如果修改出错,可以轻松恢复。
模板代码结构分析
这些模板文件本质上是 HTML 文件,但嵌入了 DedeCMS 的特定标签(如 {dede:php}、{dede:global} 等)和 PHP 代码,用于实现动态功能。
登录模板 (login.htm) 结构
一个典型的登录页面包含以下部分:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">会员登录 - {dede:global.cfg_webname/}</title>
<link rel="stylesheet" href="{dede:global.cfg_templets_skin/}/style/css.css" type="text/css" />
</head>
<body>
<div class="login-box">
<h2>会员登录</h2>
<!-- 登录表单 -->
<form name="userlogin" method="POST" action="{dede:global.cfg_memberurl/}/index_do.php">
<input type="hidden" name="dopost" value="login" />
<div class="form-group">
<label>用户名/Email/手机:</label>
<input type="text" name="userid" id="userid" size="20" class="text" />
</div>
<div class="form-group">
<label>密码:</label>
<input type="password" name="pwd" id="pwd" size="20" class="text" />
</div>
<!-- 可选:验证码 -->
{dede:php}
if(preg_match("/验证码/is", $GLOBALS['cfg_mb_pc'])){
echo '<div class="form-group"><label>验证码:</label>';
echo '<input type="text" name="vdcode" id="vdcode" size="10" class="text" />';
echo '<img id="vdimgck" align="absmiddle" style="cursor:pointer" src="'.$GLOBALS['cfg_cmspath'].'/include/vdimgck.php" onclick="this.src=\''.$GLOBALS['cfg_cmspath'].'/include/vdimgck.php?'+Math.random()+\'\'" alt="看不清?点击更换" />';
echo '</div>';
}
{/dede:php}
<div class="form-group">
<input type="checkbox" name="keeptime" value="604800" /> <label for="keeptime">记住我</label>
</div>
<div class="form-group">
<button type="submit" class="btn">登 录</button>
<a href="{dede:global.cfg_memberurl/}/index.php">忘记密码?</a>
</div>
</form>
<!-- 注册入口 -->
<p>还没有账号?<a href="{dede:global.cfg_memberurl/}/reg_new.php">立即注册</a></p>
</div>
</body>
</html>
关键标签说明:
{dede:global.cfg_memberurl/}: 获取会员中心的 URL,通常指向/member/。{dede:global.cfg_webname/}: 获取网站名称。{dede:global.cfg_templets_skin/}: 获取当前模板目录路径。action="{dede:global.cfg_memberurl/}/index_do.php": 表单提交地址,这是处理登录请求的核心 PHP 文件。name="dopost" value="login": 告诉服务器这个表单是执行“登录”操作。name="userid"和name="pwd": 用户名和密码的输入框名称,不能修改,后台处理程序依赖这两个字段名。- 验证码部分:使用
{dede:php}标签判断是否开启验证码,并动态生成。
注册模板 (reg_new.htm) 结构
注册页面比登录页面更复杂,因为它包含了更多的字段和验证逻辑。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">会员注册 - {dede:global.cfg_webname/}</title>
<!-- ... 其他 head 内容 ... -->
</head>
<body>
<div class="reg-box">
<h2>会员注册</h2>
<!-- 注册表单 -->
<form name="regUser" method="POST" action="{dede:global.cfg_memberurl/}/index_do.php">
<input type="hidden" name="dopost" value="regnew" />
<input type="hidden" name="mtype" value="个人" /> <!-- 可以根据需要修改或去掉 -->
<input type="hidden" name="agree" value="1" /> <!-- 同意协议 -->
<!-- 用户名 -->
<div class="form-group">
<label>用户名:</label>
<input type="text" name="userid" id="userid" size="30" class="text" />
</div>
<!-- 密码 -->
<div class="form-group">
<label>密码:</label>
<input type="password" name="pwd" id="pwd" size="30" class="text" />
</div>
<!-- 确认密码 -->
<div class="form-group">
<label>确认密码:</label>
<input type="password" name="repass" id="repass" size="30" class="text" />
</div>
<!-- Email (非常重要,用于找回密码和接收通知) -->
<div class="form-group">
<label>Email:</label>
<input type="text" name="email" id="email" size="30" class="text" />
</div>
<!-- 其他字段,如: -->
<!-- {dede:php} $mfields = array('sex', 'age', 'tel'); foreach($mfields as $field){ ... } {/dede:php} -->
<!-- 这部分通常由后台自定义字段生成 -->
<!-- 验证码 -->
{dede:php}
if($GLOBALS['cfg_mb_pc']){
echo '<div class="form-group"><label>验证码:</label>';
echo '<input type="text" name="vdcode" id="vdcode" size="10" class="text" />';
echo '<img id="vdimgck" ... />'; // 同登录页
echo '</div>';
}
{/dede:php}
<div class="form-group">
<button type="submit" class="btn">注 册</button>
</div>
</form>
</div>
</body>
</html>
关键标签说明:
action="{dede:global.cfg_memberurl/}/index_do.php": 提交地址,与登录相同。name="dopost" value="regnew": 告诉服务器执行“注册新用户”操作。name="userid",name="pwd",name="repass",name="email": 核心注册字段,名称固定。name="agree" value="1": 用于表示用户已经同意了注册协议,通常会有一个复选框,用户勾选后value变为1。- 自定义字段: 注册页面的最大变量是“自定义字段”,如果你在后台“会员模型”中添加了新的字段(如:
性别、手机号、地址等),这些字段需要手动添加到reg_new.htm中,并确保name属性与后台定义的字段名完全一致。
如何自定义修改
修改样式
直接在 login.htm 和 reg_new.htm 文件中修改 HTML 和 CSS 样式,或者引入外部的 CSS 文件(如 {dede:global.cfg_templets_skin/}/style/css.css)来美化表单。
增加或删除字段
增加字段(以增加“手机号”为例):
-
后台添加字段:
- 登录 DedeCMS 后台。
- 进入
会员->会员模型->字段管理。 - 选择你要修改的会员模型(如“普通会员”),点击“添加新字段”。
- 字段名称填
mobile(英文,不能有特殊字符)。 - 填
手机号。 - 其他选项根据需要设置(如是否必填、数据类型等)。
- 保存。
-
修改注册模板:
- 打开
/templets/default/reg_new.htm。 - 在合适的位置添加 HTML 代码:
<div class="form-group"> <label>手机号:</label> <input type="text" name="mobile" id="mobile" size="30" class="text" /> </div> - 关键:
name="mobile"必须和后台添加的字段名完全一致。
- 打开
-
更新缓存:
- 在后台点击
系统->一键更新站点,更新“会员模型”和“页面HTML”,确保新字段被正确加载。
- 在后台点击
删除字段: 操作相反,先在后台删除字段,然后从模板文件中删除对应的 HTML 代码即可。
修改逻辑
如果需要修改一些简单的逻辑,比如调整验证码的显示位置、修改提示文本等,可以直接编辑模板文件。
如果需要修改复杂的业务逻辑(比如注册时自动发送短信、验证手机号等),则需要修改后台的 PHP 文件,/member/index_do.php。这需要一定的 PHP 编程基础,操作前务必备份文件!
常见问题与解决方法
-
问题: 登录或注册后页面样式错乱。
- 原因: 模板文件中的 CSS 路径不正确,或者 CSS 文件本身缺失。
- 解决: 检查
{dede:global.cfg_templets_skin/}路径是否正确,并确保 CSS 文件存在于该路径的style/目录下。
-
问题: 注册时,自定义字段无法提交或后台看不到数据。
- 原因: 模板文件中字段的
name属性与后台定义的字段名不一致。 - 解决: 仔细核对模板中
<input>标签的name值和后台“字段管理”中的“字段名称”。
- 原因: 模板文件中字段的
-
问题: 登录后没有跳转到预期页面。
- 原因: 表单提交后,
index_do.php处理成功后会跳转到cfg_memberurl定义的页面,可能是配置问题。 - 解决: 检查后台“系统” -> “系统基本参数” -> “核心设置”中的“会员中心目录”是否正确。
- 原因: 表单提交后,
-
问题: 登录/注册按钮没反应。
- 原因: 通常是 JavaScript 验证错误或表单
action路径错误。 - 解决:
- 打开浏览器开发者工具(F12),在 Console 面板查看是否有 JavaScript 错误。
- 检查表单的
action属性是否指向了正确的{dede:global.cfg_memberurl/}/index_do.php。
- 原因: 通常是 JavaScript 验证错误或表单
希望这份详细的指南能帮助你完全掌握 DedeCMS 的注册登录模板!
