核心思路
无论使用哪种方法,核心思路都是一致的:

- 确定调用对象:我们只需要调用当前登录会员发布的文章。
- 获取会员ID:织梦有一个全局变量
$_SESSION['mid'],它存储了当前登录会员的唯一ID,这是我们筛选文章的关键。 - 使用Dede标签:利用织梦的
{dede:arclist}或{dede:list}标签,并通过它们的属性来筛选出属于当前会员的文章。
使用 {dede:arclist} 标签(推荐,最灵活)
{dede:arclist} 是织梦最强大的列表调用标签,适合在会员中心首页、侧边栏等需要展示少量文章摘要的地方使用。
基础调用代码
将以下代码直接放在您会员中心模板文件(通常是 /member/templets/article_article.htm 或您自定义的模板文件)的相应位置即可。
{dede:arclist row='10' titlelen='30' orderby='pubdate'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span class="time">[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
</li>
{/dede:arclist}
关键:如何只显示当前会员的文章?
上面的代码会显示所有会员的最新文章,要只显示当前登录会员的文章,我们需要添加 channelid 和 memberid 属性。
channelid:

channelid='1'调用文章模型(默认)。channelid='2'调用图集模型。- ...以此类推,对于文章,通常写
1或者直接不写(因为默认就是1)。
memberid:
- 这是核心,我们需要将
memberid的值设置为当前登录会员的ID,即$_SESSION['mid']。
完整且正确的代码示例
<h3>我的最新文章</h3>
<ul>
{dede:arclist
row='10' len='30'
orderby='pubdate'
channelid='1'
memberid='%@me%'
}
<li>
<a href="[field:arcurl/]" target="_blank">[field:title/]</a>
<span class="time">发布于:[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
</li>
{/dede:arclist}
</ul>
代码解释:
row='10':显示10条记录,len='30'`:标题长度截取30个字符。orderby='pubdate':按发布时间倒序排列。channelid='1':指定调用文章模型。memberid='%@me%':这是最关键的一步!%@me%是织梦模板语法中的一个特殊用法,它会自动将其替换为当前标签所在环境下的PHP变量值,它会被替换为$_SESSION['mid'],从而实现了只调用当前会员文章的功能。
高级用法:按栏目调用
如果会员的文章分了很多栏目,你可能想在会员中心分栏目展示,只需添加 typeid 属性即可。
<h3>我在“技术分享”栏目的文章</h3>
<ul>
{dede:arclist
row='10' len='30'
orderby='pubdate'
channelid='1'
memberid='%@me%'
typeid='5' <!-- 假设栏目ID为5 -->
}
<li>
<a href="[field:arcurl/]" target="_blank">[field:title/]</a>
</li>
{/dede:arclist}
</ul>
使用 {dede:list} 标签(适合分页列表)
{dede:list} 通常用于需要分页的列表页面,我的所有文章”列表,它和 {dede:arclist} 的主要区别在于,{dede:list} 是在服务器端分页,而 {dede:arclist} 是通过JS实现客户端分页(除非你用了 phpurl 等方式)。
模板文件修改
找到会员中心的文章列表页面模板,默认路径是 /member/templets/article_list.htm。
在模板中,找到 {dede:list} 标签,并为其添加属性。
{dede:list pagesize='15' channelid='1' memberid='%@me%'}
<li>
<span class="t">[field:title/]</span>
<span class="d">[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
<span class="i"><a href="javascript:DelArc([id],0)">删除</a> | <a href="javascript:EditArc([id])">编辑</a></span>
</li>
{/dede:list}
代码解释:
pagesize='15':设置每页显示15条文章。channelid='1'和memberid='%@me%':与方法一中的作用完全相同,用于筛选当前会员的文章。[id]:这是文章的ID,用于删除和编辑等操作。
分页标签:
在 {dede:list} 标签之后,别忘了加上织梦的分页标签:
<div class="dede_pages">
<ul class="pagelist">
{dede:pagelist listsize='4' listitem='info,index,pre,next,end,pageno'}
</ul>
</div>
使用SQL直接查询(最灵活,适合复杂需求)
如果你的需求非常复杂,比如需要调用文章的某个自定义字段,或者需要多表联查,那么直接写SQL语句是最好的选择。
模板文件修改
在需要调用列表的地方,使用 代码解释: 如何获取文章URL? 直接从 修正后的SQL调用示例: 重要注意事项: 对于99%的场景,方法一 和 方法二 已经足够强大和方便,希望这份详细的指南能帮助到你!{dede:sql}
<h3>我的待审核文章</h3>
<ul>
{dede:sql sql="SELECT * FROM `dede_archives` WHERE `arcrank` = -1 AND `mid` = '~@me~' ORDER BY `pubdate` DESC LIMIT 0, 10"}
<li>
<a href="[field:arcurl/]" target="_blank">[field:title/]</a>
<span>状态:待审核</span>
</li>
{/dede:sql}
</ul>
sql="...":在这里写你的SQL查询语句。dede_archives:织梦存放文章基本信息的核心表。arcrank = -1:这是一个非常有用的字段。arcrank 的值代表文章状态:
0:已审核,正常显示。-1:待审核。-2:回收站。>0:自定义审核级别(需要配合审核流程)。mid = '~@me~':与方法一中的 memberid='%@me%' 类似,~@me~ 也会被替换为 $_SESSION['mid']。LIMIT 0, 10:从第0条开始,取10条数据。dede_archives 表里是拿不到文章URL的,你需要使用织梦的函数来生成,在 {dede:sql} 中,可以使用 [field:id function='GetOneArcUrl(@me)'/] 来获取文章链接。{dede:sql sql="SELECT * FROM `dede_archives` WHERE `mid` = '~@me~' ORDER BY `pubdate` DESC LIMIT 0, 10"}
<li>
<a href="[field:id function='GetOneArcUrl(@me)'/]" target="_blank">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
</li>
{/dede:sql}
总结与注意事项
方法
适用场景
优点
缺点
方法一
{dede:arclist}会员首页、侧边栏、调用少量文章
灵活,支持多种参数,性能较好
默认分页为JS分页,不适合大数据量列表
方法二
{dede:list}需要分页的“我的文章”列表
服务器端分页,对SEO友好
灵活性不如
arclist
方法三
{dede:sql}复杂查询、调用自定义字段
灵活性最高,可完全控制SQL
需要一定的SQL基础,有一定安全风险(注意防注入)
{if $_SESSION['mid']}...{/if} 进行判断。{if $_SESSION['mid']}
<!-- 这里放上你的调用代码 -->
{else}
<p>请先登录!</p>
{/if}
{dede:sql} 时,如果变量来自用户输入,务必做好过滤和防SQL注入处理,避免网站被攻击。
