无法点击“Banner”主题

我的网站 http://Bathinda.xyz 顶部有一个横幅。(我不太习惯置顶话题,通常只设置 1 个横幅和 1 个全局置顶。)

但是,如果任何用户想要进入该话题/帖子,却无法点击横幅。
由于该话题的第一条帖子是一个 YouTube 视频链接,访客无需进入该话题即可查看该视频。但从横幅点击并进入该话题似乎无法实现(我也尝试过另一个不含 YouTube 视频的话题)。
我还尝试以未登录用户和其他用户身份访问该话题。

另外,我曾点击“X”为自己移除了横幅,但之后无法再让它重新显示,即使我先将其取消横幅设置,然后再重新设为横幅也不行。请告诉我如何让它再次以横幅形式显示给我自己。

(抱歉,该网站和话题/帖子内容是印地语。)

我以前通过在同一帖子中使用指向同一主题的超链接来解决这个问题。例如,点击此处返回该主题。阅读更多。

:slight_smile:

这是一个不错的变通方法。
不过,为此我几乎得把链接放在帖子的最上方(以便用户轻松查看和点击),而当用户阅读帖子、点击该链接再返回时,这确实会显得有些奇怪。

尽管如此,在问题解决之前,这仍然是一个非常不错的建议。

如果一个主题下有多篇帖子/回复,你可以在主题的第一篇帖子中写入超链接,并在末尾添加 /2 来链接到第二篇帖子。换句话说,这样会直接跳转到第二篇帖子,而不会链接回主题顶部/引言帖子。这可能仍然会显得有点奇怪,但效果是仅仅向下滚动页面。虽然不是完美,但也不算差,我想。

@Bathinda 你可以这样做:

以下是帖子的内容:

这将是一个带有链接的横幅主题,该链接会显示在横幅中,但不会显示在帖子正文中。

[访问主题](https://forums.example.com/t/test-thread/26?banner-topic)

技巧是在链接末尾添加一个查询字符串,Discourse 会忽略它,但你可以将其用于 CSS。因此,https://forums.example.com/t/test-thread/26?banner-topic 会带你到 https://forums.example.com/t/test-thread/26,你可以使用 ?banner-topic 查询参数在 CSS 中识别并隐藏你想要隐藏的链接。

a[href$="?banner-topic"] {
    display:none;
}
#banner-content a[href$="?banner-topic"] {
    display:block;
}

虽然不太用户友好,但这是一个不错的变通方法。

顺便问一下,如果我想用这段代码创建一个主题组件,我应该把代码放在哪里?是、还是其他位置?

忘掉我之前的解决方案吧。我认为这个应该能自动完成。将以下内容放入你的 Common </head> 中:

<script type="text/x-handlebars" data-template-name="components/discourse-banner">
{{#if visible}}
  <div class="row">
    <div id="banner" class={{overlay}}>
      {{d-button icon="times" action="dismiss" class="btn btn-flat close" title="banner.close"}}
      <div id="banner-content">
        {{{content}}}
        <p><a href="{{banner.url}}">转到主题</a></p>
        {{#if currentUser.staff}}
          <p><a href="{{banner.url}}">{{{i18n "banner.edit"}}}</a></p>
        {{/if}}
      </div>
    </div>
  </div>
{{/if}}
</script>

<a href="{{banner.url}}">转到主题</a> 添加了链接,你可以将“转到主题”替换为你想要的任何文本。你可以为链接添加一个类 <a href="{{banner.url}}" class="banner-link">转到主题</a>,然后在你的通用 CSS 中为 .banner-link 设置样式。

下面的代码使整个横幅可点击,而不是添加一个单独的链接:

<script type="text/x-handlebars" data-template-name="components/discourse-banner">
{{#if visible}}
  <div class="row">
    <a href="{{banner.url}}" class="banner-link">
      <div id="banner" class={{overlay}}>
        {{d-button icon="times" action="dismiss" class="btn btn-flat close" title="banner.close"}}
        <div id="banner-content">
          {{{content}}}
            {{#if currentUser.staff}}
          <p><a href="{{banner.url}}">{{{i18n "banner.edit"}}}</a></p>
        {{/if}}
      </div>
     </div>
    </a>
  </div>
{{/if}}
</script>

非常感谢您抽出时间。

如果您能告诉我/斜体显示/区分出这段代码中可由我自定义的单词,我将不胜感激。或许可以将这些单词单独列出,或用不同颜色标注。

据我理解,在您上一条回答中,您提供了两种略有不同但差异不大的方法,用于在横幅内创建链接(或使整个横幅可点击)。在后一种情况下,我认为我不需要在主题/帖子本身中包含/嵌入任何链接。
谢谢。

以下是它的样子

只有工作人员能看到“编辑此横幅”链接,但它与“前往主题”链接到同一位置,所以我应该将其完全移除。那么我们将得到如下内容:

<script type="text/x-handlebars" data-template-name="components/discourse-banner">
{{#if visible}}
  <div class="row">
    <div id="banner" class={{overlay}}>
      {{d-button icon="times" action="dismiss" class="btn btn-flat close" title="banner.close"}}
      <div id="banner-content">
        {{{content}}}
        <p><a href="{{banner.url}}">前往主题</a></p>
      </div>
    </div>
  </div>
{{/if}}
</script>

您可以编辑的行是
<p><a href="{{banner.url}}">前往主题</a></p> 您可以将前往主题替换为您想要的任何文本。您还可以在横幅帖子的 {{{content}}} 之前或之后添加任何您想要的内容。