核心标签
织梦调用缩略图的核心标签是 [field:picname/]。

(图片来源网络,侵删)
这个标签会输出文章在后台设置的“缩略图”字段路径。
在首页、列表页调用文章缩略图
这是最常见的用法,通常与织梦的循环标签 {dede:arclist} 配合使用。
基础代码
{dede:arclist typeid='' row='10' titlelen='30'}
<li>
<a href="[field:arcurl/]">
<!-- 核心缩略图调用代码 -->
<img src="[field:picname/]" alt="[field:title/]" />
</a>
<a href="[field:arcurl/]">[field:title/]</a>
</li>
{/dede:arclist}
代码解释:
{dede:arilogy ...}: 这是一个循环标签,用于获取指定条件的文章列表。typeid='': 可选参数,指定要调用哪个栏目下的文章,留空表示调用所有栏目。row='10': 可选参数,指定要获取的文章数量,这里是10篇,len='30'`: 可选参数,截取文章标题的字符长度,防止标题过长影响布局。[field:arcurl/]: 获取文章的链接地址。[field:picname/]: 核心标签,获取文章的缩略图路径。[field:title/]: 获取文章的标题,通常用作img标签的alt` 属性,有利于SEO。
带样式的代码(推荐)
在实际开发中,我们通常会为图片添加一些样式,并处理图片不存在的情况。

(图片来源网络,侵删)
{dede:arclist typeid='' row='10' titlelen='30'}
<li>
<a href="[field:arcurl/]" title="[field:title/]">
<!--
1. 使用 style="width:200px; height:150px;" 控制图片大小
2. 使用 align="left" 让图片文字环绕
3. 使用 alt="[field:title/]" 增加SEO友好度
-->
<img src="[field:picname/]" alt="[field:title/]" style="width:200px; height:150px;" />
</a>
<h3><a href="[field:arcurl/]">[field:title/]</a></h3>
<p>[field:description function='cn_substr(@me,100)'/]...</p>
</li>
{/dede:arclist}
页(文章页)调用缩略图
页(article_article.htm 模板),调用缩略图更简单,因为当前文章的数据是已知的。
基础代码
<article>
<h1>[field:title/]</h1>
<!-- 在文章顶部调用缩略图 -->
<div class="article-main-img">
<img src="[field:picname/]" alt="[field:title/]" />
</div>
<div class="article-content">
[field:body/]
</div>
</article>
常用技巧与高级用法
处理“没有缩略图”的情况
如果文章没有上传缩略图,直接调用 [field:picname/] 可能会显示一个破损的图标,我们可以使用 if 条件语句来判断。
{dede:arclist typeid='' row='10'}
<li>
<a href="[field:arcurl/]">
<!-- 使用 if 判断,如果缩略图存在则显示,否则显示默认图 -->
[field:picname runphp='yes']
if(@me != '') {
@me = '<img src="' . @me . '" alt="[field:title/]" />';
} else {
@me = '<img src="/images/default.jpg" alt="[field:title/]" />'; // 替换成你的默认图片路径
}
[/field:picname]
</a>
<a href="[field:arcurl/]">[field:title/]</a>
</li>
{/dede:arclist}
代码解释:
runphp='yes': 启用PHP运行功能。if(@me != ''):@me变量代表了[field:picname/]的当前值,即缩略图路径,这里判断路径是否为空。- 如果路径不为空,就生成一个带有真实缩略图的
<img>- 如果路径为空,就生成一个带有默认图片的
<img> - 如果路径为空,就生成一个带有默认图片的
调用图集缩略图
对于图集类型的文章,缩略图的调用方式略有不同,图集的缩略图是第一张图片。
在 {dede:arclist} 中调用图集缩略图:
{dede:arclist typeid='' row='10' addfields='body'}
<li>
<a href="[field:arcurl/]">
<!--
1. 使用 [field:imglink/] 获取图集第一张图片的链接
2. 使用 [field:litpic/] 获取图集第一张图片的地址
-->
<img src="[field:litpic/]" alt="[field:title/]" />
</a>
<a href="[field:arcurl/]">[field:title/]</a>
</li>
{/dede:arclist}
注意:
[field:litpic/]和[field:picname/]在大多数情况下效果相同,但在处理图集时,[field:litpic/]更明确地指向第一张图片。addfields='body': 有时需要添加这个参数以确保能获取到图集内容。
调用多图(幻灯片)缩略图
如果开启了“多图”或“幻灯片”功能,缩略图数据存储在 body 字段中,格式为 |图片地址|,我们需要用PHP代码来解析它。
{dede:arclist typeid='' row='10' addfields='body'}
<li>
<a href="[field:arcurl/]">
<!-- 使用PHP代码解析body中的第一张图片 -->
[field:body runphp='yes']
$dtp = new DedeTagParse();
$dtp->SetNameSpace('field', '[', ']');
$dtp->LoadSource(@me);
$imgurl = $dtp->GetAtt('imgurl', 0); // 获取第一个imgurl属性
if($imgurl != '') {
@me = '<img src="' . $imgurl . '" alt="[field:title/]" />';
} else {
@me = '<img src="/images/default.jpg" alt="[field:title/]" />';
}
[/field:body]
</a>
<a href="[field:arcurl/]">[field:title/]</a>
</li>
{/dede:arclist}
代码解释:
- 这种方法稍微复杂,它解析了文章内容
body中的图片标记。 - 如果你的网站不常用多图功能,建议优先使用前面提到的
if判断方法,它更通用。
| 场景 | 核心代码 | 说明 |
|---|---|---|
| 首页/列表页 | [field:picname/] |
最基础、最常用的调用方式。 |
| 页 | [field:picname/] |
在文章模板中直接调用当前文章的缩略图。 |
| 处理无图 | if(@me != '') { ... } else { ... } |
通过 runphp 判断,为无图文章设置默认图片。 |
| 图集缩略图 | [field:litpic/] |
调用图集的第一张图片作为缩略图。 |
| 多图缩略图 | 解析[field:body/] |
用于调用开启了多图功能的文章的第一张图片,代码较复杂。 |
希望这份详细的指南能帮助你完全掌握织梦CMS中缩略图的调用方法!
