Hugo 网站优化(8): 书房装上了小电视, 使用 hugo shortcodes 支持 bilibili 视频播放
网站 使用 优化 支持 视频 播放 电视 装上
2023-06-13 09:17:20 时间
Hugo 网站优化(8): 书房装上了小电视, 使用 hugo shortcodes 支持 bilibili 视频播放
原文链接: https://tangx.in/posts/2023/01/04/hugo-bilibili-support/
在学习的时候希望资料和笔记内容都能在一起。这样 查阅、回顾 起来就更方便了。
hugo 短代码(shortcodes) 模版
在搜索的时候, 找到 利用hugo的短代码功能插入b站视频并且自适应[1] 了这篇文章, 实现了嵌入 Bilibili 的播放器。
进一步查询 hugo - 短代码[2] 和 hugo - 自定义段代码模版[3] , 并参考原文。
终于实现了, 在书房看电视的方案。
Bilibili 视频引用语法
在书房中看电视的语法规则。
支持两个参数
- 视频ID 或 视频地址
- 合集视频中的 第N集, 默认值为 1。
支持两种语法
- 具名语法, 根据参数名传递。
src
: 视频ID 或 地址page
: 分集
named-grammar
建议使用 具名语法, 这样在 markdown 中跳转更方便。
- 匿名语法, 根据参数位置传递。
- 参数1: 视频ID 或 地址
- 参数2: 分集
unnamed-grammar
仅仅是为了保留语法与兼容性考虑。
代码实现
- 在 主题 代码中, 添加
layouts/shortcodes/<name>.html
。这里的 name 就是以后Markdown
中的引用名字。例如,bilibili.html
- 复制代码
<!-- 语法规则
1. 匿名模式
<bilibili BV1Wg411t7EE 233>
2. 具名模式
<bilibili
src="https://www.bilibili.com/video/BV1RK41117eY/"
page="332"
>
-->
<!-- 获取第一个参数 作为视频地址 -->
{{- $dest := ( .Get 0) -}}
<!-- 如果是具名模式, 获取 src -->
{{ if .IsNamedParams }}
{{ $dest = (.Get "src") }}
{{ end }}
<!-- 判断是否为 全路径, 是则获取视频ID -->
{{ if (hasPrefix $dest "http" )}}
<!-- https://www.bilibili.com/video/BV1RK41117eY/ -->
{{ $dest = (strings.TrimPrefix "http" $dest ) }}
<!-- 解析 URL -->
{{ $url := urls.Parse $dest }}
<!-- /video/BV1RK41117eY/ -->
{{ $dest = $url.Path }}
<!-- BV1RK41117eY -->
{{ $dest = (path.BaseName $dest) }}
{{ end }}
<!-- 获取专辑中的视频 ID -->
{{- $page := (.Get 1) -}}
{{ if .IsNamedParams }}
{{ $page = (.Get "page") }}
{{ end }}
<!-- 默认值为 1 -->
{{ if (not $page) }}
{{ $page = 1 }}
{{ end }}
<!-- 嵌入 bilibili 播放框 -->
<div style="margin: 10px 0 20px 0;">
<!-- <h3>视频ID: {{ $dest }} - {{ $page }} </h3> -->
<div style="margin: 5px 0;">
<span>本视频一切权利归 <strong>bilibili</strong> 及 <strong>原作者所有</strong></span>
<span>如果觉得好, 请点击跳转到 <strong>bilibili</strong>给予支持</span>
<a href="https://www.bilibili.com/video/{{ $dest }}/">{{ $dest }}</a>
</div>
<div style="position:relative; padding-bottom:75%; width:100%; height:0">
<iframe src="//player.bilibili.com/player.html?bvid={{ $dest }}&page={{ $page }}"
scrolling="no" border="0"
frameborder="no"
framespacing="0"
allowfullscreen="true"
style="position:absolute; height: 100%; width: 100%;">
</iframe>
</div>
</div>
这里面使用了几个内置函数
- hugo 解析字符串 URL: https://gohugo.io/functions/urls.parse/
- hugo 获取 BaseName: https://gohugo.io/functions/path.basename/
参考资料
[1]
利用hugo的短代码功能插入b站视频并且自适应: https://www.bilibili.com/read/cv15198621
[2]
hugo - 短代码: https://gohugo.io/content-management/shortcodes/
[3]
hugo - 自定义段代码模版: https://gohugo.io/templates/shortcode-templates/
相关文章
- 品牌网站建设在同行中如何崭露头角?
- 个人网站使用PHP统计页面显示IP总访问量、本月访问量、昨日访问量、今日访问量
- 使用Servlet+AJAX+AWT实现网站登录时的图片验证码功能
- 网站性能常用指标与优化方法有哪些_常见的web性能优化方法
- 【爬虫】使用Selenium爬取升学e网通网站的近几年大学录取情况
- 开源图书《Python完全自学教程》12.3制作网站
- 使用 Vercel 部署你的静态网站
- Hugo 网站优化(9): 实时更新与缓存加速兼顾, 使用 Github Action 主动预热 CDN 缓存
- 上传Api成功但在苹果开发者网站App Store Connect中未显示构建版本的解决方案
- 基于jsDelivr+Github给网站如何换个漂亮的字体。
- python实战爬取招聘网站职位数据
- 网站robots、url、nofollow介绍(该如何正确使用)
- 10秒生成网站、60秒搞定一个游戏开发!史上最强模型 GPT-4 上线
- 记一次梦中渗透疑似钓鱼网站
- 使用 Nonce 防止 WordPress 网站受到 CSRF 攻击
- 使用 BIGDUMP 对网站数据进行迁移日志
- 结合使用Wget和FTP递归下载/迁移网站
- 构建自己的网站使用Linux系统构建属于自己的网站(用linux系统)
- Linux系统网站安全:防止篡改(linux网页防篡改)
- 使用Linux操作系统轻松搭建虚拟主机,实现网站高效运行!(linux搭建虚拟主机)
- 使用MySQL和HTML打造高效的数据驱动网站(mysql与html)
- yii2如何正确配置redis缓存?详细步骤发布技巧,让您的网站速度飞快。(yii2配置redis)
- 使用Linux轻松搭建JSP网站(linux搭建jsp)
- 网站访问量使用SQL Server优化网站获得爆炸性的访问量!(sqlserver 增加)
- 使用MySQL实现高效图片读取:优化您的网站性能(mysql图片读取)
- 网站如何利用Redis提升性能(网站怎么使用redis)
- 利用Redis优化网站性能的秘密(网站使用redis的作用)
- 提升网站性能使用Redis缓存页面(用redis缓存页面)
- 优化博客网站灵活运用Redis(博客网站使用redis)
- 优化博客网站性能使用本地Redis缓存(博客redis本地缓存)
- Asp.Net网站优化系列之数据库优化措施使用主从库(全)
- 使用PHPcurl模拟浏览器抓取网站信息
- php防止网站被刷新的方法汇总
- perl中使用ip138网站查询ip归属地脚本分享