dede图集field标签如何调用图集内容?

99ANYc3cd6
预计阅读时长 18 分钟
位置: 首页 DEDE建站 正文

field 标签是 DedeCMS 中一个非常核心和强大的标签,它主要用于在列表页、内容页等地方,直接调用当前文档(文章)的某个特定字段值。

dede 图集 field
(图片来源网络,侵删)

图集模型中的常用字段

我们需要了解 DedeCMS 图集模型 (image) 中默认包含哪些字段,这些字段是 field 标签可以调用的基础。

字段名 说明 调用示例
id 文档的唯一ID {dede:field.id/}
shorttitle {dede:field.shorttitle/}
picname 图集封面图片的文件名(不含路径) {dede:field.picname/}
litpic 图集封面图片的完整路径 {dede:field.litpic/}
description 图集的描述/摘要 {dede:field.description function='htmlspecialchars(@me)'/}
keyword 图集的关键词 {dede:field.keyword/}
click 点击数 {dede:field.click/}
posttime 发布时间(时间戳) {dede:field.posttime function='strftime("%Y-%m-%d", @me)'/}
senddate posttime {dede:field.senddate/}
arcrank 文档状态(如:0为正常,-1为待审核) {dede:field.arcrank/}
typename 所属栏目名称 {dede:field.typename/}
ismake 是否生成静态页 {dede:field.ismake/}
userip 发布者IP {dede:field.userip/}
body (包含所有图片的HTML代码) {dede:field.body/}
imgurls 图集图片列表(对象,需要特殊处理) {dede:field.imgurls/}

field 标签的基本用法

field 标签的基本语法非常简单:

{dede:field.字段名/}

或者,如果需要对字段值进行处理(例如格式化日期、截取字符串等),可以使用 function 属性:

{dede:field.字段名 function="处理函数(@me)"/}

常见用法示例:

  1. 调用图集标题:

    dede 图集 field
    (图片来源网络,侵删)
    <h1>{dede:field.title/}</h1>
  2. 调用图集封面图: 这是最常用的用法,litpic 字段直接返回图片的完整路径。

    <img src="{dede:field.litpic/}" alt="{dede:field.title/}">
  3. 调用发布时间(格式化为 年-月-日): posttime 返回的是 Unix 时间戳,需要用 strftime 函数进行格式化。

    发布时间:{dede:field.posttime function='strftime("%Y-%m-%d", @me)'/}
  4. 调用图集描述(并防止XSS攻击): 从数据库读取的内容可能包含恶意代码,使用 htmlspecialchars 函数进行转义是一个好习惯。

    <p>{dede:field.description function='htmlspecialchars(@me)'/}</p>

特殊字段的深度调用

图集模型最核心的两个字段是 bodyimgurls,它们的调用方式比较特殊。

dede 图集 field
(图片来源网络,侵删)

调用图集内容 ({dede:field.body/})

body 字段存储了你在后台编辑图集时,通过“上传图片”功能生成的所有图片及其说明的 HTML 代码。

直接调用: 它会输出一整段 HTML,通常用于图集内容页。

<!-- 在图集内容页显示所有图片和说明 -->
{dede:field.body/}

应用场景: 这个标签主要用于 (article_image.htm),用来显示完整的图集。

调用图集图片列表 ({dede:field.imgurls/})

imgurls 是一个对象,而不是一个简单的字符串,它包含了图集中所有图片的信息(如原始图、缩略图、图片说明等),要遍历并显示这些图片,需要使用 array

基本遍历语法:

{dede:field.imgurls}
    <!-- 循环体内的 `@me` 代表当前图片的信息对象 -->
    <img src="{@me['url']}" alt="{@me['alt']}">
{/dede:field.imgurls}

更完整的示例(在列表页或内容页显示所有缩略图):

<div class="thumb-list">
    {dede:field.imgurls}
        <li>
            <!-- 调用缩略图路径 -->
            <img src="{@me['litpic']}" alt="{@me['alt']}" title="{@me['alt']}">
        </li>
    {/dede:field.imgurls}
</div>

imgurls 对象内可用的键:

  • url: 原始图片路径。
  • litpic: 缩略图路径。
  • alt: 图片的说明文字。
  • text: 图片的附加说明(较少使用)。

实际应用场景示例

在图集列表页 (list_*.htm) 显示封面图和标题

{dede:list pagesize='12'}
    <li>
        <!-- 使用 field.litpic 调用当前图集的封面图 -->
        <a href="[field:arcurl/]">
            <img src="[field:litpic/]" alt="[field:title/]">
        </a>
        <h3><a href="[field:arcurl/]">[field:title/]</a></h3>
    </li>
{/dede:list}

注意:在列表循环 {dede:list} 内部,{dede:field} 可以简化为 [field:]{dede:field.litpic/}[field:litpic/] 在此环境下是等效的。

页 (article_image.htm) 显示所有图片

<h1>{dede:field.title/}</h1>
<!-- 方式一:直接调用 body,显示默认样式 -->
{dede:field.body/}
<!-- 方式二:使用 imgurls 对象进行自定义样式输出 -->
<div class="my-gallery">
    {dede:field.imgurls}
        <figure>
            <img src="{@me['url']}" alt="{@me['alt']}" data-src="{@me['url']}" />
            <figcaption>{@me['alt']}</figcaption>
        </figure>
    {/dede:field.imgurls}
</div>

页显示封面图作为大图

有时候我们想在内容页顶部再显示一遍封面图。

<!-- 显示封面图 -->
<div class="main-image">
    <img src="{dede:field.litpic/}" alt="{dede:field.title/}">
</div>
<!-- 显示所有图片列表 -->
<div class="image-gallery">
    {dede:field.imgurls}
        <!-- 如果当前图片不是封面图,才显示(可选逻辑) -->
        <!-- {dede:if}<![CDATA[ {@me['litpic'] != '{dede:field.litpic/}' } ]]>{/dede:if} -->
        <a href="{@me['url']}" data-lightbox="gallery" data-title="{@me['alt']}">
            <img src="{@me['litpic']}" alt="{@me['alt']}">
        </a>
    {/dede:field.imgurls}
</div>
需求 推荐标签 说明
获取封面图路径 {dede:field.litpic/} 最常用,用于列表页、内容页等任何地方显示封面。
获取图集标题 {dede:field.title/} 标准调用。
获取所有图片的HTML {dede:field.body/} 主要用于内容页,快速输出默认样式的图集。
获取并遍历所有图片信息 {dede:field.imgurls}{/dede:field.imgurls} 最灵活,可以自定义每张图片的显示样式和链接。
获取图片说明 {@me['alt']} 必须在 {dede:field.imgurls} 循环内部使用。

理解 field 标签,特别是 litpicimgurls 的区别与用法,是熟练掌握 DedeCMS 图集功能的关键,希望这份详细的解释能帮助你更好地使用 DedeCMS!

-- 展开阅读全文 --
头像
dede list img
« 上一篇 02-22
织梦采集缩略图不显示
下一篇 » 02-22

相关文章

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