织梦会员模板如何调用

99ANYc3cd6
预计阅读时长 28 分钟
位置: 首页 织梦建站 正文

织梦会员模板的调用核心在于使用 全局 {dede:} 和 全局变量 $GLOBALS,与前台内容页模板的标签略有不同,会员模板的调用更侧重于会员自身的数据、会员中心的相关信息以及与会员交互的功能。

下面我将从基础到进阶,分模块详细介绍各种调用方法。


基础准备:理解会员模板的执行环境

在开始调用之前,你需要明白:

  1. 执行环境:会员模板是在用户登录后,在 /member/ 目录下执行的,织梦系统已经知道当前是哪个会员在访问。
  2. 核心变量:当前登录会员的所有信息都存储在全局变量 $GLOBALS['cfg_member'] 中,你可以通过 print_r($GLOBALS['cfg_member']); 来查看这个数组里具体有哪些数据,这对于调试非常有帮助。
  3. 核心标签:会员模板主要使用 {dede:} 全局标签,而不是像 {dede:arclist} 这样的列表标签,很多标签需要配合 function='xxx' 来使用特定的会员功能函数。

常用调用详解

调用当前登录会员的基本信息

这是最常用、最基础的功能,用于在会员中心首页或任何页面显示欢迎信息和会员资料。

示例:在会员中心首页显示会员昵称、头像和等级

<div class="member-info">
    <img src="{dede:field.userid function='GetMemberAvatar(@me)'/}" alt="会员头像" class="avatar">
    <h3>欢迎您,<strong>{dede:field.username/}</strong>!</h3>
    <p>您的会员等级是:<span>{dede:field.mtype function='GetMemberType(@me)'/}</span></p>
    <p>注册时间:{dede:field.regdate function='MyDate(Y-m-d, @me)'/}</p>
</div>

标签解析:

  • {dede:field.userid function='GetMemberAvatar(@me)'/}:
    • field.userid: 获取当前会员的用户ID。
    • function='GetMemberAvatar(@me)': 调用 GetMemberAvatar 函数,并将用户ID @me 作为参数传入,函数会返回该会员的头像路径,如果会员没有上传头像,通常会返回默认头像。
  • {dede:field.username/}: 直接获取当前会员的用户名。
  • {dede:field.mtype function='GetMemberType(@me)'/}:
    • field.mtype: 获取会员类型ID(如:个人、企业等)。
    • function='GetMemberType(@me)': 调用 GetMemberType 函数,将类型ID传入,返回可读的会员类型名称(如:个人会员、企业会员)。
  • {dede:field.regdate function='MyDate(Y-m-d, @me)'/}:
    • field.regdate: 获取注册时间(时间戳格式)。
    • function='MyDate(Y-m-d, @me)': 调用织梦的日期格式化函数 MyDate,将时间戳 @me 格式化为 年-月-日

其他常用会员信息字段:

  • {dede:field.sex/}: 性别
  • {dede:field.email/}: 邮箱
  • {dede:field.scores/}: 积分
  • {dede:field.money/}: 金额
  • {dede:field.face/}: 头像路径(与 GetMemberAvatar 不同,这个是直接存储路径的,可能需要处理)

调用会员发布的文档/信息

在会员中心,会员需要查看自己发布过的文章、商品等信息。

示例:在会员中心调用会员自己发布的文档列表

<table border="1" cellpadding="5" cellspacing="0">
    <thead>
        <tr>
            <th>标题</th>
            <th>状态</th>
            <th>发布时间</th>
            <th>操作</th>
        </tr>
    </thead>
    <tbody>
        {dede:arclist row='10' titlelen='50' orderby='pubdate'}
        <tr>
            <td><a href="[field:arcurl/]" target="_blank">[field:title/]</a></td>
            <td>[field:arctypeid function="GetMemberArticleStatus(@me)"/]</td>
            <td>[field:pubdate function="MyDate(Y-m-d H:i, @me)"/]</td>
            <td>
                <a href="/member/edit.php?aid=[field:id/]">编辑</a> |
                <a href="/member/article_do.php?aid=[field:id]&dopost=del">删除</a>
            </td>
        </tr>
        {/dede:arclist}
    </tbody>
</table>

标签解析:

  • {dede:arclist} 标签在会员模板中同样有效,但会自动加上 mid = '$GLOBALS['cfg_member']['id']' 的条件,即默认只显示当前会员发布的内容。
  • row='10': 显示10条记录,len='50'`: 标题长度限制为50个字符。
  • orderby='pubdate': 按发布时间倒序排列。
  • [field:arcurl/]: 文档的链接地址。
  • [field:title/]: 文档标题。
  • [field:arctypeid function="GetMemberArticleStatus(@me)"/]:
    • 这是一个自定义函数示例,用于显示文档状态(如:已审核、未审核、已退稿等),你需要自己在 include/extend.func.php 文件中编写 GetMemberArticleStatus 函数来实现这个功能。
  • /member/edit.php?aid=[field:id/]: 编辑文档的链接。
  • /member/article_do.php?aid=[field:id]&dopost=del: 删除文档的链接。

调用会员订单列表

对于电商或有支付功能的网站,订单列表是会员中心的核心功能。

示例:调用会员的订单列表

<h3>我的订单</h3>
<ul>
    {dede:myarchivetitle orderway='desc' row='5'}
    <li>
        订单号:<strong>[field:tid/]</strong> - 
        金额:<strong>¥[field:price/]</strong> - 
        状态:[field:state function="GetOrderState(@me)"/] - 
        下单时间:[field:senddate function="MyDate(Y-m-d H:i, @me)"/]
    </li>
    {/dede:myarchivetitle}
</ul>

标签解析:

  • {dede:myarchivetitle}: 这是专门用于调用会员自定义列表(如订单、留言等)的标签。
  • orderway='desc': 按降序排列(最新的在前)。
  • row='5': 显示5条记录。
  • [field:tid/]: 订单号。
  • [field:price/]: 订单金额。
  • [field:state function="GetOrderState(@me)"/]: 同样,需要你自定义一个 GetOrderState 函数来将订单状态码(如:1, 2, 3)转换为“待付款”、“已发货”、“已完成”等文字。
  • [field:senddate/]: 下单时间。

调用会员留言/评论列表

展示会员自己发布的留言或评论。

示例:调用会员的留言列表

<h3>我的留言</h3>
{dede:feedback row='10' titlelen='30'}
    <div class="feedback-item">
        <p><strong>[field:username/]</strong> 于 [field:msgtime function="MyDate(Y-m-d H:i, @me)"] 留言:</p>
        <p>[field:msg/]</p>
        <p>管理员回复:[field:ischeck == '1' ? '<span class="reply">[field:reply/]</span>' : '<span style="color:red;">待审核</span>']</p>
    </div>
{/dede:feedback}

标签解析:

  • {dede:feedback}: 调用反馈(留言/评论)列表。
  • row='10': 显示10条,len='30'`: 标题长度(如果留言有标题的话)。
  • [field:msgtime/]: 留言时间。
  • [field:msg/]: 留言内容。
  • [field:reply/]: 管理员回复内容。
  • [field:ischeck == '1' ? ... : ...]: 这是一个三元运算符,用于判断留言是否被审核。ischeck == 1 表示已审核,显示回复内容;否则显示“待审核”。

调用会员收藏/下载记录

示例:调用会员收藏的文章列表

<h3>我的收藏</h3>
{dede:archives row='10' titlelen='50'}
    <p><a href="[field:arcurl/]" target="_blank">[field:title/]</a> - 收藏于 [field:senddate function="MyDate(Y-m-d, @me)"]</p>
{/dede:archives}

标签解析:

  • {dede:archives}: 调用会员相关的文档列表,包括收藏、下载等。
  • 它会自动根据当前会员ID筛选出被收藏的文档。

进阶技巧与注意事项

自定义函数的使用

在上面的例子中多次提到了自定义函数(如 GetMemberAvatar, GetOrderState),这是织梦模板强大的扩展能力。

如何添加自定义函数?

  1. 打开你的织梦网站根目录下的 include/extend.func.php 文件。
  2. 在文件末尾添加你的PHP函数。
  3. 确保这个文件存在并且可写。

示例:编写一个 GetOrderState 函数

// 在 include/extend.func.php 中添加以下代码
if (!function_exists('GetOrderState')) {
    function GetOrderState($state)
    {
        $stateArray = array(
            '1' => '待付款',
            '2' => '待发货',
            '3' => '已发货',
            '4' => '已完成',
            '5' => '已取消'
        );
        return isset($stateArray[$state]) ? $stateArray[$state] : '未知状态';
    }
}

添加后,你就可以在模板中使用 {dede:field:state function="GetOrderState(@me)"/} 了。

条件判断 {dede:if}

在会员模板中,经常需要根据会员的状态进行判断。

示例:根据会员积分显示不同等级的图标

{dede:if field scores > 1000}
    <img src="/images/vip_gold.png" alt="黄金会员">
{else if field scores > 500}
    <img src="/images/vip_silver.png" alt="白银会员">
{else}
    <img src="/images/vip_copper.png" alt="青铜会员">
{/dede:if}

循环输出 {dede:loop}

{dede:loop} 用于循环一个固定的数组,在会员模板中不常用,但如果你需要从某个特定的数据源(如配置项)读取数据并循环展示,它会很有用。

调用系统配置项

有时需要调用网站的全局配置,如网站名称、网站版权信息等。

网站名称:{dede:global.cfg_webname/}
网站版权:{dede:global.cfg_powerby/}

安全性考虑

  • XSS过滤:织梦默认会对输出内容进行一定的过滤,但对于用户提交的内容(如留言、评论),最好在模板输出时也加上过滤。
    • [field:msg function='htmlspecialchars(@me)'/]:将HTML特殊字符转义,防止XSS攻击。
  • 权限验证:确保会员只能操作自己的数据,织梦的底层PHP文件(如 /member/ 目录下的文件)已经做了大部分权限验证,但在模板层面也要注意,不要暴露敏感操作链接。

调试技巧

如果你不确定某个标签或变量怎么用,最直接的方法就是打印输出

  1. 打印会员信息: 在模板的任意位置添加以下代码,然后刷新页面查看源码,就能看到当前会员的所有信息。

    <pre>
    <?php
    print_r($GLOBALS['cfg_member']);
    ?>
    </pre>
  2. 打印单个字段: 如果你不确定 field.sex 的值是什么,可以直接输出它。

    您的性别是:{dede:field.sex/}

    如果看不到,可能是为空。

调用织梦会员模板的关键在于:

  1. 记住核心变量$GLOBALS['cfg_member'] 存储了所有会员信息。
  2. 善用 {dede:field}:通过 function 属性调用系统或自定义函数来处理数据。
  3. 掌握常用列表标签{dede:arclist}, {dede:myarchivetitle}, {dede:feedback} 等,它们会自动过滤当前会员的数据。
  4. 学会扩展:通过 extend.func.php 编写自定义函数,实现模板逻辑的复杂化。
  5. 勤于调试:使用 print_r() 是排查问题的最有效方法。

希望这份详细的指南能帮助你熟练掌握织梦会员模板的调用!

-- 展开阅读全文 --
头像
dede 自定义文件名
« 上一篇 今天
如何批量修改织梦浏览次数?
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码