dede如何调用视频列表?

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

使用 arclist 标签(最常用、最简单)

{dede:arclist} 是DedeCMS最核心的列表标签,通过指定特定属性,可以直接调用出视频列表。

dede 调用视频列表
(图片来源网络,侵删)

核心属性说明:

  1. channel:指定要调用的模型ID。

    • channel='1':调用文章列表。
    • channel='3':调用软件列表。
    • channel='-8':调用单个文件模型(这是存放视频最常用的模型)。
    • channel='-9':调用软件模型
    • channel='-10':调用商品模型
    • 注意-8 是Dede默认的“单个文件”模型ID,如果你的自定义模型ID不同,请务必去后台“核心” -> “内容模型管理”中查看你的视频模型对应的ID。
  2. addfields:获取附加表里的字段,视频的标题、描述、播放地址等信息通常都存在附加表里。

    • addfields='video,typeurl',表示调用 video(视频地址)和 typeurl(栏目地址)这两个附加字段。
  3. limit:获取条数。limit='0,10' 表示调用从第0条开始的10条记录。

  4. typeid:指定栏目ID。typeid='5' 表示只调用ID为5的栏目下的视频,留空则调用所有有权限的栏目。

    dede 调用视频列表
    (图片来源网络,侵删)
  5. orderby:排序方式。orderby='pubdate' 按发布时间排序,orderby='hot' 按点击量排序。

示例代码:

假设你的视频使用的是默认的“单个文件”模型(ID为-8),你想调用一个视频列表,并显示标题、缩略图和视频播放地址。

{dede:arclist channel='-8' addfields='video,typeurl' limit='0,6' orderby='pubdate'}
    <div class="video-item">
        <!-- 缩略图,默认用litpic字段 -->
        <a href="[field:arcurl/]">
            <img src="[field:litpic/]" alt="[field:title/]" />
        </a>
        <!-- 视频标题 -->
        <h3><a href="[field:arcurl/]">[field:title/]</a></h3>
        <!-- 视频播放地址,这里用超链接指向视频文件 -->
        <p>播放地址:<a href="[field:video/]">[field:video/]</a></p>
    </div>
{/dede:arclist}

代码解析:

  • channel='-8':明确告诉Dede我们要调用的是“单个文件”模型下的内容。
  • addfields='video,typeurl':我们需要获取视频地址(video字段)和栏目链接(typeurl字段),所以把它们加进来。
  • [field:arcurl/]:文章的URL,点击标题或图片可以跳转到视频详情页。
  • [field:litpic/]:文章的缩略图URL。
  • [field:title/]
  • [field:video/]:通过addfields引入的视频地址字段。

使用SQL语句调用(更灵活、更强大)

arclist标签无法满足复杂需求时(需要跨模型查询、按特定字段排序等),可以直接使用{dede:sql}标签执行原生SQL查询。

dede 调用视频列表
(图片来源网络,侵删)

场景:查询附加表 dede_addonsoft(单个文件模型的默认附加表)

步骤1:了解表结构

你需要知道视频信息存在哪个表里。

  • 主表(文章基本信息):dede_archives
  • 附加表(视频详细信息):dede_addonsoft (这是“单个文件”模型的默认附加表名,如果你改过,请用你自己的)

步骤2:编写SQL语句

假设我们要查询dede_addonsoft表中,typeid为5的栏目下的前6个视频,并按发布时间排序。

SELECT
    a.id, a.title, a.litpic, a.pubdate, a.typeid,
    s.body, s.video
FROM
    dede_archives AS a
LEFT JOIN
    dede_addonsoft AS s ON a.id = aid
WHERE
    a.arctypeid = 5
ORDER BY
    a.pubdate DESC
LIMIT 0, 6

SQL语句解析:

  • SELECT ...:选择我们需要的字段,从主表a和附加表s中选取。
  • FROM dede_archives AS a:从主表dede_archives查询,并给它一个别名a
  • LEFT JOIN dede_addonsoft AS s ON a.id = aid:通过aid(附加表中的文章ID)关联附加表dede_addonsoft(别名s)。
  • WHERE a.arctypeid = 5:筛选出栏目ID为5的文章。
  • ORDER BY a.pubdate DESC:按发布时间降序排列(最新的在前)。
  • LIMIT 0, 6:只取6条记录。

步骤3:在模板中使用{dede:sql}

{dede:sql sql="
    SELECT
        a.id, a.title, a.litpic, a.pubdate, a.typeid,
        s.body, s.video
    FROM
        dede_archives AS a
    LEFT JOIN
        dede_addonsoft AS s ON a.id = aid
    WHERE
        a.arctypeid = 5
    ORDER BY
        a.pubdate DESC
    LIMIT 0, 6
"}
    <div class="video-item">
        <a href="/plus/view.php?aid=[field:id/]">
            <img src="[field:litpic/]" alt="[field:title/]" />
        </a>
        <h3><a href="/plus/view.php?aid=[field:id/]">[field:title/]</a></h3>
        <p>发布时间:[field:pubdate function="MyDate('Y-m-d', @me)"/]</p>
    </div>
{/dede:sql}

代码解析:

  • [field:id/]:直接获取SQL查询结果中的id字段。
  • /plus/view.php?aid=[field:id/]:这是DedeCMS默认的文章详情页链接方式。
  • [field:pubdate function="MyDate('Y-m-d', @me)"/]:对pubdate时间戳进行处理,格式化为年-月-日的格式。

自定义模型并调用(最佳实践)

如果你网站上的内容主要是视频,强烈建议你不要使用默认的“单个文件”模型,而是创建一个全新的自定义视频模型,这样做的好处是:

  1. 字段命名清晰:你可以自定义字段名,如 video_urlvideo_durationactor 等,而不是使用默认的 videobody
  2. 管理方便管理更符合你的业务逻辑。
  3. 调用明确:调用时channel指向你的自定义模型ID,不会和其他模型混淆。

操作流程:

  1. 创建模型: 后台 -> 核心 -> 内容模型管理 -> [增加一个内容模型]。

    • 模型名称:视频
    • 模型表前缀:dede_addonvideo (Dede会自动生成,你也可以自定义)
    • ...其他信息填写后保存。
  2. 添加字段: 进入刚创建的“视频”模型管理,点击[管理字段]。

    • 增加字段:video_url (类型:多媒体,用于上传视频文件)
    • 增加字段:play_count (类型:数字,用于记录播放次数)
    • 增加字段:director (类型:字符,用于记录导演)
    • ...根据你的需要添加。
  3. 在栏目中使用模型: 后台 -> 核心 -> 栏目管理 -> 选择你要显示视频的栏目 -> 更改其“内容模型”为你刚创建的“视频”模型。

  4. 在模板中调用: 现在调用就变得非常清晰了。

{dede:arclist channel='你的自定义模型ID' addfields='video_url,play_count,director' limit='0,8' orderby='pubdate'}
    <div class="video-item">
        <a href="[field:arcurl/]">
            <img src="[field:litpic/]" alt="[field:title/]" />
            <span class="play-icon"></span>
        </a>
        <h3><a href="[field:arcurl/]">[field:title/]</a></h3>
        <p>导演:[field:director/]</p>
        <p>播放次数:<span class="play-count">[field:play_count/]</span></p>
    </div>
{/dede:arclist}

总结与建议

方法 优点 缺点 适用场景
arclist 简单、快捷、官方支持 灵活性较低,依赖固定模型ID 调用少量、规则简单的视频列表。
sql语句 极其灵活,可定制任何查询 需要懂SQL,有出错风险,不同Dede版本表名可能不同 复杂的、跨模型的、特殊排序的查询需求。
自定义模型 最佳实践、结构清晰、易于维护和扩展 初次设置需要一些工作量 新项目或以视频为主的网站,强烈推荐!

对于大多数用户,方法一(arclist 已经足够应付日常需求,如果你是开发者或对网站有更高的要求,方法三(自定义模型) 是最规范、最长远的选择。方法二(SQL) 则作为解决疑难杂症的“利器”存在。

-- 展开阅读全文 --
头像
dede 设置标题长度
« 上一篇 今天
织梦删除系统内容模型后,数据会丢失吗?
下一篇 » 今天

相关文章

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

目录[+]