如何重新打开 header-contents 小部件?

你好!我是初学者,希望得到你的帮助。我想更改 <header>...</header> 中的内容。当我打开源文件时,我看到“header-content”小部件显示:

createWidget("header-contents", {
   tagName: "div.contents.clearfix",
   template:hbs`
     {{home-logo attrs=attrs}}
     {{#if attrs.topic}}
       {{header-topic-info attrs=attrs}}
     {{/if}}
     <div class="panel clearfix" role="navigation">{{yield}}</div>
   `,
});

我写在 common/head_tag.html 中


<script type="text/discourse-plugin" version="0.8.13">
     api.reopenWidget("header-contents", {
tagName: "div.contents.clearfix",
template:hbs`
<h1>你好!请帮帮我!!!</h1>
<div class="panel clearfix" role="navigation">{{yield}}</div>
`
});
</script>

这不起作用。请帮帮我。

1 个赞

嘿,@Deomid_Fedorov,欢迎来到 Meta :wave:

如果你查看浏览器控制台,你会看到类似这样的内容:

ReferenceError: hbs is not defined

但即使你修复了这个问题,你仍然会遇到让它工作的问题,因为模板应该在服务器上预编译,而不是在客户端。

我们有很多方法可以自定义标题。如果你告诉我你想做什么,我或许可以分享一种方法来实现你想要的结果。

3 个赞

您好,Joe!非常感谢您的及时回复。我想说我越来越喜欢 Discourse 了,但仍有一些困难我尚未克服。总的来说,我有一个大愿望:我希望能够在任何地方、任何标签中嵌入我的 HTML 代码,并且能够移除一些我认为多余的元素。

我阅读了帖子 Developing Discourse Themes & Theme Components
然而,这些说明不足以解决我的问题。

让我们来看一些具体的例子:

  1. 如何在 <header> 标签中,在 <div class="title"><div class="navigation"> 块之间嵌入我的代码?
  2. 如何阻止生成 <ul> 元素?

我想提醒您,我的英语水平并不完美,所以文本中可能存在错误。希望您能理解。

1 个赞

没关系,我们可以解决这个问题。

我知道你指的是什么。

但我不知道你在这里指的是哪个元素。

你能添加一个截图,说明你想在哪里添加新元素吗?

如果你的网站不需要该元素,你可以用 CSS 隐藏它。比如这样。

#navigation-bar {
  display: none;
}

不过,该元素为用户提供了在主题列表的不同过滤器之间轻松导航的方法,我不建议移除它——尤其是在移动设备上。

但是,你比任何人都了解你的社区。所以,如果它对你有用,那就……太好了 :+1:

2 个赞


这就是我的意思。我需要在截图中标出的位置放置我的自定义块。
我将上传另一张截图,以便您更好地理解我想要达到的结果:

再次感谢您的迅速响应。我拥有相当不错的 CSS 技能。我知道通过编写 display: none 可以隐藏元素。但我希望获得更强大的体验。我想能够像真正的专业人士一样管理模板和小部件。我猜有更正确的方法可以做到这一点。例如,重写模板或其他什么。