在织梦(DedeCMS)系统中,调用全部文章是网站内容展示的基础操作,通常通过标签(tag)实现,织梦提供了灵活的标签系统,支持多种参数配置,以满足不同场景下的文章调用需求,以下是详细的方法和注意事项,帮助开发者高效实现全部文章的调用。

基础调用方法
织梦中最常用的调用全部文章的标签是{dede:arclist},该标签可以获取指定栏目下的所有文章,支持按发布时间、点击量、ID等排序,基础语法如下:
{dede:arclist}
<a href="[field:arcurl/]">[field:title/]</a>
{/dede:arclist}
[field:arcurl/]:文章链接[field:title/]
默认情况下,{dede:arclist}会调用当前栏目的所有文章,若需调用全站文章,需添加typeid='0'参数:
{dede:arclist typeid='0'}
<a href="[field:arcurl/]">[field:title/]</a>
{/dede:arclist}
常用参数配置
通过调整参数,可以精确控制文章调用的数量、排序方式及显示字段,以下是关键参数说明:
| 参数名 | 作用 | 示例 |
|---|---|---|
typeid |
指定栏目ID,0表示全站 |
typeid='0' |
row |
调用文章数量 | row='10' |
orderby |
排序方式(如pubdate、click、id) |
orderby='pubdate' |
orderway |
排序方向(desc降序、asc升序) |
orderway='desc' |
limit |
分页限制(如0,10表示从第1条取10条) |
limit='0,20' |
调用全站最新发布的10篇文章,标题显示30字符:

{dede:arclist typeid='0' row='10' orderby='pubdate' orderway='desc' titlelen='30'}
<a href="[field:arcurl/]" title="[field:title/]">[field:title function='cn_substr(@me,30)'/]</a>
<span>[field:pubdate function='MyDate('Y-m-d',@me)'/]</span>
{/dede:arclist}
高级技巧
-
调用指定时间段的文章
通过subday参数限制调用最近N天发布的文章:{dede:arclist typeid='0' subday='7'} <!-- 最近7天 --> -
排除特定栏目
使用typeid参数传入多个栏目ID时,用分隔;若需排除某个栏目,可通过notypeid实现(需自定义函数)。 -
调用自定义字段
若文章有自定义字段(如author、price),需在标签中明确声明:{dede:arclist addfields='author,price'} [field:author/] - [field:price/] {/dede:arclist} -
分页调用
全站文章分页需结合{dede:list}标签,并设置pagesize参数:{dede:list pagesize='20'} <a href="[field:arcurl/]">[field:title/]</a> {/dede:list} {dede:pagelist listitem='index,pre,next,end,option'/}
注意事项
- 性能优化:全站文章调用可能影响加载速度,建议对大流量网站使用缓存或限制调用数量。
- 栏目权限:若调用全站文章,需确保用户有足够权限,避免因权限问题导致文章无法显示。
- 标签嵌套:避免在
{dede:arclist}内嵌套复杂循环标签,可能导致解析错误。
相关问答FAQs
Q1:如何调用全站文章并按点击量排序?
A:在{dede:arclist}中设置orderby='click'和orderway='desc',
{dede:arclist typeid='0' orderby='click' orderway='desc' row='20'}
<a href="[field:arcurl/]">[field:title/]</a>
{/dede:arclist}
Q2:调用全站文章时如何排除指定栏目?
A:需通过自定义函数实现,在include/common.func.php中添加函数:
function GetSonIds($typeid, $addtype = '0') {
$ids = '';
if ($addtype == '0') $ids = $typeid;
$arr = GetSonIds($typeid, $addtype);
if (is_array($arr)) {
foreach ($arr as $id) $ids .= ','.$id;
}
return $ids;
}
然后在模板中使用:
{dede:arclist typeid='GetSonIds(1,1) notypeid=5'} <!-- 排除ID为5的栏目 --> 