织梦cms调出用户列表

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

使用织梦标签直接调用(最简单)

这种方法适用于只需要在模板页面上显示一个简单的用户名列表。

调用所有注册用户

在需要显示用户列表的模板文件(如 index.htm, list.htm 等)中,加入以下代码:

{dede:memberlist}
    <li>
        <a href="[field:spaceurl/]" target="_blank">[field:uname/]</a>
    </li>
{/dede:memberlist}

标签解析:

  • {dede:memberlist}:这是调用会员列表的开始标签。
  • [field:spaceurl/]:该用户的个人主页空间链接。
  • [field:uname/]:该用户的用户名。
  • {/dede:memberlist}:调用结束标签。

带有排序和数量限制的调用

如果你需要对用户列表进行排序(如按注册时间倒序)或者只显示一部分用户,可以使用 sortrow 属性。

{dede:memberlist sort='regdate' row='10' titlelen='30'}
    <li>
        <a href="[field:spaceurl/]" target="_blank">[field:uname/]</a>
        (注册时间:[field:regdate function="MyDate('Y-m-d',@me)"/])
    </li>
{/dede:memberlist}

标签属性解析:

  • sort='regdate':按注册时间排序,可选值有:
    • logintime:按最后登录时间排序
    • scores:按积分排序
    • money:按金钱排序
  • row='10':只调用10条用户记录,len='30'`:截取用户名显示长度为30个字符(防止用户名过长影响布局)。
  • [field:regdate function="MyDate('Y-m-d',@me)"/]:对注册时间字段进行格式化,只显示年-月-日。

自定义SQL查询(最灵活)

当你需要调用更复杂的信息,或者需要根据特定条件(如用户组、性别等)筛选用户时,使用自定义SQL是最佳选择。

基础自定义SQL调用

在模板文件中使用 {dede:sql}

示例:调用10个最新的注册用户,并显示用户名、头像和邮箱。

{dede:sql sql="SELECT m.mid, m.uname, m.email, m.face, m.sex FROM dede_member m ORDER BY m.regdate DESC LIMIT 0, 10"}
    <li>
        <!-- 如果用户没有上传头像,则使用默认头像 -->
        <img src="[field:face runphp='yes']@me = empty(@me) ? '/member/images/noavatar_middle.gif' : @me;[/field:face]" alt="[field:uname/]" />
        <a href="[field:spaceurl/]" target="_blank">[field:uname/]</a>
        <span>邮箱:[field:email/]</span>
    </li>
{/dede:sql}

代码解析:

  • sql="SELECT ... FROM ...":这里写你的标准SQL查询语句。
    • dede_member 是存储用户基本信息的核心表。
    • dede_member_space 存储用户的扩展信息,如个人简介、空间模板等。
    • dede_arctinydede_archives 存储用户发表的文章。
  • ORDER BY m.regdate DESC LIMIT 0, 10:按注册时间倒序排列,并限制只返回前10条记录。
  • [field:face runphp='yes']...[/field:face]:这是一个非常实用的技巧。
    • runphp='yes' 表示对 field:face 的值执行PHP代码。
    • @me 代表当前字段的原始值(即头像路径)。
    • 代码逻辑是:@me 为空(empty(@me)),则给它赋一个默认头像的路径,否则就使用它自己的路径。
  • [field:spaceurl/]:这个标签在自定义SQL中同样有效,织梦会自动根据 mid 生成用户空间的URL。

更复杂的需求:调用用户及其发布的文章数量

这是一个非常经典的需求,显示用户列表的同时,显示每个用户发表了多少篇文章。

这需要关联 dede_memberdede_archives 两个表。

{dede:sql sql="
    SELECT
        m.mid,
        m.uname,
        m.face,
        COUNT(a.id) as article_count
    FROM
        dede_member m
    LEFT JOIN
        dede_archives a ON m.mid = a.mid
    GROUP BY
        m.mid
    ORDER BY
        article_count DESC
    LIMIT 0, 15
"}
    <li>
        <img src="[field:face runphp='yes']@me = empty(@me) ? '/member/images/noavatar_middle.gif' : @me;[/field:face]" alt="[field:uname/]" />
        <a href="[field:spaceurl/]" target="_blank">[field:uname/]</a>
        <span>文章数:[field:article_count/]</span>
    </li>
{/dede:sql}

代码解析:

  • LEFT JOIN ... ON m.mid = a.mid:将会员表和文章表通过用户ID(mid)关联起来,使用 LEFT JOIN 可以确保即使某个用户一篇文章都没发表,也会被列出。
  • COUNT(a.id) as article_count:统计每个用户的文章数量,并将结果命名为 article_count
  • GROUP BY m.mid:按用户ID分组,这是 COUNT 聚合函数能够正确统计的前提。
  • ORDER BY article_count DESC:按文章数量从高到低排序。
  • [field:article_count/]:调用我们自定义的 article_count 字段。

创建一个专门的用户列表页面(推荐)

如果你希望有一个独立的、功能完善的“用户中心”或“会员风采”页面,最佳实践是创建一个新页面。

  1. 创建模板文件 在你的模板目录(如 /templets/default/)下新建一个文件,member_list.htm

  2. 编写模板代码member_list.htm 中,使用上面提到的任意一种方法来调用用户列表,这里我们使用方法二(自定义SQL)的复杂示例。

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>网站会员列表 - {dede:global.cfg_webname/}</title>
        <link rel="stylesheet" href="/templets/default/style.css" type="text/css" />
    </head>
    <body>
        {dede:include filename="head.htm"/}
        <div class="main">
            <div class="path">
                <a href="{dede:global.cfg_cmsurl/}/">首页</a> > <span>会员列表</span>
            </div>
            <h2 class="title">网站会员排行榜 (按发文量)</h2>
            <ul class="member-list">
                {dede:sql sql="
                    SELECT
                        m.mid,
                        m.uname,
                        m.face,
                        COUNT(a.id) as article_count
                    FROM
                        dede_member m
                    LEFT JOIN
                        dede_archives a ON m.mid = a.mid
                    GROUP BY
                        m.mid
                    ORDER BY
                        article_count DESC
                    LIMIT 0, 50
                "}
                    <li>
                        <a href="[field:spaceurl/]" target="_blank">
                            <img src="[field:face runphp='yes']@me = empty(@me) ? '/member/images/noavatar_middle.gif' : @me;[/field:face]" alt="[field:uname/]" />
                        </a>
                        <div class="member-info">
                            <a href="[field:spaceurl/]" target="_blank" class="member-name">[field:uname/]</a>
                            <p>已发布 <strong>[field:article_count/]</strong> 篇文章</p>
                        </div>
                    </li>
                {/dede:sql}
            </ul>
        </div>
        {dede:include filename="footer.htm"/}
    </body>
    </html>
  3. 创建栏目并关联模板

    • 登录织梦后台 -> 【核心】 -> 【频道管理】 -> 【添加顶级栏目】。
    • 栏目名称:填写“会员列表”或你想要的名称。
    • :选择“使用自定义”。
    • 自定义文件名:填写你刚刚创建的模板文件名,如 member_list.htm
    • 列表命名规则:可以留空或填写,如 member/list-{page}.htm
    • 勾选“生成HTML”。
    • 点击“确定”保存。
  4. 生成页面并访问 保存栏目后,去【生成】 -> 【一键生成】 -> 【更新栏目HTML】或【更新页面HTML】,生成这个新页面。 然后你就可以通过你设置的栏目链接(如 http://你的域名/member_list.htm)来访问这个漂亮的用户列表页面了。

总结与建议

需求场景 推荐方法 优点 缺点
简单显示几个用户名 {dede:memberlist} 代码简单,无需SQL知识 灵活性差,可调用的字段有限
需要复杂筛选或显示特定字段 {dede:sql} 灵活性极高,可定制任何查询和显示 需要一定的SQL基础
需要一个独立的、功能完善的列表页 创建新页面 结构清晰,易于维护,SEO友好 步骤稍多,需要创建模板和栏目

对于大多数网站,方法三是最佳选择,因为它最规范,也最容易扩展,如果只是想在首页某个角落加个“最新会员”之类的,方法一就足够了,如果需要非常个性化的展示,方法二是你的利器。

-- 展开阅读全文 --
头像
织梦CMS集成环境怎么搭建?
« 上一篇 今天
仿dede58织梦源码下载
下一篇 » 今天

相关文章

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