播客节目栏
概述
我们为网站添加了一个新的长条状播客播放器组件,用于在博客文章中内联显示播客播放条。这个播放条提供了现代化的音频播放体验,包括进度控制、播放速度调节等功能。
功能特性
- 长条状设计: 紧凑的水平布局,适合在文章中内联显示
- 响应式设计: 在移动设备上自动调整为垂直布局
- 播放控制: 播放/暂停按钮,带有直观的图标切换
- 进度控制: 可点击的进度条,支持跳转到指定时间点
- 播放速度: 支持多种播放速度切换 (0.75x, 1x, 1.25x, 1.5x, 1.75x, 2x)
- 时间显示: 显示当前播放时间和总时长
- 暗色模式支持: 自动适应网站的暗色模式主题
使用方法
1. 在文章 Front Matter 中设置播客单集链接
在你的博客文章的 front matter 中添加 podcast_episode_url
字段:
---
title: "我的博客文章"
date: 2025-06-16
podcast_episode_url: "/zh/podcast/ep-001-beijing-car-lottery/"
---
2. 播客单集的数据结构
确保你的播客单集包含以下必要字段:
---
title: "播客单集标题"
date: 2025-05-18 08:12:03+08:00
categories:
- "播客分类"
audio_url: "https://example.com/podcast.mp3"
audio_type: "audio/mpeg"
duration: "8:06"
episode_image_url: "https://example.com/episode-image.jpg"
---
3. 自动渲染
当博客文章包含 podcast_episode_url
字段时,播客播放条会自动在文章内容之前显示。
样式组件
播客播放条包含以下主要组件:
- 播客封面: 60x60px 的圆角图片
- 播客信息: 标题、分类标签和发布日期
- 播放控件: 播放按钮、进度条、时间显示和速度控制
技术实现
文件结构
layouts/_default/episode_bar.html
- 播客播放条的 Hugo 模板assets/scss/templates/_podcast-episode-bar.scss
- 播客播放条的样式文件assets/js/audio-player.js
- JavaScript 播放控制逻辑(已扩展)
CSS 类名
主要的 CSS 类名包括:
.podcast-episode-bar
- 主容器.episode-bar-container
- 内容容器.episode-bar-image
- 封面图片区域.episode-bar-content
- 内容区域.episode-bar-controls
- 播放控件区域.episode-bar-play-btn
- 播放按钮.episode-bar-progress
- 进度条.episode-bar-speed-btn
- 速度控制按钮
响应式行为
- 桌面端: 水平布局,封面在左,内容和控件在右
- 移动端: 垂直布局,封面在上,内容和控件在下
- 平板端: 自动适应屏幕大小
播放器交互
- 播放/暂停: 点击播放按钮切换播放状态
- 进度跳转: 点击进度条的任意位置跳转到对应时间点
- 速度调节: 点击速度按钮循环切换播放速度
- 多播放器管理: 播放新音频时自动暂停其他正在播放的音频
注意事项
- 确保音频文件的 URL 可访问
- 建议使用 MP3 格式的音频文件以获得最佳兼容性
- 播客封面图片建议使用正方形比例
- 在测试环境中验证播放功能是否正常工作
示例
以下是一个完整的使用示例:
博客文章 (content/zh/blog/my-post.md
):
---
title: "关于北京摇号的思考"
date: 2025-06-16
podcast_episode_url: "/zh/podcast/ep-001-beijing-car-lottery/"
---
这篇文章讨论了北京小客车摇号的相关问题...
播客单集 (content/zh/podcast/ep-001-beijing-car-lottery/index.md
):
---
title: "北京小客车摇号深度探讨"
date: 2025-05-18 08:12:03+08:00
categories:
- "Jimmy 的播客"
audio_url: "https://assets.jimmysong.io/podcasts/audios/ep-001.mp3"
audio_type: "audio/mpeg"
duration: "8:06"
episode_image_url: "https://assets.jimmysong.io/podcasts/images/ep-001.jpg"
---
这样设置后,在博客文章中就会自动显示一个美观的播客播放条。