使用 {dede:arclist} 标签(最常用、最灵活)
{dede:arclist} 是织梦最强大的列表标签,不仅可以调用列表,也可以通过特定参数调用单篇文章,这是最推荐的方法。

基本语法
{dede:arclist typeid='' row='1' idlist='' titlelen='50'}
<a href="[field:arcurl/]">[field:title/]</a>
<p>[field:description function='cn_substr(@me,100)'/]...</p>
{/dede:arclist}
关键参数解释
-
typeid=''(栏目ID)- 如果你知道这篇文章属于哪个栏目,可以填写该栏目的ID,这能加快查询速度。
- 如果不确定或文章在所有栏目中,可以留空。
-
idlist=''(文章ID列表,这是调用单篇文章的关键!)- 格式:
文章ID1,文章ID2,... - 作用:直接指定要调用的文章ID,如果你想调用ID为
10的那篇文章,就写成idlist='10',这是最精确、最高效的方式。
- 格式:
-
row='1'(调用条数)- 因为我们只调用一篇文章,所以这里固定为
1。
- 因为我们只调用一篇文章,所以这里固定为
-
titlelen='50'(标题长度)
(图片来源网络,侵删)控制调用标题的显示字数,防止过长。
-
infolen='100'(内容摘要长度)控制调用文章摘要(文章开头部分)的显示字数。
-
typeid=''与idlist=''的关系
(图片来源网络,侵删)- 优先级:
idlist的优先级高于typeid,如果两个参数都填写了,系统会优先使用idlist来查找文章。 - 最佳实践:强烈建议使用
idlist来指定单篇文章,因为它最直接、最不容易出错。
- 优先级:
完整示例
假设我们要在首页调用ID为 5 的文章,只显示标题和摘要,并限制摘要长度为80个字符。
<h3>网站公告</h3>
{dede:arclist idlist='5' row='1' titlelen='30' infolen='80'}
<h4><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></h4>
<p>[field:description function='cn_substr(@me,80)'/]</p>
{/dede:arclist}
代码解释:
[field:arcurl/]:文章的完整链接地址。[field:title/]。[field:description/]:文章的摘要(如果文章填写了摘要,则显示摘要;否则显示文章开头部分)。function='cn_substr(@me,80)'是一个自定义函数,用来截取摘要的前80个字符。
使用 {dede:sql} 标签(直接查询数据库)
如果你的需求非常特殊,或者想调用一些非标准的文章数据,可以直接使用SQL语句从数据库中查询。
基本语法
{dede:sql sql='SELECT * FROM dede_archives WHERE id = 5'}
<a href="/plus/view.php?aid=[id]">[title]</a>
<p>[description]</p>
{/dede:sql}
关键参数解释
sql=''(SQL查询语句)- *`SELECT FROM dede_archives WHERE id = 5
**:这条语句的意思是从dede_archives(文章主表) 中查询id为5` 的所有字段。 - 表名注意:
dede_是织梦的默认表前缀,如果你的网站安装时修改了表前缀,你需要相应地修改这里的表名(yourprefix_archives)。
- *`SELECT FROM dede_archives WHERE id = 5
字段调用
在 {dede:sql} 标签内,你可以直接使用数据库表中的字段名作为变量,
[id]:文章ID[title][shorttitle]:文章短标题[description]:文章摘要[litpic]:文章缩略图[pubdate]:发布时间
完整示例
调用ID为 8 的文章,并显示标题、发布时间和内容。
<h3>公司简介</h3>
{dede:sql sql='SELECT title, pubdate, body FROM dede_archives WHERE id = 8'}
<h2>[title]</h2>
<p>发布时间:[pubdate function='strftime("%Y-%m-%d", @me)'/]</p>
<div class="content">
[body]
</div>
{/dede:sql}
注意:文章的详细内容存储在 dede_addonarticle (文章附加表) 的 body 字段中,如果你想同时调用主表和附加表的数据,需要使用 JOIN 查询,这会使SQL语句变得复杂,对于常规文章内容,优先使用 {dede:arclist}。
使用自定义模型(适用于“关于我们”、“联系我们”等固定页面)
如果你的“联系我们”、“公司简介”这类内容很少变动,且不希望作为“文章”来管理,可以创建一个自定义模型。
-
后台创建模型:
- 进入“后台” -> “核心” -> “内容模型管理” -> “增加一个新模型”。
- 填写模型名称(如“联系我们”),设置好字段(如:公司地址、联系电话、电子邮箱等)。
-
:
- 进入“后台” -> “普通栏目管理” -> “增加一个栏目”。
- 在栏目类型中选择“单页栏目”,并为你刚创建的自定义模型。
- 在该栏目下添加内容,填写你定义好的字段。
-
前台调用:
- 因为是单页栏目,调用非常简单,假设你的“联系我们”栏目ID是
12。
- 因为是单页栏目,调用非常简单,假设你的“联系我们”栏目ID是
{dede:field name='body'/}
或者,如果你想调用自定义字段,公司地址”字段名为 company_address:
<p>公司地址:{dede:field name='company_address'/}</p>
<p>联系电话:{dede:field name='tel'/}</p>
这种方法的好处是结构清晰,内容管理独立,不适合用于需要频繁更新的新闻类文章。
总结与最佳实践
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
{dede:arclist} |
灵活、高效、代码简洁,官方推荐 | 参数相对较多 | 绝大多数场景,特别是调用已有的文章。 |
{dede:sql} |
极其灵活,可查询任意数据 | 代码复杂,有SQL注入风险(需注意安全),对新手不友好 | 需要调用非标准数据或进行复杂查询时。 |
| 自定义模型 | 结构清晰,内容管理独立 | 需要提前设置,不适用于动态内容 | “关于我们”、“联系我们”、“公司简介”等固定、静态页面。 |
给你的最终建议:
99% 的情况下,使用
{dede:arclist idlist='你的文章ID'}是最好的选择。
操作步骤:
- 在后台找到你想要调用的那篇文章,查看其文章ID(在文章编辑页面URL中可以看到,或在“内容” -> “所有文档”中查看列表)。
- 将ID记下。
- 在你需要显示内容的模板文件(通常是
index.htm)中,使用上面{dede:arclist}的代码,将idlist的值替换为你记下的ID即可。
希望这个详细的教程能帮到你!如果你在操作中遇到任何问题,可以随时提问。
