使用系统标签 arclist
这是最推荐、最简单的方法,适用于绝大多数场景。arclist 标签功能强大,通过指定 idlist 属性即可实现。

(图片来源网络,侵删)
标签语法
{dede:arclist idlist='文章ID1,文章ID2,文章ID3' ...其他属性...}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
</li>
{/dede:arclist}
核心属性说明
idlist: (核心) 指定要调用文章的ID列表,多个ID用英文逗号 隔开,这是实现“指定ID”的关键,len标题长度,截取标题多少个字符,例如titlelen='30'`。row: 调用文章的数量。idlist中有3个ID,但row='5',也只会调用3篇,这个属性主要用于限制数量,通常可以省略。orderby: 排序方式,默认为id(按ID排序),如果你想按发布时间倒序排列,可以使用orderby='pubdate'。channelid: 频道ID,默认为1(文章频道),如果调用的是其他频道的内容(如图集、软件),需要指定对应的频道ID。typeid: 栏目ID,如果只想在某个栏目下查找这些ID的文章,可以加上此属性。
完整示例
假设我们要调用ID为 10, 15, 88 的这三篇文章,并显示标题、发布日期和文章摘要。
<h3>指定文章推荐</h3>
<ul>
{dede:arclist idlist='10,15,88' titlelen='40' row='3' orderby='pubdate'}
<li>
<a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
<span class="date">[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
<p class="summary">[field:description function='cn_substr(@me, 100)'/]...</p>
</li>
{/dede:arclist}
</ul>
代码解释:
idlist='10,15,88': 明确指定要调用这三篇文章,len='40'`: 标题最多显示40个字符。row='3': 最多调用3篇文章(这里其实可以省略,因为idlist里只有3个)。orderby='pubdate': 按照发布时间倒序排列这三篇文章。[field:arcurl/]: 文章链接。[field:title/]: 文章标题。[field:pubdate function="MyDate('Y-m-d',@me)"/]: 调用发布时间,并用自定义函数格式化为年-月-日。[field:description function='cn_substr(@me, 100)'/]: 调用文章摘要,并截取前100个字符。
使用PHP代码 `{dede:php}``
这种方法更灵活,可以执行复杂的逻辑,比如先从一个地方获取ID列表,然后再去调用文章,它适用于高级用户或特殊需求。
基本思路
- 使用
GetOneArchive()函数根据ID获取文章信息。 - 在
{dede:php}...{/dede:php}标签内编写循环逻辑。
标签语法
{dede:php}
// 定义一个包含目标文章ID的数组
$article_ids = array(10, 15, 88);
// 遍历ID数组
foreach($article_ids as $aid) {
// 获取单篇文章的所有信息
$arc = GetOneArchive($aid);
// 如果文章存在(没有被删除),则输出
if(is_array($arc)) {
echo '<li>';
echo '<a href="'.$arc['arcurl'].'" title="'.$arc['title'].'">'.$arc['title'].'</a>';
echo '<span>'.date('Y-m-d', $arc['pubdate']).'</span>';
echo '</li>';
}
}
{/dede:php}
代码解释
$article_ids = array(10, 15, 88);: 创建一个PHP数组,存放你想调用的文章ID。foreach($article_ids as $aid): 循环遍历这个数组,每次循环$aid会代表一个ID。$arc = GetOneArchive($aid);: 这是核心函数,它根据文章ID$aid查询数据库,并返回一个包含该文章所有信息的数组(标题、链接、发布时间等)。if(is_array($arc)): 一个健壮的判断,确保查询到的文章是有效的(ID存在且文章未被删除)。$arc['arcurl']: 获取文章链接。$arc['title']: 获取文章标题。$arc['pubdate']: 获取文章发布时间的时间戳,需要用date()函数格式化。
PHP方法的优势
- 动态ID列表: ID列表可以不是硬编码的,可以从数据库、配置文件或其他地方动态获取。
- 复杂逻辑: 可以在循环内加入
if/else判断,实现更复杂的显示逻辑。 - 获取更多信息: 可以直接获取到
arclist标签可能没有直接暴露的字段。
总结与对比
| 特性 | 方法一: arclist
| |
|---|---|---|
| 易用性 | 非常简单,模板化,适合所有用户 | 需要PHP知识,对初学者不友好 |
| 灵活性 | 较高,但受限于标签属性 | 极高,可以执行任何PHP逻辑 |
| 性能 | 非常好,系统底层优化过 | 良好,但每次执行都会有一次数据库查询循环 |
| 适用场景 | 大多数常规需求,如推荐指定文章、调用特定内容 | 需要动态ID、复杂判断或调用非标准字段的高级场景 |
给新手的建议:
优先使用方法一 (
arclist,它简单、高效且足够强大,只有在arclist标签无法满足你的特殊需求时,才考虑使用方法二 (php代码)。
