dede图片附件类dede img如何使用?

99ANYc3cd6
预计阅读时长 17 分钟
位置: 首页 DEDE建站 正文
  1. {dede:img} 标签:用于调用图集(相册)
  2. 中的图片附件:用于文章正文内的图片
  3. 图集功能:{dede:img} 的数据来源

{dede:img} 标签(主要用于调用图集)

{dede:img} 是一个循环标签,专门用于调用图集(相册)模型中的图片,它通常与 {dede:imglist} 配合使用。

dede 图片附件类 dede img
(图片来源网络,侵删)

基本用法

{dede:img} 必须放在 {dede:imglist} 标签的内部使用,它会遍历当前图集中的每一张图片。

{dede:imglist}
    <li>
        <a href="[field:link/]" title="[field:text/]">
            <img src="[field:imgsrc/]" alt="[field:text/]">
        </a>
    </li>
{/dede:imglist}

在这个循环中,{dede:img} 的常用字段(field)有:

字段名 说明 示例
imgsrc 图片的原始地址,这是最常用的字段,直接指向上传的图片文件。 src="/uploads/230101/1-2301011F5302-50.jpg"
text 图片的标题/说明,在图集上传时为每张图片添加的描述文字。 text="这是第一张图片的描述"
link 图片的跳转链接,可以设置为原图、幻灯片等,通常在图集模型设置中定义。 link="/uploads/230101/1-2301011F5302-50.jpg" (指向原图)
pagestyle 图片的排版样式,在图集模型中可以设置,如1行1图、1行2图等。 pagestyle="left"
iswater 图片是否添加了水印。1 表示已添加,0 表示未添加。 iswater="1"

一个完整的图集调用示例

假设你要在首页或列表页调用一个图集,并显示缩略图和标题:

{dede:arclist typeid='1' row='5'}  <!-- 调用ID为1的栏目下的5篇文章,只调用图集 -->
    <div class="album-item">
        <a href="[field:arcurl/]">
            <!-- [field:litpic/] 是文章的缩略图,对于图集模型,通常是第一张图 -->
            <img src="[field:litpic/]" alt="[field:title/]">
        </a>
        <h3><a href="[field:arcurl/]">[field:title/]</a></h3>
    </div>
{/dede:arclist}

当用户点击进入这个图集文章后,在文章内容页(article_article.htm)中,你需要用 {dede:imglist} 来展示所有图片:

dede 图片附件类 dede img
(图片来源网络,侵删)
<div class="album-content">
    {dede:imglist}
        <div class="img-item">
            <a href="[field:link/]" title="[field:text/]">
                <!-- 显示缩略图 -->
                <img src="[field:imgsrc/]" alt="[field:text/]" width="300" height="200">
            </a>
            <p class="img-desc">[field:text/]</p>
        </div>
    {/dede:imglist}
</div>

中的图片附件

这部分指的是在编辑文章时,通过编辑器(如百度编辑器)直接插入到文章正文(body字段)里的图片。这些图片不是通过 {dede:img} 调用的

如何获取正文中的第一张图片?

一个常见的需求是,在列表页显示文章的缩略图,如果没有缩略图,则自动提取正文中的第一张图片作为缩略图,这通常需要通过自定义函数或修改模板来实现。

include/extend.func.php 文件中添加一个自定义函数 GetBodyImg()

// 函数名:GetBodyImg
// 功能:获取文章正文中的第一张图片路径
// 参数:$body 文章内容
function GetBodyImg($body) {
    $preg = "/<img.*?src=[\'|\"](.*?)[\'|\"].*?[\/]?>/i";
    preg_match_all($preg, $body, $match);
    if (!empty($match[1])) {
        // 返回第一张图片的路径
        return $match[1][0];
    }
    // 如果没有找到图片,可以返回一个默认图片
    return '/images/default.jpg';
}

使用方法:

dede 图片附件类 dede img
(图片来源网络,侵删)
  1. 将上面的代码添加到 include/extend.func.php 文件的末尾。
  2. 在列表页模板(如 list_article.htm)中,使用 [field:body function='GetBodyImg(@me)'/] 来调用。
{dede:list pagesize='10'}
    <li>
        <!-- 如果文章有litpic缩略图,则使用litpic,否则调用GetBodyImg函数 -->
        <img src="[field:litpic function='(@me ? @me : GetBodyImg(@me))'/]" alt="[field:title/]">
        <a href="[field:arcurl/]">[field:title/]</a>
    </li>
{/dede:list}

注意:

  • [field:litpic/] 是文章的缩略图字段,通常在后台发布文章时手动上传。
  • [field:body/] 是文章的正文内容。
  • function='GetBodyImg(@me)' 的意思是:将 field:body 的值(即文章正文内容)作为参数传递给 GetBodyImg 函数。

图集功能({dede:img} 的数据来源)

图集是 DedeCMS 的一种特殊的文章模型,创建图集文章的流程如下:

  1. 创建图集模型

    • 进入后台 -> 核心 -> 内容模型管理 -> 添加新模型。
    • 模型名称:图集
    • 模型表:默认即可
    • 字段管理:系统会自动添加 dede_addonimages 这个附加表,用于存储图片信息。
  2. 发布图集文章

    • 进入后台 -> 核心 -> 内容管理 -> 添加内容。
    • 选择“图集”模型。
    • 等基本信息。
    • 在“图集内容”区域,点击“上传图片”按钮,上传多张图片,并为每张图片填写“图片说明”(即 {dede:img}text 字段)。
  3. 数据存储

    • 文章的基本信息(标题、时间等)存在 dede_archives 表。
    • 图集的图片信息(路径、说明等)存在 dede_addonimages 表中,每张图片一条记录。
    • aid(文章ID)是连接 archivesaddonimages 两个表的关键字段。
  4. 调用逻辑

    • {dede:imglist} 标签首先会根据当前文章的 IDaid)去 dede_addonimages 表中查找所有相关的图片记录。
    • {dede:imglist} 会循环遍历这些记录,并将每一条记录暴露给其内部的 {dede:img}
    • {dede:img} 标签再通过 field:imgsrcfield:text 等字段来获取每一张图片的具体信息。

总结与对比

特性 {dede:img} 文章正文图片 (body字段)
用途 调用图集中的图片,用于制作相册、幻灯片。 作为文章的一部分,用于图文并茂的文章。
数据来源 dede_addonimages 附加表。 dede_arcticle 表的 body 字段(存储HTML代码)。
调用方式 必须在 {dede:imglist} 循环内部使用。 直接通过 [field:body] 获取,或通过自定义函数(如GetBodyImg)提取。
标签类型 循环标签,用于遍历一个图片列表。 普通字段标签,用于获取单个文本/HTML内容。
典型场景 图集详情页展示所有图片。 普通文章列表页提取正文图片作为缩略图。

简单记忆:

  • 想做相册、图集,用 {dede:imglist} + {dede:img}
  • 想在文章正文里放图,直接用编辑器上传,图片就在 [field:body] 里。
  • 想把正文里的图拿出来当缩略图,用自定义函数 GetBodyImg
-- 展开阅读全文 --
头像
织梦SMS网站如何更换广告图片?
« 上一篇 12-07
dede getfieldvaluea如何正确使用?
下一篇 » 12-07

相关文章

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