dede首页如何调用图集?

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

使用DedeCMS自带的“图集模型”调用(最推荐)

这是最标准、最规范的方法,适用于你已经创建了图集内容模型的情况。

dede首页调用图集
(图片来源网络,侵删)

准备工作:确保栏目是“图集”类型

在后台的【栏目管理】中,你需要调用图集的栏目类型设置为“图集”,DedeCMS才会正确识别并调用图片。

使用{dede:arclist}标签调用

{dede:arclist}是DedeCMS最强大的内容列表标签,调用图集同样适用。

基本代码:

{dede:arclist typeid='栏目ID' row='6' titlelen='24' orderby='pubdate'}
    <li>
        <a href="[field:arcurl/]" title="[field:title/]">
            <!-- 调用第一张图片作为封面 -->
            <img src="[field:picname/]" alt="[field:title/]" width="200" height="150" />
            <span class="title">[field:title/]</span>
        </a>
    </li>
{/dede:arclist}

代码参数详解

  • typeid='栏目ID': 必须指定,填写你想要调用图集的栏目ID,如果想调用所有顶级图集栏目,可以写 typeid='top'
  • row='6': 显示的图集数量,这里是6条,len='24'`: 标题字符长度,这里显示24个字符(一个汉字算两个字符)。
  • orderby='pubdate': 排序方式,按发布时间排序,也可以用 click (按点击量) 或 id (按文章ID)。
  • [field:arcurl/]: 图集文章的链接地址。
  • [field:title/]: 图集文章的标题。
  • [field:picname/]: 关键! 这个标签会自动获取图集文章里的第一张图片的地址,作为封面图,这是调用图集的核心。

完整示例(带CSS样式)

将下面的代码放在你首页模板的相应位置。

dede首页调用图集
(图片来源网络,侵删)

HTML部分:

<!-- 首页图集展示区 -->
<div class="home-gallery">
    <h2>精选图集</h2>
    <ul class="gallery-list">
        {dede:arclist typeid='2' row='6' titlelen='20' orderby='pubdate'}
            <li>
                <a href="[field:arcurl/]" title="[field:title function='htmlspecialchars(@me)'/]">
                    <img src="[field:picname/]" alt="[field:title function='htmlspecialchars(@me)'/]" />
                    <div class="gallery-title">[field:title/]</div>
                </a>
            </li>
        {/dede:arclist}
    </ul>
</div>

CSS部分(放在<head>标签内或外部CSS文件中):

.home-gallery {
    width: 100%;
    margin: 20px 0;
}
.home-gallery h2 {
    text-align: center;
    padding: 10px 0;
    font-size: 24px;
    border-bottom: 2px solid #eee;
}
.gallery-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex; /* 使用flex布局,让图片横向排列或自适应 */
    flex-wrap: wrap; /* 允许换行 */
    justify-content: space-around; /* 均匀分布 */
}
.gallery-list li {
    margin: 10px;
    width: 200px; /* 可以根据需要调整 */
    transition: transform 0.3s ease;
}
.gallery-list li:hover {
    transform: scale(1.05); /* 鼠标悬停时放大效果 */
}
.gallery-list li a {
    display: block;
    text-decoration: none;
    color: #333;
    position: relative;
}
.gallery-list li img {
    width: 100%;
    height: auto;
    display: block;
    border-radius: 5px; /* 圆角 */
}
.gallery-title {
    text-align: center;
    margin-top: 8px;
    font-size: 14px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

自由调用图片(不依赖图集模型)

如果你的图片是上传到文章内容里的,而不是通过图集模型添加的,你可以使用{dede:img}标签来提取。

基本代码:

{dede:arclist typeid='栏目ID' row='6' titlelen='24'}
    <li>
        <a href="[field:arcurl/]" title="[field:title/]">
            <!-- 使用dede:img标签提取正文中的第一张图 -->
            [field:body function='(preg_match("/<img\s+(.*?)(src\=[\'|\"](.*?)[\'|\"][^>]*>)/i", @me, $str_arr) ? $str_arr[3] : "默认图片地址")'/]
            <span class="title">[field:title/]</span>
        </a>
    </li>
{/dede:arclist}

代码详解:

  • 这个方法的核心是 function='...' 部分,它使用正则表达式 preg_match 在文章正文 ([field:body]) 中查找第一个<img>标签,并提取出它的 src 属性值。
  • preg_match("/<img\s+(.*?)(src\=[\'|\"](.*?)[\'|\"][^>]*>)/i", @me, $str_arr): 正则表达式,@me 代表当前字段的值(即文章正文)。
  • ? $str_arr[3] : "默认图片地址":如果找到了图片,就显示 $str_arr[3](即图片地址);如果没找到,就显示一个你指定的“默认图片地址”。

注意: 这种方法不如方法一稳定和高效,因为它是从HTML文本中“抓取”图片,如果文章结构复杂或没有图片,可能会出错。


使用自定义宏标记(更灵活)

如果你想在首页的任意位置(比如广告位、侧边栏)调用一个特定的图集,可以使用自定义宏标记。

在后台创建宏标记

  1. 登录DedeCMS后台,进入【系统】 -> 【SQL命令行工具】

  2. 在输入框中执行以下SQL语句(注意替换 图集文章ID图片数量):

    -- 这里的 123 是你要调用的图集文章ID,6 是要显示的图片数量
    INSERT INTO `dede_sysconfig` (`varname`, `info`, `type`, `value`, `groupid`)
    VALUES (
        'my_home_gallery', -- 宏标记名称,调用时用 {my_home_gallery}
        '首页指定图集', -- 描述信息
        'textarea', -- 类型
        '{dede:img listimg='yes'} [field:picname/] {/dede:img}', -- 核心调用代码
        8 -- 组ID,随便填一个数字即可
    );
    • listimg='yes':这个属性告诉标签只调用被设置为“列表图片”的图片,如果你没有设置,可以去掉这个属性,它会调用所有图片。
    • [field:picname/]:在这里代表单张图片的地址。
  3. 点击“查询”按钮执行。

在首页模板中调用

执行成功后,你就可以在首页模板的任何地方直接使用这个宏标记了:

<div class="custom-gallery">
    {my_home_gallery}
</div>

然后你可以在CSS中为 .custom-gallery 类编写样式来布局这些图片。


总结与建议

方法 优点 缺点 适用场景
{dede:arclist} 官方标准,性能好,稳定,调用第一张图非常方便。 需要栏目是“图集”类型。 绝大多数情况下的首选,推荐使用。
{dede:img} 灵活,可以从普通文章中提取图片。 不稳定,依赖正则表达式,性能稍差,可能找不到图片。 内容为普通文章,但想提取图片作为缩略图时使用。
自定义宏 灵活,可以在任意位置调用,可复用。 需要手动执行SQL,初次设置稍复杂。 在首页固定位置(如广告位、轮播图下方)调用一个特定的图集。

对于绝大多数用户,强烈推荐使用方法一,它最符合DedeCMS的设计理念,也最稳定可靠。

-- 展开阅读全文 --
头像
dede模板如何实现登录状态判断?
« 上一篇 04-22
织梦留言簿模块修改
下一篇 » 04-22

相关文章

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

目录[+]