模板文件位置

DedeCMS的模板文件存放在 /templets/ 目录下,默认情况下,注册和登录页面都使用系统默认的模板文件,位于:

dedecms注册登录模板
(图片来源网络,侵删)

登录模板文件: /templets/default/login.htm

注册模板文件: /templets/default/reg_new.htm

重要提示:

  • 不要直接修改 /templets/default/ 目录下的文件,因为升级DedeCMS时,这个目录下的文件会被覆盖。
  • 正确的做法是:在后台 -> 系统 -> 系统基本参数 -> 核心设置 中,找到 “会员默认模板目录” 选项,将其设置为一个你自定义的目录,member
  • default/login.htmdefault/reg_new.htm 这两个文件复制到你自定义的目录(如 /templets/member/)下。
  • 之后,所有的修改都在你自己的目录(/templets/member/)下进行,这样就不会影响系统升级。

登录页面 (login.htm) 结构与常用标签

登录页面的主要功能是让用户输入用户名和密码进行登录。

dedecms注册登录模板
(图片来源网络,侵删)

页面基本结构

一个典型的登录页面结构如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">{dede:global.cfg_webname/} - 用户登录</title>
    <link href="{dede:global.cfg_cmsurl/}/templets/default/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
    <div class="memberArea">
        <!-- 登录表单开始 -->
        <form name="form1" method="post" action="{dede:memberurl loginaction='index.php'}">
            <input type="hidden" name="dopost" value="login" />
            <div class="login-form">
                <h2>用户登录</h2>
                <div class="item">
                    <label>用户名:</label>
                    <input type="text" name="userid" id="userid" size="20" class="intxt" />
                </div>
                <div class="item">
                    <label>密码:</label>
                    <input type="password" name="pwd" id="pwd" size="20" class="intxt" />
                </div>
                <!-- 可选:验证码 -->
                {dede:php}
                if(preg_match("/4|6|7/",$safe_gdopen)){
                echo '<div class="item">
                    <label>验证码:</label>
                    <input type="text" name="vdcode" id="vdcode" size="10" class="intxt" />
                    <img src="'.$cfg_cmspath.'/include/vdimgck.php" id="validateimg" onclick="this.src=\''.$cfg_cmspath.'/include/vdimgck.php?'+Math.random()+\'" style="cursor:pointer" title="看不清?点击更换" />
                </div>';
                }
                {/dede:php}
                <div class="item">
                    <label>&nbsp;</label>
                    <button type="submit" class="btn-login">登 录</button>
                </div>
                <div class="other">
                    <a href="{dede:memberurl index='index.php'}">返回首页</a> | 
                    <a href="{dede:memberurl register='index.php'}">注册账号</a> | 
                    <a href="{dede:memberurl action='findpwd'}">忘记密码?</a>
                </div>
            </div>
        </form>
        <!-- 登录表单结束 -->
    </div>
</body>
</html>

核心标签说明

  • {dede:memberurl loginaction='index.php'}:

    这是登录表单的提交地址,固定写法,不要修改。

  • <input type="hidden" name="dopost" value="login">:

    隐藏域,用于告诉后台处理程序这是一个登录请求。

  • <input name="userid">:

    • 用户名输入框,name 属性必须为 userid
  • <input name="pwd">:

    • 密码输入框,name 属性必须为 pwd
  • {dede:php}...{/dede:php}:

    • 这是PHP代码块,用于根据后台是否开启验证码来动态显示验证码输入框和图片。$safe_gdopen 是一个系统变量,控制验证码类型。
  • <img src="...vdimgck.php...">:

    • 验证码图片的地址。onclick 事件实现了点击刷新验证码的功能。
  • {dede:memberurl register='index.php'}:

    指向注册页面的链接。

  • {dede:memberurl action='findpwd'}:

    指向找回密码页面的链接。


注册页面 (reg_new.htm) 结构与常用标签

注册页面的功能是让新用户填写信息并提交,成为网站会员。

页面基本结构

注册页面比登录页面复杂,因为它包含多个输入字段和验证逻辑。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">{dede:global.cfg_webname/} - 用户注册</title>
    <link href="{dede:global.cfg_cmsurl/}/templets/default/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
    <div class="memberArea">
        <!-- 注册表单开始 -->
        <form name="form1" method="post" action="{dede:memberurl registeraction='index.php'}">
            <input type="hidden" name="dopost" value="regnew" />
            <input type="hidden" name="step" value="1" />
            <div class="reg-form">
                <h2>用户注册</h2>
                <div class="item">
                    <label>用户名:</label>
                    <input type="text" name="userid" id="userid" size="30" class="intxt" />
                    <span>用户名唯一,不可更改</span>
                </div>
                <div class="item">
                    <label>密码:</label>
                    <input type="password" name="pwd" id="pwd" size="30" class="intxt" />
                </div>
                <div class="item">
                    <label>确认密码:</label>
                    <input type="password" name="pwdok" id="pwdok" size="30" class="intxt" />
                </div>
                <div class="item">
                    <label>电子邮箱:</label>
                    <input type="text" name="email" id="email" size="30" class="intxt" />
                </div>
                <!-- 可选:其他字段,如昵称、安全问题等 -->
                <!-- {dede:php} if($cfg_mb_spacesta > -1) { echo '<div class="item"><label>昵称:</label><input type="text" name="uname" id="uname" size="30" class="intxt" /></div>'; } {/dede:php} -->
                <!-- 验证码 -->
                {dede:php}
                if($safe_gdopen > 0){
                echo '<div class="item">
                    <label>验证码:</label>
                    <input type="text" name="vdcode" id="vdcode" size="10" class="intxt" />
                    <img src="'.$cfg_cmspath.'/include/vdimgck.php" id="validateimg" onclick="this.src=\''.$cfg_cmspath.'/include/vdimgck.php?'+Math.random()+\'" style="cursor:pointer" title="看不清?点击更换" />
                </div>';
                }
                {/dede:php}
                <div class="item">
                    <label>&nbsp;</label>
                    <button type="submit" class="btn-reg">立即注册</button>
                </div>
                <div class="other">
                    已有账号? <a href="{dede:memberurl login='index.php'}">立即登录</a>
                </div>
            </div>
        </form>
        <!-- 注册表单结束 -->
    </div>
</body>
</html>

核心标签说明

  • {dede:memberurl registeraction='index.php'}:

    注册表单的提交地址,固定写法。

  • <input type="hidden" name="dopost" value="regnew">:

    告诉后台这是一个“新用户注册”请求。

  • <input type="hidden" name="step" value="1">:

    • 注册步骤,step=1 通常表示第一步,即填写基本信息。
  • 核心注册字段:

    • userid: 用户名
    • pwd: 密码
    • pwdok: 确认密码
    • email: 电子邮箱
    • uname: 昵称(需要后台开启会员空间功能)
    • safequestion: 安全问题(后台可配置)
    • safeanswer: 安全答案(后台可配置)
  • {dede:php} if($cfg_mb_spacesta > -1) { ... } {/dede:php}:

    • 这是一个条件判断,$cfg_mb_spacesta 控制是否启用会员空间,如果启用,则显示昵称等字段。

如何自定义修改

修改这两个模板非常简单,就像修改普通的HTML文件一样,但需要注意以下几点:

  1. 保留核心标签和 name 属性

    • 表单的 action 地址、method="post" 以及所有输入框的 name 属性(如 userid, pwd绝对不能修改,否则登录/注册功能将无法工作。
    • 隐藏域 <input type="hidden" name="dopost" value="..."> 也必须保留。
  2. 修改样式

    • 你可以完全重写HTML结构,比如把表单从左边移到右边,或者改变布局。
    • 你可以修改或删除 <link href="...style.css"> 这一行,然后自己写 <style> 标签内的CSS样式,或者引入你自己的CSS文件。
  3. 增减字段

    • 增加字段:如果你想在注册时收集更多信息(如手机号、生日等),你需要做三件事:
      1. reg_new.htm 模板中添加对应的HTML输入框,并设置一个唯一的 name 属性(如 mobile, birthday)。
      2. 修改DedeCMS数据库的 dede_memberdede_member_tj(或其他相关)表,增加对应的字段。
      3. 修改后台处理注册的PHP文件(通常在 /member/reg_new.php),增加接收和处理新字段的代码。(这一步需要PHP编程知识,比较复杂)
    • 减少字段:如果你想隐藏某些默认字段(比如安全问题),只需在模板中删除对应的HTML代码块即可。
  4. 添加JS验证

    • 为了提升用户体验,你可以在页面底部添加 <script> 标签,编写JavaScript代码来检查用户是否填写了必填项、两次密码是否一致等,在提交表单前进行预验证。
  • 位置/templets/default/login.htm/templets/default/reg_new.htm,但务必复制到自定义目录下修改。
  • 核心:表单的 actionmethod 和各个输入框的 name 属性是功能实现的关键,不可随意改动。
  • 自由:HTML结构、CSS样式、文字内容可以完全自定义,以符合你的网站设计风格。
  • 扩展:增减功能字段需要同时修改模板、数据库和后台PHP文件,难度较大。

希望这份详细的指南能帮助你成功修改DedeCMS的注册登录模板!