如何用织梦搜索指定ID的文档?

99ANYc3cd6
预计阅读时长 16 分钟
位置: 首页 织梦建站 正文

使用 {dede:arclist} 标签(最常用,适用于列表页)

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

织梦搜索指定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 的文档的标题和链接。

织梦搜索指定id的文档
(图片来源网络,侵删)
<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获取其他文档的信息,可以使用这种方法。

适用场景

  1. 在文章页显示自己的ID(用于调试或特殊展示)。
  2. 结合PHP,根据当前文章的某个字段值(如栏目ID)去查找其他关联文章。

示例1:在文章页显示当前文档的ID

在模板文件中直接使用:

织梦搜索指定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." 的文档。";
    }
?>

代码解释:

  1. $aid = 88;:设置你要查询的目标文档ID。
  2. dede_archives:这是织梦存储文档基本信息(标题、发布时间、ID等)的主表。
  3. dede_addonarticle:这是存储文章类型文档附加内容(即文章正文body)的表,如果你的模型是图集、软件等,表名会是 dede_addonimagesdede_addonsoft 等。
  4. $dsql->GetArray():执行查询并获取结果到数组。
  5. /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}) 是最佳选择,它既简单又高效,完全符合织梦的设计哲学。

-- 展开阅读全文 --
头像
多导航织梦网站模板哪里下载?
« 上一篇 01-30
dede loop如何实现分页功能?
下一篇 » 01-30

相关文章

取消
微信二维码
支付宝二维码

目录[+]