使用官方推荐的 arclist 标签(最常用、最灵活)
arclist 是织梦最强大的列表标签,可以用于调用文章、产品、图集等任何使用主表的数据。

(图片来源网络,侵删)
基础语法
{dede:arclist
flag='h'
typeid='栏目ID'
row='10' len='30'
orderby='pubdate'
channelid='1'}
<li>
<a href="[field:arcurl/]" title="[field:title/]">
[field:title/]
</a>
<span>[field:pubdate function='MyDate('Y-m-d', @me)'/]</span>
</li>
{/dede:arclist}
参数详解
| 参数 | 说明 | 示例 |
|---|---|---|
typeid |
指定栏目ID,这是调用产品列表最关键的参数,如果调用多个栏目,用逗号隔开,如 typeid='5,6,7',如果不指定,则调用所有栏目的内容。 |
typeid='8' |
row |
调用条数,显示多少条产品信息。 | row='6' |
infolen |
摘要长度摘要显示多少个字符。 | infolen='100' |
orderby |
排序方式,按什么字段排序,常用值: - pubdate: 按发布时间降序(最新发布在前)- hot: 按点击量排序- sortrank: 按后台设定的排序值 |
orderby='pubdate' |
channelid |
模型ID,指定要调用的内容所属的模型ID,产品通常是“产品模型”,其ID通常是 1,如果你的自定义模型ID不是1,请填写你的模型ID。 |
channelid='1' |
flag |
属性标识,可以指定特定属性的内容,常用值: - 'h': 只调用头条(推荐)内容- 'c': 只调用推荐内容- 'p': 只调用图片内容多个属性用 隔开,如 flag='h|c' |
flag='h' |
imgwidth / imgheight |
缩略图尺寸,设置调用图片的宽度和高度。 | imgwidth='150' imgheight='150' |
subday |
调用多少天内的内容。subday='30' 只调用最近30天内发布的产品。 |
subday='7' |
完整示例:调用“产品展示”栏目下的最新6个产品
假设你的“产品展示”栏目的ID是 8。
HTML 结构:
<div class="product-list">
<h2>我们的产品</h2>
<ul>
{dede:arclist typeid='8' row='6' titlelen='30' orderby='pubdate' channelid='1'}
<li>
<!-- 调用缩略图,如果没有则显示默认图 -->
<a href="[field:arcurl/]" title="[field:title/]">
<img src="[field:litpic/]" alt="[field:title/]" onerror="this.src='/images/default.jpg'">
</a>
<h3><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></h3>
<p class="summary">[field:info/]...</p>
<p class="date">发布时间:[field:pubdate function='MyDate('Y-m-d', @me)'/]</p>
</li>
{/dede:arclist}
</ul>
</div>
代码解释:
[field:arcurl/]: 获取该产品详情页的链接。[field:litpic/]: 获取该产品的缩略图路径。[field:title/]: 获取产品标题。[field:info/]: 获取产品摘要(通常是文章内容的前面部分)。[field:pubdate function='MyDate('Y-m-d', @me)'/]: 获取发布时间,并用MyDate函数格式化为年-月-日的格式。onerror="this.src='/images/default.jpg'": 这是一个很好的实践,当产品没有上传缩略图时,会显示一个默认图片,避免页面布局错乱。
使用 sql 标签(高级、自定义查询)
当你需要更复杂的查询条件,而 arclist 标签无法满足时(按产品价格排序、调用特定品牌的产品等),可以使用 sql 标签直接执行SQL语句。

(图片来源网络,侵删)
基础语法
{dede:sql sql="SELECT id, title, litpic, pubdate FROM `dede_archives` WHERE typeid IN (8) AND channel=1 ORDER BY pubdate DESC LIMIT 0,6"}
<li>
<a href="/plus/view.php?aid=[field:id/]" title="[field:title/]">
<img src="[field:litpic/]" alt="[field:title/]">
[field:title/]
</a>
</li>
{/dede:sql}
参数详解
sql: 这里写你的SQL查询语句。dede_archives: 这是织梦的主表,存储了所有文章的基本信息(标题、发布时间、所属栏目等)。typeid IN (8): 指定栏目ID为8。IN关键字可以用于多个ID,如IN (8, 9)。channel=1: 指定内容模型ID为1(产品模型)。ORDER BY pubdate DESC: 按发布时间降序排列。LIMIT 0,6: 从第0条开始,获取6条数据(即最新6条)。
[field:id/]: 获取查询结果中id字段的值。- 注意: 使用
sql标签时,详情页的链接需要手动拼接,通常是/plus/view.php?aid=[field:id/]。
使用 product 标签(专为产品模型设计)
如果你的产品模型有自定义字段,使用 product 标签可以更方便地调用这些字段,这个标签的用法和 arclist 非常相似,但更专注于产品。
基础语法
{dede:product
typeid='8'
row='6' len='30'
orderby='pubdate'}
<li>
<a href="[field:arcurl/]" title="[field:title/]">
[field:title/]
</a>
<span>价格:[field:price/]</span> <!-- 假设你有一个名为 price 的自定义字段 -->
</li>
{/dede:product}
参数详解
product 标签的大部分参数与 arclist 相同,如 typeid, row, titlelen, orderby 等,它的优势在于可以直接调用产品模型的自定义字段。
如何调用自定义字段?
-
确保自定义字段存在:在后台“核心” -> “内容模型管理” -> “编辑你的产品模型”中,确保你已经添加了自定义字段,
price(价格)、brand(品牌)等。 -
在模板中调用:
(图片来源网络,侵删)- 直接调用:如果字段是单行文本、数字等,直接使用
[field:字段名/]。价格:[field:price/] 品牌:[field:brand/]
- 调用编辑器字段:如果字段是使用编辑器(如“文本编辑器”)填写的,通常存储在附加表中,需要使用
array标签。{dede:product typeid='8' row='6'} <li> <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a> <!-- 假设 productintro 是一个编辑器类型的自定义字段 --> [field:array runphp='yes'] if(@me['productintro'] != '') { @me = '<p class="intro">'.@me['productintro'].'</p>'; } else { @me = ''; } [/field:array] </li> {/dede:product}
- 直接调用:如果字段是单行文本、数字等,直接使用
总结与推荐
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
arclist |
最常用、最灵活、官方推荐,参数丰富,能满足90%的需求。 | 对于非常复杂的自定义字段查询,略显繁琐。 | 绝大多数情况下的首选,调用最新、最热、推荐产品等。 |
sql |
功能最强大,可以执行任何SQL查询,自由度极高。 | 需要懂SQL,且字段名需要手动填写,容易出错。 | 需要复杂查询,如按价格、销量等自定义字段排序,或跨表查询。 |
product |
专为产品模型设计,调用自定义字段更直观。 | 不如 arclist 通用,很多高级参数不支持。 |
主要用于产品模型,特别是需要频繁调用特定自定义字段时。 |
给新手的建议:
- 从
arclist开始,先掌握arclist的用法,它能解决你大部分问题。 - 学会查看栏目ID,在后台“栏目”管理中,鼠标移动到目标栏目上,浏览器左下角状态栏会显示该栏目的ID。
- 善用
onerror,为图片添加onerror属性,可以避免因缺少缩略图导致的页面布局错乱,提升用户体验。 - 自定义字段调用,如果需要调用产品价格、规格等自定义字段,优先使用
arclist,通过[field:字段名/]的方式调用即可。
