Discourse Qingwa Timelines - 美观时间线布局的自定义BBCode

:information_source: 摘要 一个用于创建精美时间线布局的 Discourse 主题组件
:eyeglasses: 预览 https://meta.appinn.net/t/topic/76953
:hammer_and_wrench: 仓库 GitHub - scavin/discourse-qingwa-timelines
:question: 安装指南 如何安装主题或主题组件
:open_book: 首次使用 Discourse 主题? Discourse 主题使用入门指南

安装此主题组件

我很高兴与大家分享一个新主题组件,它可以为您的 Discourse 社区添加优雅的时间线布局!

这是我第一个主题组件,在大型语言模型的帮助下构建而成。

这是什么?

Discourse Timelines 是一个主题组件,它实现了自定义 BBCode [timelines]...[/timelines],用于创建精美、极简的时间线布局。非常适合项目路线图、分步指南、公司历史、章节划分等。

已发布的事件线效果

编辑器工具栏按钮

Markdown 编辑器视图

主要特点

:white_check_mark: 自定义 BBCode - 简单的 [timelines] 语法
:white_check_mark: 编辑器工具栏按钮 - 无需手动输入标签(解决了新编辑器括号转义问题!)
:white_check_mark: 精美设计 - 带有干净、极简美学的垂直渐变线
:white_check_mark: Markdown 支持 - 保留时间线内的所有格式
:white_check_mark: 多语言 - 内置 9 种语言的翻译(EN、ZH_CN、ZH_TW、DE、ES、FR、JA、KO、RU)
:white_check_mark: 主题兼容 - 兼容浅色和深色模式
:white_check_mark: 可定制 - 可通过管理员设置轻松更改颜色
:white_check_mark: 响应式 - 移动友好布局
:white_check_mark: 安全 - 内置 XSS 防护
:white_check_mark: 无依赖 - 仅使用 Discourse 原生 API

用法

使用工具栏按钮(最简单!)

  1. 打开编辑器
  2. 点击 “+”(选项) 菜单按钮
  3. 选择 “插入时间线”
  4. 编辑您的内容
  5. 发布!

工具栏按钮解决了新 Discourse 编辑器自动转义手动输入的方括号的问题。

示例语法

[timelines]
## 2024 年 1 月 - 项目启动
项目正式启动,团队组建。
​
## 2024 年 3 月 - 首次发布
核心功能开发完成,开始进行 Beta 测试。
​
## 2024 年 6 月 - 2.0 版本
主要更新,包含新功能:
- 功能 A
- 功能 B
- 功能 C
[/timelines]

定制

所有颜色都可以通过主题设置进行定制:

  • timeline_gradient_start - 顶部渐变色(默认:#ff7a18
  • timeline_gradient_end - 底部渐变色(默认:#ffb800
  • timeline_heading_color - 标题文本颜色(默认:#d96d14
  • timeline_dot_color - 时间线点颜色(默认:#ff7a18
  • timeline_heading_color_dark - 深色模式标题颜色(默认:#ff9854
  • timeline_dot_border_color_dark - 深色模式点边框颜色(可选)

希望您觉得这个组件有用!如果您有任何问题、反馈或建议,请告诉我。 :blush:

23 个赞

这是一个非常好的组件!非常有用。

3 个赞

这是否也支持图片/视频?

是的,它同时支持图片和视频。

这是一个快速演示[DEMO LINK]

Screen-20251114144915@2x
Screen-20251114144924@2x

1 个赞

确实非常甜美。很棒的作品!

这是否适用于 DiscoTOC?

它似乎依赖于较大的标题,这使得 TOC 层次结构稍微缺乏灵活性。

我用 DiscoTOC 测试了,没有发现任何问题。

我在演示页面上添加了一个目录(TOC)——欢迎打开查看其工作原理。

1 个赞

感谢您的参考。

当在带有自动目录(autoTOC)的帖子中使用它时,它依赖于标题 2 和 3 的 Markdown 标记而显得突出。是否有任何方法可以将其更改为使用标题 4 或 5(或两者都使用)以获得更大的灵活性?

如果时间线出现在目录层次结构的更下方,例如在标题 2 或 3 之后,会导致目录在视觉上看起来没有顺序。

编辑:我可以将它包装在 [details] 标签中,这样时间线标题就不会显示在目录中。就我而言,这是一个合理的变通方法。

2 个赞

感谢您的建议!我将研究如何改进这一点。

1 个赞

您现在无需变通方法即可将时间轴标题排除在目录 (TOC) 之外:

[timelines] 中使用伪标题,方法是在前面加上 ##!(用于 H2 样式)或 ###!(用于 H3 样式)。

示例:

[timelines]

##! 2020 – 基础
内容…
[/timelines]

这些在时间轴内部渲染为 H2/H3,但不会被视为真正的标题,因此无论时间轴位于何处,自动目录 (autoTOC) 都能保持整洁。

如果您希望时间轴的标题保留在目录中,请继续使用正常的 ##/###

目前,如果 [timelines] 中有任何一个 ##!(或 ###!),目录将跳过整个时间轴。

目前尚不支持在同一个时间轴中混合使用这两种样式。

您现在可以混合使用它们:##/### 仍然会显示在目录中,而 ##!/###! 只在时间轴内部渲染,并保留在目录之外。

请更新组件并试用一下。

2 个赞

那是一个巧妙的变通方法!

这似乎在以下情况下可以正常工作:

[timelines]
##! 2020 - Foudnation
Content...
###! March
Content
[/timelines]

但对于一个伪标题紧跟在另一个格式化列表之后的列表则不行:

[timelines]
##! 2020 - Foundation
* Listicle
###! March
Dooooooom!
[/timelines]

第一个伪标题也更倾向于与开头的 [timelines] 标签保持在同一行,以避免在上方格式化一个空行。例如:

[timelines]##! 2020 - Foundation
Content...
[/timelines]

否则,第一个伪标题上方会出现一个间隙,就像它是一个常规的、非标题的、时间线块行一样。

感谢您在这方面所做的工作,它现在变得越来越灵活易用了。

感谢您指出这个问题。

我看到了同样的情况。目前,以下这些可以正确渲染:

  [timelines]##! 2020 - Foundation
  Content...
  [/timelines]

  [timelines]

  ##! 2020 - Foundation
  Content...
  [/timelines]

但是这个不行:

  [timelines]
  ##! 2020 - Foundation
  Content...
  [/timelines]

我正在研究这个问题,但还没有确定正确的修复方法。 :joy:

1 个赞