(已取代)从主Discourse标志链接到外部网站

:information_source: Discourse 现在提供了一个 official 主题组件来支持此用例:

原文

我不确定将 Discourse 主徽标链接到外部网站是否对大多数网站来说是个好主意,但有些情况,当用户单击 Discourse 主徽标时,将其引导至外部网站是合理的。如果你想这样做,以下是方法。

创建一个新的主题组件

:warning: 注意,本指南的这一部分将很快提取到一个专门的主题中。

单击“管理”/“自定义”/“主题”页面侧边栏中的“组件”链接。然后,从侧边栏底部单击“安装”按钮:

在打开的模态窗口中,单击“创建新”链接:

为你的主题组件命名,并确保选择了“组件”类型。然后单击“创建”按钮:

然后你将被带到主题组件的主页。

将代码添加到主题组件

需要将覆盖主徽标默认 URL 的代码添加到主题组件的 HEAD 部分。要访问组件的编辑器,请单击“编辑 CSS/HTML”按钮:

在打开的编辑器中,单击“Head”链接:

根据各种条件,将以下代码片段添加到编辑器的 HEAD 部分,以修改主徽标指向的 URL。请注意,你需要将代码中的 https://example.com 替换为你外部网站主页的完整 URL:

  • 更改链接到静态 URL:
<script type="text/discourse-plugin" version="1.3.0">
    api.registerValueTransformer("home-logo-href", () => "https://example.com")
</script>
  • 根据当前用户返回动态 URL:
<script type="text/discourse-plugin" version="1.3.0">
    api.registerValueTransformer("home-logo-href", () => {
      const currentUser = api.getCurrentUser();
      return `https://example.com/${currentUser.username}`;
    })
</script>
  • 根据主题组件设置返回 URL:
<script type="text/discourse-plugin" version="1.3.0">
    api.registerValueTransformer("home-logo-href", () => {
      return settings.example_logo_url_setting;
    })
</script>

单击“保存”按钮以保存你的更改。完成后返回主题组件的主页,然后单击“全部添加到主题”链接,将新组件添加到你网站的所有主题中:

11 个赞

:+1:非常感谢分享!


我已将其添加到 header 标签中,但未生效

对我来说,它运行得非常好。
您是否使用 Ctrl + F5 对您的网站进行了“硬刷新”?


我尝试了 command+R 甚至开启了无痕模式,但它仍然不起作用

1 个赞

感谢您分享这个教程!我需要为社区更改主标题徽标,使用代码片段可以完美实现。

但是,我发现它也会更改当标题显示在标题栏时替换完整徽标的小徽标的链接。例如,这里元上的仅图标:

image

这感觉很不直观。是否可以向函数添加一个额外的参数,使其不影响小徽标?

因为 Upcoming Header Changes - Preparing Themes and Plugins

<script type="text/discourse-plugin" version="1.34.0">
    api.registerValueTransformer("home-logo-href", () => "<full_url_of_your_website_homepage>");
</script>
2 个赞