弃用搜索横幅主题组件

在过去的几个月里,我们一直在开发 Discourse 核心产品中的一个欢迎横幅功能。这个核心欢迎横幅功能会欢迎新老访客访问您的社区,并帮助他们轻松查找与其需求和兴趣相关的内容。随着这一新的核心横幅功能的推出,我们现在将弃用搜索横幅主题组件,以减少产品功能的复杂性,并确保所有 Discourse 用户都能持续受益于核心功能的改进。

在本主题中,我们将介绍弃用对当前使用搜索横幅主题组件的用户意味着什么。

如果您是托管用户…

我们将于 2025年11月20日 开始将托管用户从搜索横幅组件迁移到欢迎横幅功能。如果您目前正在使用该组件,您将收到一封包含您所在计划层级的确切迁移时间的邮件。

此次迁移将把您为主题组件更新的任何站点文本(即 search_banner.headlinesearch_banner.subheadsearch_banner.search_button_text)以及 show onplugin outletbackground image 主题组件设置的值,复制到核心功能设置中。

我们的目标是尽量减少此次迁移的可见影响,使核心功能创建的横幅与主题组件创建的横幅看起来相同。带有图片的社区可能会注意到图片位置的轻微偏移,这可以通过裁剪图片来解决,以确保您希望在横幅中显示的内容居中。

迁移完成后,主题组件将被禁用,您可以安全地从 主题与组件 页面(/admin/config/customize/components)中删除它。

如果您是自托管用户…

您应计划在 2025年12月15日 前自行从主题组件迁移到核心功能。您可以手动迁移或使用我们提供的脚本进行迁移。

手动迁移

以下是搜索横幅主题组件的站点文本和设置与核心欢迎横幅功能相同功能的映射关系:

设置描述 搜索横幅主题组件 欢迎横幅核心功能
欢迎横幅上显示的标题文本。 search_banner.headline 站点文本 js.welcome_banner.header.anonymous_membersjs.welcome_banner.header.logged_in_members 站点文本
欢迎横幅上显示的副标题文本。 search_banner.subhead 站点文本 js.welcome_banner.subheader.anonymous_membersjs.welcome_banner.subheader.logged_in_members 站点文本
横幅上搜索按钮使用的文本。\* search_banner.search_button_text 站点文本 js.welcome_banner.search_placeholder 站点文本
用于确定在哪些页面显示欢迎横幅的设置。 show on 主题组件设置 欢迎横幅页面可见性 站点设置
用于确定欢迎横幅在页面上的位置的设置。 plugin outlet 主题组件设置 欢迎横幅位置 站点设置
欢迎横幅上使用的背景图片。 background image light 主题组件设置 欢迎横幅图片 站点设置

\* 注意:核心欢迎横幅功能不支持显式的搜索按钮,因此我们建议将此文本映射到可自定义的搜索字段占位符文本,以获得类似的结果。

脚本迁移

迁移包括三个必须按以下顺序运行的 rake 任务:

  1. 迁移组件设置:
    themes:advanced_search_banner:1_migrate_settings_to_welcome_banner
  2. 迁移组件翻译:
    themes:advanced_search_banner:2_migrate_translations_to_welcome_banner
  3. 启用核心横幅,从使用该组件的主题中排除,并禁用组件:
    themes:advanced_search_banner:3_exclude_and_disable

在容器中运行的文件 \u003crandom_name\u003e.sh

  1. task_1.sh
#!/bin/bash

cd /var/www/discourse && rake themes:advanced_search_banner:1_migrate_settings_to_welcome_banner
  1. task_2.sh
#!/bin/bash

cd /var/www/discourse && rake themes:advanced_search_banner:2_migrate_translations_to_welcome_banner
  1. task_3.sh
#!/bin/bash

cd /var/www/discourse && rake themes:advanced_search_banner:3_exclude_and_disable

建议逐个运行每个 rake 任务,以更好地控制迁移过程。

我们还提供了一个方便的任务 themes:advanced_search_banner:migrate_all,可按顺序运行所有三个任务,但请自行决定是否使用。

7 个赞

你的意思是类似这样吗?

#!/bin/bash
cd /var/www/discourse && rake themes:advanced_search_banner:migrate_settings_to_welcome_banner  && rake themes:advanced_search_banner:migrate_translations_to_welcome_banner &&  rake themes:advanced_search_banner:exclude_and_disable

我觉得很多自托管用户可能无法从 <task_1_2_or_3> 推断出具体该怎么做。

这些 Rake 任务有可能失败吗?我们能否一次性全部运行?如果是这样,为什么不直接提供一个能完成所有任务的 Rake 任务?

也许用户更希望看到这样的方式:

docker exec -t app bash -c `cd /var/www/discourse && rake themes:advanced_search_banner:migrate_settings_to_welcome_banner  && rake themes:advanced_search_banner:migrate_translations_to_welcome_banner &&  rake themes:advanced_search_banner:exclude_and_disable`

那么,对于那些不知道如何操作的用户来说,他们是不是就会丢失所有旧设置和自定义文本?

那些直到三月才升级的用户,届时还能运行这些 Rake 任务吗?我不太清楚 12 月 15 日这个时间点的重要性在哪里。

3 个赞

我将让创建该脚本的同事来协助回答您问题的第一部分,但关于最后两个问题:

不会。
脚本是一种选择;手动迁移是另一种选择。这就是为什么我们提供了非常清晰的说明,解释主题组件的设置/字符串如何映射到欢迎横幅的设置/字符串。

12月15日是我们完成托管客户迁移的时间,也是我们正式停止支持/维护搜索横幅组件的时间。我们建议此组件的其他用户在此之前完成迁移,以免未来主题组件与 Discourse 核心不兼容时措手不及。

如果人们选择等到更晚,他们仍然可以运行这些任务或手动迁移,但在此期间,他们将运行一个不受支持的主题组件。

4 个赞

正确,所提供的命令将按顺序依次运行这三个任务。请注意,我们为每个任务添加了编号,以表明预期的执行顺序。

谢谢,我们已更新了脚本迁移部分,使其更清晰明了。

我们无法保证 100% 成功,但我们已确保失败的可能性极低。

可以,我们已添加了一个便捷任务:themes:advanced_search_banner:migrate_all

2 个赞

太棒了!我认为这会有很大帮助。像我们这样的人不介意在容器内运行一些简单的任务,但大多数自托管者则不然。

如果可能的话,将主题组件更新为在管理面板上有一个指向这里的折旧链接,那么这将帮助他们知道此主题的存在。

我想做的是找到一种方法来找出主题组件是否已安装,最好是通过 API。我想我会拉取主题组件的 JSON,通过 jq 运行它并按组件名称过滤。我认为这应该可行,我的仪表板有一个 API 密钥。然后我就可以让 ansible 在容器内运行 rake 任务了!

2 个赞

官方主题是否会预先更改自动安装的组件,以防止有人在不知情的情况下安装组件,而将来主题需要手动配置欢迎横幅才能正常工作?

2 个赞