Versatile Banner

按照 使用 Theme Creator 和 Theme CLI 开始构建 Discourse 主题的初学者指南Discourse 主题开发者指南 或通过搜索“theme developer”找到的任何其他主题中所述,创建一个主题组件。

如果这没有帮助,那么您需要详细说明您正在尝试做什么。

5 个赞

您好,是否可以将“Versatile Banner”中的文本通过不同的区域设置进行转换?我想根据区域设置将用户界面从法语翻译成德语。

2 个赞

我不知道。但 Add localizable strings to themes and theme components 可能会提供一些线索。我认为你需要分叉主题组件,但我不确定,而且我最近没有看过代码,不知道我是否正确。

2 个赞

遗憾的是,Jay 提到的主题翻译功能在此组件创建之前就已经发布了,而且我认为文档直到我开始着手处理它时才发布。在这个阶段,要更新它以支持多种翻译将非常困难,而且可能会破坏现有的 Versatile Banners :frowning: 分叉方法可能是您最好的选择。

我希望在某个时候,我们会推出“Versatile Banner 2”,以解决多年来收到的一些缺失的功能和请求。

3 个赞

有什么方法可以在单个类别下的主题中显示横幅吗?Versatile banner 使用 URL 和通配符,但 discourse 在 URL 中不包含类别名称。或者,有什么方法可以将类别添加到主题 URL 中吗?

1 个赞

您可以通过将链接(例如 /c/support/*)添加到“URL 必须包含”设置中,将其添加到特定类别。

2 个赞

我知道,这就是为什么我写了“单个类别下的主题”。主题的网址类似于 /t/*,其中不包含类别名称。因此,如果您添加 /c/support/*,它将仅显示在主题列表页面上,而不是显示该类别下的主题。

2 个赞

抱歉,我完全看错了。:slight_smile: 我恐怕不知道。

3 个赞

该类别将作为类添加到 <body> 标签中,因此您可以编写 CSS 来根据类别显示或隐藏横幅。例如:

/* 默认隐藏横幅 */
.custom-banner-outlet {
    display: none;
}

/* 在“General”类别中显示横幅 */
body.category-general .custom-banner-outlet {
    display: block;
}
3 个赞

我很期待能够使用此横幅,但我需要将其可见性限制在我们某些用户组。我们使用 Discourse 来托管 LMS - 我希望它对我们现在的学生可见,但对校友不可见。这是否可行,或者是否有其他方法可以实现?

非常感谢任何建议。

1 个赞

我认为使用 CSS Classes for Current User's Groups 主题组件并为希望隐藏它的相关组添加一点 display: none; 应该可以实现。:+1:

3 个赞

非常感谢。这感觉非常接近我想要的效果,但可惜我对 CSS 完全不了解。不过还是很感谢你的建议!

1 个赞

没关系。:slightly_smiling_face: 如果您告知我们您想隐藏横幅的群组名称,我们可以调整代码以满足您的需求,并向您展示如何放置它。:+1:

例如:

.group-alumni {
.custom-banner-outlet {
    display: none;
  }
}
关于如何将其添加到您的网站的额外详细信息
  • 转到 /admin/customize/themes
  • 点击 install 然后点击 create new
  • 给它起个名字,然后选择“component”。
  • Create
  • 将其添加到您的主题
  • 点击 Edit CSS/HTML 按钮并将代码粘贴到 Common tab
  • 然后保存。:+1:

4 个赞

我们如何预览主题而不启用它?我想在不影响用户体验的情况下进行实验。我们使用的是 Discourse 托管计划,因此无法运行测试实例。

我希望有一个我忽略的开关或设置。

2 个赞
  1. 您可以添加另一个主题(可能是您“正常”主题的克隆)——称之为“测试”或其他名称。
    • 将您的正常主题保留为“默认”。
  2. 确保包含完全相同的主题组件
  3. 为您的管理员用户选择此主题

然后您可以随意修改这个主题。其他人也可以(理论上)选择该主题,但除非明确指示,否则他们不太可能这样做。

请记住,完成后选择“正常”主题!

3 个赞

我想这可能不可行,但问一下也无妨。

在一个长帖中,当你从底部开始向上滚动时,横幅会短暂出现,同时帖子流会加载旧帖子。在帖子加载完成后,由于横幅被推到帖子流的上方,会出现一个视觉上的“跳跃”。我觉得这有点刺眼,而且出现的时间不够长,无法进行交互。

理想情况下,我只想在主题标题上方看到横幅,而不是在中间。但我认为这并非易事,因为我假设横幅使用了 below-site-header 出口,所以它的行为是基于出口的,因此这种“跳跃”是预期行为。

有没有简单的方法可以知道你是否在页面的顶部?

1 个赞

这是个好建议。对我来说效果非常好。

我发现克隆的主题不需要处于活动状态。它可以在不活动时预览,因此无需担心用户会发现它。

我带着一丝好笑读了这句话。这正是我开始探索主题时的想法。我想尝试一下,就加载了几个不同的主题。论坛成员们很快就发现了它们。

为了确保您的用户看不到您正在尝试的内容,请取消选中“用户可以选择主题”选项。即使主题处于活动状态,用户也无法选择它。

3 个赞

有没有办法只向特定的信任级别显示此内容?

这样,用户就可以看到它,直到他们达到特定的信任级别,而不是使用 cookie 来记住用户显示/隐藏它的设置?

1 个赞

此横幅组件目前没有,但 Welcome Link Banner 有,如果那是一个好的替代方案的话?

2 个赞

我想使用此横幅,以便每周在我的论坛上表彰一位来自我国家的人,其中将包含被表彰者的照片和文字,但我希望将插件的访问权限授予我的版主,因为我并非每周都有空,有没有办法将此插件的访问权限授予我的版主,以便他们也能上传照片和文字?