这里为您提供三种主流的实现方法,从最推荐、最灵活到最简单,您可以根据自己的技术能力和需求选择。

(图片来源网络,侵删)
使用附加字段(最推荐、最灵活)
这是最规范、最灵活的方法,通过在文章模型中添加一个自定义的“视频”字段,然后在后台发布文章时上传或填写视频地址,首页就可以直接调用了。
第一步:在后台添加附加字段
-
登录织梦后台 (
/dede/)。 -
进入 【系统】 -> 【SQL命令行工具】。
-
在命令行文本框中,输入以下SQL语句,然后点击“查询”或“执行”,这会为
dede_archives表(文章主表)添加一个名为video的文本字段,用于存储视频地址。
(图片来源网络,侵删)ALTER TABLE `dede_archives` ADD `video` TEXT NOT NULL DEFAULT '';
- 提示:如果你的数据库表前缀不是
dede_,请修改成你自己的表前缀。
- 提示:如果你的数据库表前缀不是
-
进入模型管理:
- 路径:【核心】 -> 模型管理】。
- 找到你文章所在的内容模型(通常是“普通文章”),点击后面的 【字段管理】。
-
添加新字段:
- 点击 【添加新字段】。
- 字段名称:
video(必须和SQL语句中的一致,小写)。 - :
视频(这是在后台显示的名称)。 - 字段类型:
多媒体(推荐,可以方便地上传和选择本地视频或输入外部视频链接)。 - 字段说明:
请上传或填写视频地址(可选)。 - 其他选项:保持默认或根据需要设置,确保“是否显示在发布页”选择“是”。
- 点击 【保存】。
-
更新缓存:
- 路径:【系统】 -> 【一键更新网站】 -> 【更新系统缓存】,点击“开始更新”。
第二步:在后台发布文章
- 发布一篇新文章或编辑旧文章。
- 在文章编辑页面,你会发现多了一个“视频”字段。
- 填写视频地址:
- 如果是本地视频:点击“上传多媒体”,选择你服务器上的视频文件(建议放在
/uploads/video/目录下)。 - 如果是外部视频:直接粘贴视频的URL地址,
- MP4文件:
http://example.com/video/sample.mp4 - YouTube视频:
https://www.youtube.com/embed/VIDEO_ID - B站视频:
https://player.bilibili.com/player.html?aid=VIDEO_ID
- MP4文件:
- 如果是本地视频:点击“上传多媒体”,选择你服务器上的视频文件(建议放在
第三步:在首页模板中调用视频
你可以在首页模板文件(通常是 /templets/default/index.htm)中使用 {dede:arclist} 标签来调用这个新字段了。
核心标签:
{dede:field.video}:直接调用文章的video字段内容。
示例代码:
以下是一个常见的调用代码,它会循环列出最新的5篇带有视频的文章。
{dede:arclist row='5' titlelen='30' orderby='pubdate' typeid='' channelid='1'}
<div class="video-item">
<!-- 调用视频 -->
{dede:field.video runphp='yes'}
@me = (@me == '' ? '' : '<video controls width="300" height="200"><source src="' . @me . '" type="video/mp4">您的浏览器不支持视频标签。</video>');
{/dede:field.video}
<!-- 调用文章标题和链接 -->
<h3><a href="[field:arcurl/]">[field:title/]</a></h3>
<!-- 调用文章简介 -->
<p>[field:description function='cn_substr(@me,100)'/]...</p>
</div>
{/dede:arclist}
代码解释:
{dede:arclist ...}:文章列表调用标签。row='5':调用5条。titlelen='30'长度30个字符。orderby='pubdate':按发布时间排序。
{dede:field.video runphp='yes'}:对video字段进行PHP处理。@me代表当前字段的值。- 这段代码的意思是:
video字段为空,则不显示任何内容;如果不为空,则生成一个标准的HTML5<video>
[field:arcurl/]:文章链接。[field:title/]。[field:description function='cn_substr(@me,100)'/]:文章简介,并截取前100个字符。
使用文章内容(Body)中的第一个视频(最简单)
如果你不想修改数据库,可以将视频直接放在文章编辑器的正文内容(Body)的开头,然后在首页通过正则表达式提取出来。
第一步:在后台发布文章
- 正常发布文章。
- 在文章编辑器(比如百度编辑器)的开头,直接插入视频,确保这个视频是正文里的第一个视频元素。
第二步:在首页模板中调用
使用 {dede:arclist} 的 body 字段和 preg_replace 函数来提取视频。
{dede:arclist row='5' titlelen='30' orderby='pubdate'}
<div class="video-item">
<!-- 使用正则表达式提取body中的第一个video或iframe标签 -->
[field:body function='preg_replace("/.*?(<video.*?<\/video>|<iframe.*?<\/iframe>).*/is", "\\1", @me)'/]
<h3><a href="[field:arcurl/]">[field:title/]</a></h3>
<p>[field:description function='cn_substr(@me,100)'/]...</p>
</div>
{/dede:arclist}
代码解释:
[field:body ...]:调用文章的正文内容。function='preg_replace(...)':对正文内容执行一个正则表达式替换。"/.*?(<video.*?<\/video>|<iframe.*?<\/iframe>).*/is":这个正则表达式会匹配从开头到第一个<video>... 或者<iframe>... 结束的所有内容,并提取出这个标签本身,它可以兼容HTML5的video标签和嵌入的iframe(如B站、YouTube)。"\\1":表示用第一个匹配到的结果(即视频标签)替换掉整个正文内容。
优点:无需修改数据库,非常简单。 缺点:
- 不够灵活,视频必须放在正文开头。
- 如果正文没有视频,则调用内容为空,但可能会留下多余的空白。
- 效率略低于直接调用附加字段。
使用自定义模型(功能最强)
如果你的网站视频内容非常多,并且视频本身也有很多属性(如时长、封面图、播放次数等),建议创建一个全新的“视频”模型。
- 创建模型:在 【核心】 -> 模型管理】 中创建一个新模型,比如叫“视频”。
- 设计字段:为这个模型设计你需要的所有字段,如
视频地址、视频封面、视频时长、播放次数等。 - 时选择“视频”模型。
- 首页调用:在首页使用
{dede:arclist}并指定channelid为你的视频模型的ID。
{dede:arclist row='5' channelid='视频模型的ID' orderby='pubdate'}
<!-- 调用视频模型的自定义字段,'video_url' -->
<video controls width="300" height="200">
<source src="[field:video_url/]" type="video/mp4">
</video>
<h3><a href="[field:arcurl/]">[field:title/]</a></h3>
{/dede:arclist}
优点:功能最强大,结构最清晰,利于SEO和后续扩展。 缺点:设置最复杂,适合有一定开发经验的用户。
总结与建议
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 附加字段 | 灵活、规范、性能好、易于维护 | 需要修改数据库和字段,步骤稍多 | 强烈推荐,绝大多数场景下的最佳选择。 |
| 简单、无需修改数据库 | 不灵活、效率低、依赖正文结构 | 临时使用、少量视频、不想修改数据库的快速实现。 | |
| 自定义模型 | 功能最强、结构清晰、利于SEO | 设置复杂,需要重新学习模型管理 | 网站以视频为核心,视频属性复杂,需要长期维护。 |
对于大多数用户来说,方法一 是最平衡、最实用的解决方案,希望这个详细的教程能帮助到你!
