使用 {dede:arclist} 标签(最常用,适用于列表页)
这是最直接、最织梦化的方法。{dede:arclist} 标签不仅可以用于列表,也可以通过设置 idlist 和 row 属性来精确获取指定ID的文档。

(图片来源网络,侵删)
适用场景:在模板文件(.htm)中直接调用,通常用于在某个文档页面上显示另一篇指定ID的文档摘要或标题。
标签语法:
{dede:arclist idlist='目标ID' row='1'}
<a href="[field:arcurl/]">[field:title/]</a>
<p>[field:description function='cn_substr(@me,100)'/]...</p>
<p>发布时间:[field:pubdate function='MyDate("Y-m-d",@me)'/]</p>
{/dede:arclist}
参数解释:
idlist='目标ID':这是核心参数,你想要获取的文档ID,多个ID用英文逗号 隔开。idlist='1,5,10'。row='1':表示获取多少条记录,因为我们只想要一个指定ID的文档,所以这里设置为1。[field:arcurl/]:文档的链接地址。[field:title/]:文档的标题。[field:description/]:文档的摘要。function='cn_substr(@me,100)'表示截取摘要前100个字符。[field:pubdate/]:文档的发布时间。function='MyDate("Y-m-d",@me)'表示将时间格式化为“年-月-日”。
示例:
假设你想在当前页面显示ID为 100 的文档的标题和链接。

(图片来源网络,侵删)
<h3>推荐文章</h3>
<ul>
{dede:arclist idlist='100' row='1'}
<li><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></li>
{dede:arclist}
</ul>
使用 {dede:field} 标签配合PHP(适用于内容页)
页(article_article.htm)的模板中,获取并显示当前文档自身的ID,或者通过PHP获取其他文档的信息,可以使用这种方法。
适用场景:
- 在文章页显示自己的ID(用于调试或特殊展示)。
- 结合PHP,根据当前文章的某个字段值(如栏目ID)去查找其他关联文章。
示例1:在文章页显示当前文档的ID
在模板文件中直接使用:

(图片来源网络,侵删)
<p>本文档ID是:{dede:field.id/}</p>
<p>本文档标题是:{dede:field.title/}</p>
示例2:在文章页获取并显示另一篇指定ID的文档的标题(需要PHP)
这种方法更灵活,可以在模板中嵌入PHP代码。
<p>以下是ID为88的文档信息:</p>
<?php
$aid = 88; // 你要查询的目标文档ID
$query = "SELECT * FROM `dede_archives` WHERE id = $aid";
$dsql->Execute('me',$query);
if($row = $dsql->GetArray('me'))
{
// 从主表获取标题等信息
$title = $row['title'];
// 获取文档 body 内容,需要从附加表获取
$addQuery = "SELECT * FROM `dede_addonarticle` WHERE aid = $aid";
$addRow = $dsql->GetArray($addQuery);
$body = $addRow['body'];
// 输出结果
echo "<h3><a href='/plus/view.php?aid=".$aid."'>".$title."</a></h3>";
echo $body; // 直接输出内容,注意安全
}
else
{
echo "未找到ID为 ".$aid." 的文档。";
}
?>
代码解释:
$aid = 88;:设置你要查询的目标文档ID。dede_archives:这是织梦存储文档基本信息(标题、发布时间、ID等)的主表。dede_addonarticle:这是存储文章类型文档附加内容(即文章正文body)的表,如果你的模型是图集、软件等,表名会是dede_addonimages、dede_addonsoft等。$dsql->GetArray():执行查询并获取结果到数组。/plus/view.php?aid=...:这是织梦查看文章详情页的标准链接。
使用PHP代码在自定义页面或PHP文件中获取(最灵活)
如果你想在非模板文件中(比如一个自定义的PHP页面)获取文档信息,或者进行更复杂的数据处理,可以直接在PHP文件中操作数据库。
适用场景:制作API接口、开发独立的功能模块、在首页等特殊位置调用。
示例:创建一个 get_article.php 文件
<?php
require_once (dirname(__FILE__) . "/include/common.inc.php"); // 引入织梦核心文件
$aid = isset($_GET['aid']) ? intval($_GET['aid']) : 0; // 从URL获取ID,并转为整数,防止SQL注入
if($aid > 0)
{
// 使用DedeCMS自带的GetOne函数查询,更安全便捷
$row = $dsql->GetOne("SELECT * FROM `dede_archives` WHERE id = {$aid}");
if(is_array($row))
{
// 获取附加表内容
$addRow = $dsql->GetOne("SELECT * FROM `dede_addonarticle` WHERE aid = {$aid}");
// 合并数据
$articleInfo = array_merge($row, $addRow);
// 输出JSON格式数据(适合API)
header('Content-Type:application/json; charset=utf-8');
echo json_encode($articleInfo, JSON_UNESCAPED_UNICODE);
// 或者直接输出HTML
/*
echo "<h1>" . $articleInfo['title'] . "</h1>";
echo "<p>发布时间:" . date('Y-m-d H:i:s', $articleInfo['pubdate']) . "</p>";
echo $articleInfo['body'];
*/
}
else
{
echo "文档不存在或已被删除。";
}
}
else
{
echo "请指定有效的文档ID。";
}
?>
如何访问:
你可以通过浏览器访问 http://你的网站/get_article.php?aid=100 来获取ID为100的文章信息。
总结与建议
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
{dede:arclist} |
最简单、最原生,无需编程知识,效率高。 | 灵活性较低,主要用于模板内调用。 | 在列表页、内容页等模板中调用指定ID的文档。 |
{dede:field} + PHP |
灵活性较高,可以结合织梦标签和PHP逻辑。 | 需要一定的PHP基础,代码写在模板中不够整洁。 | 页模板中,根据当前文章信息动态获取其他文章。 |
| 纯PHP文件 | 最灵活、最强大,可独立运行,适合复杂逻辑和API开发。 | 需要PHP和数据库知识,需要手动引入织梦核心文件。 | 开发独立功能模块、制作API、在非标准模板位置调用。 |
对于绝大多数在模板中“指定ID获取文档”的需求,方法一 ({dede:arclist}) 是最佳选择,它既简单又高效,完全符合织梦的设计哲学。
