织梦调用指定文章id

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

使用 arclist 标签(推荐)

arclist 是织梦最强大、最灵活的列表标签,虽然名字叫“列表”,但它完全可以用来调用单篇文章,这是官方推荐的方式,因为它经过了充分的封装,安全且易于扩展。

织梦调用指定文章id
(图片来源网络,侵删)

核心参数

要调用指定ID的文章,你需要使用 idlist 这个参数。

  • idlist:一个用英文逗号 分隔的文章ID列表。'1,5,10' 表示调用ID为1、5、10的三篇文章。

基本语法

{dede:arclist idlist='你的文章ID'}
    <a href="[field:arcurl/]">[field:title/]</a>
    <p>[field:description function='cn_substr(@me, 100)'/]...</p>
    <span>[field:pubdate function='MyDate("Y-m-d", @me)'/]</span>
{/dede:arclist}

完整示例

假设你想调用ID为 58 的文章,并显示标题、摘要和发布日期。

<h2>指定文章ID调用示例</h2>
{dede:arclist idlist='58' titlelen='50' infolen='200' orderby='id'}
    <div class="article-item">
        <h3><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></h3>
        <div class="article-info">
            发布时间:[field:pubdate function='MyDate("Y-m-d H:i:s", @me)'/]
        </div>
        <div class="article-summary">
            [field:description function='cn_substr(@me, 200)'/]...
        </div>
    </div>
{/dede:arclist}

参数详解

参数 作用 示例
idlist 核心参数,指定要调用的文章ID列表。 idlist='58, 100, 200'
row 显示的文章数量,当 idlist 指定了多个ID时,此参数生效。 row='3'
infolendescriptionlen 描述)的长度。 infolen='200'
orderby 排序方式。idlist模式下默认按ID顺序,可设置为id orderby='id'
channelid 指定频道ID,默认为0(所有频道),建议指定为文章模型的ID(通常是1)。 channelid='1'
typeid 指定栏目ID,如果调用的文章不属于该栏目,则不显示,可用于过滤。 typeid='5'
addfields 额外调用自定义字段,如果文章有自定义字段,需要在这里指定。 addfields='jiage,xinghao'

使用 sql 标签(灵活但需谨慎)

当你需要更复杂的查询逻辑,或者 arclist 无法满足需求时,可以直接使用原生SQL语句进行查询,这种方法更灵活,但同时也需要你对织梦的数据库结构有一定了解,并且要注意SQL注入的风险。

核心语法

{dede:sql sql='SELECT * FROM `dede_archives` WHERE id = 你的文章ID LIMIT 1'}
    <a href="[field:arcurl/]">[field:title/]</a>
    <p>[field:pubdate function='MyDate("Y-m-d", @me)'/]</p>
{/dede:sql}

完整示例

调用ID为 58 的文章。

织梦调用指定文章id
(图片来源网络,侵删)
<h2>使用SQL标签调用指定文章</h2>
{dede:sql sql='SELECT * FROM `dede_archives` WHERE id = 58'}
    <div class="article-detail">
        <h1>[field:title/]</h1>
        <div class="meta">
            发布时间:[field:pubdate function='MyDate("Y-m-d H:i:s", @me)'/]
        </div>
        <!-- 注意:sql标签不能直接调用body内容,需要联合查询 -->
        <!-- 下面是一个更完整的联合查询示例 -->
    </div>
{/dede:sql}

更完整的SQL示例(包含文章内容)

存储在 dede_addonarticle 表中(对于文章模型),而基本信息在 dede_archives 表,需要联合查询。

{dede:sql sql="
    SELECT a.*, b.body
    FROM `dede_archives` a
    LEFT JOIN `dede_addonarticle` b ON a.id = b.aid
    WHERE a.id = 58
    LIMIT 1
"}
    <h1>[field:title/]</h1>
    <div class="article-content">
        [field:body/]
    </div>
{/dede:sql}

重要提示

  1. 表前缀:如果你的数据库表前缀不是默认的 dede_,请务必修改SQL语句中的表名。
  2. 安全性:如果文章ID来自用户输入(如URL参数),务必进行过滤或使用织梦提供的过滤函数,防止SQL注入,直接在模板中写死ID(如上面的示例)是安全的。
  3. 字段名[field:arcurl/][field:title/] 等是织梦的底层字段处理函数,即使SQL查询中没有这些字段,织梦也会根据 dede_archives 表的结构自动处理,但对于 body 这样的自定义字段,必须确保SQL查询中包含了它。

总结与对比

特性 arclist sql
易用性 ,参数化设计,无需懂SQL。 ,需要编写SQL语句,了解表结构。
灵活性 中等,能满足大部分列表和单篇调用需求。 极高,可以执行任何复杂的查询。
安全性 ,官方封装,能有效防止SQL注入。 ,需开发者自行注意,有注入风险。
性能 良好,有缓存机制。 依赖数据库查询,无特殊优化。
适用场景 绝大多数情况,特别是调用单篇文章或简单列表。 特殊需求,如复杂条件查询、跨表关联查询等。

对于“调用指定文章ID”这个需求,强烈推荐使用 arclist,它更安全、更简单,并且符合织梦的设计规范,只有在 arclist 无法满足你的特定业务逻辑时,才考虑使用 sql

织梦调用指定文章id
(图片来源网络,侵删)
-- 展开阅读全文 --
头像
C语言中如何嵌入PHP语言实现混合编程?
« 上一篇 今天
dede时间段调用怎么实现?
下一篇 » 今天

相关文章

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