使用织梦标签直接调用(最简单)
这种方法适用于只需要在模板页面上显示一个简单的用户名列表。
调用所有注册用户
在需要显示用户列表的模板文件(如 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}:调用结束标签。
带有排序和数量限制的调用
如果你需要对用户列表进行排序(如按注册时间倒序)或者只显示一部分用户,可以使用 sort 和 row 属性。
{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调用
在模板文件中使用 示例:调用10个最新的注册用户,并显示用户名、头像和邮箱。 代码解析: 这是一个非常经典的需求,显示用户列表的同时,显示每个用户发表了多少篇文章。 这需要关联 代码解析: 如果你希望有一个独立的、功能完善的“用户中心”或“会员风采”页面,最佳实践是创建一个新页面。 创建模板文件
在你的模板目录(如 编写模板代码
在 创建栏目并关联模板 生成页面并访问
保存栏目后,去【生成】 -> 【一键生成】 -> 【更新栏目HTML】或【更新页面HTML】,生成这个新页面。
然后你就可以通过你设置的栏目链接(如 对于大多数网站,方法三是最佳选择,因为它最规范,也最容易扩展,如果只是想在首页某个角落加个“最新会员”之类的,方法一就足够了,如果需要非常个性化的展示,方法二是你的利器。{dede:sql}
{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_arctiny 或 dede_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_member 和 dede_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 字段。
创建一个专门的用户列表页面(推荐)
/templets/default/)下新建一个文件,member_list.htm。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>
member_list.htm。member/list-{page}.htm。http://你的域名/member_list.htm)来访问这个漂亮的用户列表页面了。总结与建议
需求场景
推荐方法
优点
缺点
简单显示几个用户名
{dede:memberlist}代码简单,无需SQL知识
灵活性差,可调用的字段有限
需要复杂筛选或显示特定字段
{dede:sql}灵活性极高,可定制任何查询和显示
需要一定的SQL基础
需要一个独立的、功能完善的列表页
创建新页面
结构清晰,易于维护,SEO友好
步骤稍多,需要创建模板和栏目
