dede如何调用消费金币?

99ANYc3cd6
预计阅读时长 15 分钟
位置: 首页 DEDE建站 正文

使用 {dede:member} 标签来获取会员信息,并通过 totalmoney 这个字段来获取会员的总消费金额(在 DedeCMS 中,金币和金钱通常用同一个字段 totalmoney 表示)。

dede调用消费金币
(图片来源网络,侵删)

下面我将为你详细讲解几种常见的调用场景和方法。


在会员个人中心页面显示当前会员的消费金币

这是最常见的需求,在会员的资料页面或主页上,显示他/她自己消费的金币总额。

找到模板文件

会员个人中心的模板文件通常位于 /templets/member/ 目录下,与消费金币相关的页面可能是:

dede调用消费金币
(图片来源网络,侵删)
  • space.htmindex.php (会员主页)
  • profile.php (基本资料页面)
  • 其他你可能自定义的页面。

使用标签调用

在需要显示消费金币的位置,直接使用以下标签代码:

{dede:memberinfos}
    <p>我的消费金币:<strong>[field:totalmoney/]</strong> 枚</p>
{/dede:memberinfos}

代码解析:

  • {dede:memberinfos}:这是一个专门用于获取当前登录会员信息的标签,它不需要任何参数,会自动获取当前会话中会员的数据。
  • [field:totalmoney/]:这是标签内的字段调用。totalmoney 是 DedeCMS 会员数据表 (dede_member) 中存储会员总消费金额(或总金币)的字段。
  • :这是单位,你可以根据需要修改,个”、“元”等。

完整示例 (在会员主页 space.htm 中):

dede调用消费金币
(图片来源网络,侵删)

假设你希望在会员主页显示昵称和消费金币,可以找到相关位置,修改为:

<div class="user-info">
    <h2>欢迎,[field:uname/]</h2>
    <p>注册时间:[field:jointime function="MyDate('Y-m-d H:i:s',@me)"/]</p>
    <p>消费金币:<strong>[field:totalmoney/]</strong> 枚</p>
    <p>当前金币:<strong>[field:money/]</strong> 枚</p>
</div>

注意:

  • [field:money/] 是会员当前账户余额的金币数。
  • [field:totalmoney/] 是会员自注册以来所有消费记录的总和,这两个值是不同的。

在任意页面(如文章页、列表页)调用指定会员的消费金币

如果你想在一个非会员中心的页面(比如某篇文章的作者信息栏)显示该作者(会员)的消费金币,你需要先知道该会员的 ID (mid)。

方法:在文章内容页调用当前文章作者的消费金币 页模板 (article_article.htm) 中,可以使用 {dede:field} 标签获取文章作者的 ID,然后将其传递给 {dede:memberinfos}

{dede:memberinfos mid='[field:mid/]'}
    <p>作者:[field:uname/]</p>
    <p>作者消费金币:<strong>[field:totalmoney/]</strong> 枚</p>
{/dede:memberinfos}

代码解析:

  • mid='[field:mid/]':这是关键。[field:mid/] 会获取当前文章的作者会员 ID,然后将其作为 mid 参数传递给 {dede:memberinfos} 标签,从而精确获取到该作者的信息。
  • 其余部分与场景一相同。

方法:在列表页或自定义页面调用指定会员的消费金币

如果你知道一个固定的会员 ID(ID 为 10 的会员),可以直接写死:

{dede:memberinfos mid='10'}
    <p>会员ID为10的消费金币:<strong>[field:totalmoney/]</strong> 枚</p>
{/dede:memberinfos}

如果你是在循环中(比如调用某个会员列表),可以这样用:

{dede:arclist typeid='1' row='5'}
    {dede:memberinfos mid='[field:mid/]'}
        <p>文章《[field:title/]》的作者消费了 [field:totalmoney/] 枚金币。</p>
    {/dede:memberinfos}
{/dede:arclist}

调用全站消费金币总额排行榜

如果你想做一个“土豪榜”或“消费排行榜”,显示消费金币最多的前 N 名会员。

这需要用到 {dede:sql} 标签直接执行 SQL 查询。

编写 SQL 语句

我们需要从 dede_member 表中按 totalmoney 字段降序排列,并限制条数。

SELECT m.mid, m.uname, m.totalmoney, m.face
FROM dede_member m
ORDER BY m.totalmoney DESC
LIMIT 0, 10
  • SELECT m.mid, m.uname, m.totalmoney, m.face:选择我们需要的字段(会员ID, 用户名, 总消费, 头像)。
  • FROM dede_member m:从会员表查询,并给它一个别名 m
  • ORDER BY m.totalmoney DESC:按总消费金额降序排列(从高到低)。
  • LIMIT 0, 10:从第 0 条开始,取 10 条数据(即前 10 名)。

在模板中使用 {dede:sql}

将上述 SQL 语句放入模板标签中,并循环输出。

<h3>消费金币排行榜 TOP 10</h3>
<ol>
{dede:sql sql='SELECT m.mid, m.uname, m.totalmoney, m.face FROM dede_member m ORDER BY m.totalmoney DESC LIMIT 0, 10'}
    <li>
        <img src="[field:face function="ifempty('@me', '/member/images/defaultpic.gif')"/]" alt="[field:uname/]" />
        <span class="rank-name">[field:uname/]</span>
        <span class="rank-coin">[field:totalmoney/] 枚</span>
    </li>
{/dede:sql}
</ol>

代码解析:

  • {dede:sql sql='...'}:执行自定义的 SQL 查询。
  • [field:face/]:会员头像,这里我用了一个 function="ifempty(...)" 来处理没有头像的情况,显示默认头像。
  • [field:uname/]:会员用户名。
  • [field:totalmoney/]:该会员的消费金币总额。
  • <ol><li> 用于构建有序的列表样式。

总结与注意事项

场景 核心标签 关键点
当前会员自身消费 {dede:memberinfos} 无需参数,直接调用 [field:totalmoney/]
指定会员消费 {dede:memberinfos mid='...'} 通过 mid 参数指定会员ID,mid 可来自 [field:mid/]
消费排行榜 {dede:sql} 编写 SQL 查询,按 totalmoney DESC 排序,LIMIT 限制数量

重要注意事项:

  1. 字段名:确认你的 DedeCMS 版本中,存储消费总额的字段确实是 totalmoney,绝大多数版本都是,但以防万一,可以去 dede_member 表里看一下。
  2. 缓存问题:如果修改了模板后没有立即生效,可以尝试在后台“生成”一下对应页面,或者清空一下系统缓存。
  3. 权限:确保调用这些标签的页面对游客是可见的,或者会员已登录,否则可能无法正确获取信息。
  4. 安全:在使用 {dede:sql} 标签时,确保你的 SQL 语句是安全的,不要直接将用户输入拼接到 SQL 中,以防 SQL 注入,上面的例子中,mid 是由系统自身提供的,相对安全。

希望这份详细的指南能帮助你成功在 DedeCMS 中调用消费金币信息!

-- 展开阅读全文 --
头像
五子棋c语言代码 人机
« 上一篇 04-30
如何彻底删除dede畅言代码?
下一篇 » 04-30

相关文章

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