dede图集内容如何正确调用?

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

下面我将从基础调用高级调用,为你详细讲解如何调用图集内容,并提供不同场景下的代码示例。


基础调用:获取图集列表并显示缩略图和标题

这是最简单的调用方式,通常用于首页、列表页等展示多个图集的地方。

适用场景:

  • 首页图集推荐
  • 图集栏目列表

方法:使用 arclist

arclist 是 DedeCMS 最强大的列表调用标签,通过设置特定属性可以轻松调用图集。

核心属性:

  • channelid: 指定栏目ID,如果图集都放在一个专门的图集栏目下,直接填写该栏目ID即可。
  • row: 调用的记录条数。
  • imgwidth: 缩略图宽度。
  • imgheight: 缩略图高度。
  • listtype: 设置为 image,表示调用的是图集模型的内容。

代码示例:

{dede:arclist channelid='3' row='6' imgwidth='200' imgheight='150' listtype='image'}
    <dl>
        <dt>
            <!-- 调用第一张缩略图 -->
            <a href="[field:arcurl/]"><img src="[field:litpic/]" alt="[field:title/]" /></a>
        </dt>
        <dd>
            <!-- 调用图集标题 -->
            <a href="[field:arcurl/]">[field:title/]</a>
        </dd>
    </dl>
{/dede:arclist}

代码解析:

  • channelid='3': 请将 '3' 替换为你自己的图集栏目ID。
  • listtype='image': 这是关键,告诉 DedeCMS 我们要调用的是图集模型,这样 [field:litpic/] 才能正确获取到第一张图片的地址。
  • [field:litpic/]: 调用文章的缩略图,对于图集来说,它默认就是上传的第一张图片。
  • [field:arcurl/]: 调用文章的URL,点击后进入图集详情页。
  • [field:title/]: 调用文章的标题。

进阶调用:在图集详情页调用所有图片

当用户点击一个图集进入详情页后,我们需要展示该图集中的所有图片,这时需要使用 infolist

适用场景:

  • 页模板 (article_image.htm)

方法:使用 infolist

infolist 是专门用来调用附加表内容的标签,图集的所有图片都存储在 dede_addonimages 表中。

代码示例:

<h1>[field:title/]</h1>
<!-- 调用图集所有图片 -->
<div class="picbox">
    <ul>
        {dede:infolist}
        <li>
            <a href="[field:imgurl/]" target="_blank">
                <!-- 调用图片,并添加 alt 属性 -->
                <img src="[field:imgurl/]" alt="[field:text/]" width="800" />
            </a>
            <!-- 可选:调用图片的说明文字 -->
            <p>[field:text/]</p>
        </li>
        {/dede:infolist}
    </ul>
</div>
<!-- 如果需要调用图集的总数量 -->
<p>共 [field:totalpage/] 张图片</p>

代码解析:

  • {dede:infolist}: 此标签无需任何属性,它会自动获取当前文章ID在附加表中的所有图片记录。
  • [field:imgurl/]: 调用单张图片的地址。
  • [field:text/]: 调用单张图片上传时填写的“图片说明”。
  • [field:totalpage/]: 调用图集图片的总数。

高级调用:使用自定义函数(PHP)实现更灵活的控制

arclistinfolist 的功能无法满足我们的需求,比如想在首页调用某个图集的所有图片(而不是只调第一张),这时就需要用到自定义函数。

适用场景:

  • 首页展示某个特定图集的所有图片轮播。
  • 在任意位置调用图集,并自定义复杂的HTML结构。

方法:

  1. /include/extend.func.php 文件中添加一个自定义函数。
  2. 在模板中调用这个函数。

步骤1:添加自定义函数

打开 /include/extend.func.php 文件,在文件末尾 ?> 之前添加如下代码:

/**
 * 获取指定图集ID的所有图片
 * @param int $aid 图集的文章ID
 * @param string $imgwidth 图片宽度
 * @param string $imgheight 图片高度
 * @return string 返回包含所有图片HTML的字符串
 */
function GetImages($aid, $imgwidth = '', $imgheight = '')
{
    global $dsql;
    $images = '';
    $query = "SELECT imgurl,text FROM `dede_addonimages` WHERE aid='$aid' ORDER BY id ASC";
    $dsql->Execute('me',$query);
    while($row = $dsql->GetArray('me'))
    {
        // 可以在这里自定义每张图片的HTML输出格式
        $images .= "<li><img src=\"{$row['imgurl']}\" alt=\"{$row['text']}\" width=\"{$imgwidth}\" height=\"{$imgheight}\" /></li>\n";
    }
    return $images;
}

步骤2:在模板中调用

现在你可以在任何模板文件里使用这个函数了。

示例:在首页调用ID为 15 的图集的所有图片

<div class="my-gallery">
    <ul>
        <!-- 调用自定义函数,传入图集ID和图片尺寸 -->
        [field:runphp='yes']
            $aid = 15; // 这里填写你想调用的图集ID
            $str = GetImages($aid, '300', '200');
            @me = $str; // @me 是模板中变量的输出容器
        [/field:runphp]
    </ul>
</div>

代码解析:

  • [field:runphp='yes']: 这是一个运行PHP代码的标签。
  • @me = $str;: 这句非常重要,它将PHP变量 $str 的值赋给模板引擎的输出变量 @me,从而在页面上显示出来。
  • 这种方法非常灵活,你可以完全控制 GetImages 函数中的HTML结构,比如添加链接、说明文字等。

常见问题与注意事项

  1. 栏目ID (channelid) 错误

    • 问题:调用不出图集,或者调用的是普通文章。
    • 解决:确保你调用的是一个“图集”模型创建的栏目,进入后台【核心】->【内容模型管理】,查看你的图集模型ID,然后去【栏目管理】->【高级选项】->【内容模型】中确认栏目的模型是否正确。
  2. 缩略图不显示 ([field:litpic/])

    • 问题:使用 arclist 时,[field:litpic/] 返回空或默认图片。
    • 解决
      • 确认 listtype='image' 已设置。
      • 确认该图集在后台编辑时,已经上传了图片(系统会自动将第一张图作为缩略图)。
      • 检查 dede_archives 表中该文章的 litpic 字段是否有值。
  3. 图片路径问题

    • 问题:图片路径是 /uploads/... 而不是完整的 http://... 路径,导致图片无法显示。
    • 解决:这通常是网站根目录配置问题,确保你的网站配置正确,或者在调用时加上域名,DedeCMS 的 {dede:global.cfg_basehost/} 可以获取网站域名。
      • src="{dede:global.cfg_basehost/}[field:litpic/]"
  4. 图片说明 ([field:text/]) 为空

    • 问题:在 infolist 中调用 [field/text/] 没有内容。
    • 解决:这是正常的。[field:text/] 的值是在上传单张图片时,在“图片描述”或“图片说明”一栏手动填写的,如果上传时没有填写,自然就是空的。
调用场景 推荐标签 关键属性/代码 说明
首页/列表页 (调用图集列表) arclist listtype='image', channelid, imgwidth, imgheight 简单、高效,用于展示多个图集的概览。
图集详情页 (调用图集内所有图) infolist [field:imgurl/], [field:text/] 专门用于图集内容页,展示所有图片和说明。
任意位置 (灵活调用图集) 自定义函数 extend.func.php 中写 GetImages() 函数 功能最强大,可自定义HTML结构,适合复杂需求。

希望这份详细的指南能帮助你熟练掌握 DedeCMS 图集内容的调用!

-- 展开阅读全文 --
头像
C语言如何输出数组最大值和最小值?
« 上一篇 今天
dede 文章列表标签
下一篇 » 今天

相关文章

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