我们刚刚发布了主题重构的第二版迭代。虽然第一次更新是在之前的 Meta Branded 主题基础上进行的视觉刷新,但这一版本实质上是一个从头开始重建的全新主题。新的品牌语言已在上一版本中引入,因此在这方面可见的变化并不多。此次更新带来的显著变化在于主题实现本身,以及它所展示的我们在 Discourse 自定义功能整体发展方向上的愿景。
我将逐步介绍一些实现细节,先从较小的改进开始:
Lucide 图标
Lucide 是一套开源的现代描边图标集,我们已在多个自定义项目中采用它。在此次迭代中,我们也将其集成到了 Meta Branded 主题中。Discourse 核心暂无计划替换 Font Awesome,但 Font Awesome 的免费版本仅提供有限的描边风格图标,不足以构成一套连贯的描边图标系统。该主题组件可在 github.com/discourse/discourse-lucide-icons 获取。
限制颜色方案的主题修饰符
我们新增了一个 only_theme_color_schemes 主题修饰符,用于限制特定主题可用的颜色方案,包括管理员界面和用户偏好设置中的选项。Meta 提供了多种用户可选的颜色方案,这些方案可能与 Meta Branded 主题的视觉识别体系产生冲突。通过该修饰符,仅将随主题捆绑的颜色方案作为选项提供。
拉取请求:FEATURE: 添加用于限制主题颜色方案的修饰符
全宽布局
我们还在尝试对 Discourse 全宽组件 进行一些调整,以更好地将主要内容居中显示在页面上。由于页面头部存在大量动态元素,使得布局设置变得复杂,因此目前该功能仍处于实验阶段,仅在组件的一个分支上可用。
控制欢迎横幅显示的值转换器
我们使用了一个新的 welcome-banner-display-for-route 值转换器,以编程方式控制核心欢迎横幅在哪些路由上显示。我们利用该功能确保横幅仅显示在默认的自定义首页上,而不会出现在用户可能设置为个人落地页的其他页面上。
拉取请求:DEV: 添加 welcome-banner-display-for-route 值转换器
接下来是两个更大的变更:
通过主题修饰符实现自定义首页
custom_homepage 主题修饰符已存在近两年,但这是我们首次将其用于塑造 Meta 自身的首页体验。我们推出了一款自定义落地页,其中包含精选组件。在初始发布版本中,该页面展示了精选分类以及最新讨论话题的预览。
这些精选组件是使用我们全新的实验性 Blocks API 构建的,这也引出了本次最大的变更:
Blocks API:首次生产环境应用
Blocks API 是 Discourse 中用于构建模块化、可组合布局的新框架。它允许主题开发者将页面由自包含、可复用的组件组装而成,并将这些组件放置到预定义的布局区域中。Meta 主题是我们首次在生产环境中部署该 API。
该框架提供丰富的开发者工具:启用开发者工具后,您可以使用内置覆盖层检查任何页面的块结构,该覆盖层可可视化所有活动的布局区域及其组件。
除了首页之外,我们还使用 Blocks 来渲染自定义分类横幅,展示每个分类的子分类:
这仍然是该系统在生产环境中的早期预览版本。我们计划很快发布相关文档和更多示例。
拉取请求:DEV: 添加用于声明式、验证型 UI 扩展点的 Block API






