类别高亮显示

此主题组件允许您在 Discourse 中高亮显示一个或多个类别。您可以:

  1. 为特定类别设置特殊的背景样式
  2. 在标题栏中添加具有相同特殊样式的类别链接

一个典型的使用场景是用于包含“高级(Premium)”内容的类别。

:wrench: 如何安装

:computer: 获取代码


类别导航与标题标签

类别页面

配置

类别高亮主题组件有一个主要设置:“高亮类别(highlight categories)”。您可以在“类别高亮器”主题组件的设置面板中找到该设置。

每个您希望高亮的类别在该设置中都有对应的列表项。每个项目的格式如下:

category_slug~background~text_color~header_label~header_label_mobile~parent_slug~alternate_link

该格式的一个示例如下:

premium~linear-gradient(319deg, #cdedfd 0%, #ffec82 37%, #ffcfd2 100%)~#88562e~:star:\u0026nbsp\u0026nbspPremium~:star:

共有六个可能的值,每个值之间用 ~(波浪号)分隔。让我们依次查看每个值。

类别 Slug

这是您希望高亮的类别的“slug”。您可以在类别设置中找到它。

如果您需要高亮一个子类别,则需要使用“父”类别的 slug,后跟子类别的 slug,两者之间用 / 分隔。

例如,如果有一个名为 videos 的 premium 子类别,且您希望高亮它,则应使用:

premium/videos

权限

请注意,只有对高亮类别拥有 read 权限的用户才能看到高亮效果,包括标题栏标签。您可以在类别的“安全”设置中更改类别权限。

背景

这是一个将应用于类别徽章 background CSS 属性的值。您可以使用任何该属性支持的条目。

background - CSS: 层叠样式表 | MDN

background 简写 CSS 属性可同时设置所有背景样式属性,例如颜色、图像、原点、大小或重复方法。

例如:linear-gradient(319deg, #cdedfd 0%, #ffec82 37%, #ffcfd2 100%)

文本颜色

这是一个将应用于类别徽章 color CSS 属性的值。这将影响文本的颜色。您可以使用任何该属性支持的条目。

color - CSS: 层叠样式表 | MDN

color CSS 属性设置元素文本及其文本装饰的前景色值,并设置 currentcolor 值。currentcolor 可用作其他属性的间接值,并且是其他颜色属性(如…)的默认值。

在我们的示例中,该值为 #88562e

标题标签

该值有两个作用。它决定了:

  1. 高亮类别是否显示标题标签;以及
  2. 该标签的内容。

如果您不需要标题标签,则完全不要包含此值。

该值支持文本、HTML 实体和表情符号。

此处标题标签的值为::star:\u0026nbsp\u0026nbspPremium。这包括:

  1. 星星表情符号的短代码::star:
  2. 两个不换行空格 HTML 实体(每个添加一个空格):\u0026nbsp\u0026nbsp
  3. 我们的标签文本:Premium

您可以在这里找到完整的 表情符号短代码列表,以及完整的 HTML 实体列表

移动端标题标签

该值也有两个作用。它决定了:

  1. 高亮类别是否显示移动端标题标签;以及
  2. 移动端标题标签的内容。

其用法和格式与标题标签相同。需要注意的是,移动端的可用空间较少,因此明智的做法是仅使用一个表情符号或简短单词以节省空间。

父类别

您可以通过设置项目的“父级”来在标题栏中创建一个下拉菜单。在第六个位置插入一个类别 slug,相应的项目将成为该类别在标题栏中的子菜单项。与第一个项目一样,请确保在此处使用类别 slug,您可以从类别设置对话框中获取该 slug。

替代链接

默认情况下,每个类别项链接到其对应的类别。您可以通过在设置块的第六个位置添加 URL 来更改链接。

25 个赞

如此简单,却如此有力。我早就计划用 CSS 对论坛的某些部分进行样式调整,以突出显示付费用户类别的帖子。现在一切都变得轻松多了。感谢你们的工作,这太棒了!

你们是否考虑过在分类选择器中激活“所有分类”时,在主题列表中突出显示相关主题?例如,在主题标题前添加星号?

2 个赞

高亮功能在徽章出现的所有位置都有效,因此它已经存在于列表中 :slight_smile:

分类页面

详见 https://try.thepavilion.io

4 个赞

@Angus,你是一位卓越的开发者,能与你合作真是莫大的荣幸。感谢你的创造力、专业精神和严谨态度。你是 Discourse 社区的一份珍贵礼物。

6 个赞

这个组件相当酷,干得漂亮 :+1:

7 个赞

哦,这感觉太……:sparkles: 高级

10 个赞

乍一看我还以为有个侧边栏。采用这种风格的侧边栏应该会很不错。

组件很棒,非常好。: +1:

@angus 我想知道如何为高亮背景设置圆角边框,提前感谢。

1 个赞

由于类别徽章出现在各种上下文中,这稍微有点复杂。我可能会添加一个类来简化这个过程,但目前你可以这样做:

### 标题按钮
.highlight-category-button {
    border-radius: 4px;
}

### 徽章
.badge-wrapper[class*=" updates "],
.extra-info-wrapper .categories-wrapper .badge-wrapper[class*=" updates "],
.category-title-link-component[class*=" updates "] .category-text-title,
.select-kit.combo-box.category-drop .category-row[class*=" updates "] .badge-wrapper {
    &:before {
        border-radius: 4px;
    }
}

示例中的“updates”是类别标识符。

示例:https://try.thepavilion.io/

2 个赞

该组件现已支持类别下拉菜单。:tada:

如果您将父类别的 slug 作为设置中的第 6 项,它将显示一个下拉菜单,其中子类别作为下拉选项。

注意:如果您不想使用第 5 项(即“移动端标题”),则必须将其留空。

感谢 @outofthebox 对此功能的赞助。

4 个赞

太棒了,@fzngagan!The Pavilion 团队非常出色。

2 个赞

是否有可能不仅高亮 slug,还高亮 .select-kit .select-kit-row.is-highlighted

我觉得这样对眼睛会更友好。

我赞同评论中的观点:你的工作太棒了。我正在查看 Pavilion 网站,并测试了很多内容。

希望我们能尽快着手实施我们为社区构思的一些想法:ok_hand:

首先,感谢这个出色的组件。

我认为如果在主题列表视图中,主题标题和分类徽章之间有更多空白,效果会更好。这能在组件内实现吗?看起来这些框比默认的框视图稍大一些,这对某些完美主义者来说看起来有点难受,哈哈。

移动端的视图比桌面端更好:

这个还能用于最新的测试吗?如果可以,你那里还有存档的文档吗?@angus

我已将文档粘贴到上面的 OP 中。如果不起作用,请告诉我。

1 个赞

太棒了!尤其是渐变部分对于实现我的目标至关重要!非常感谢!

1 个赞

是否还有人在使用这个 TC,并且可能找到了以下问题的解决方案?
在 2.9.0.beta9 和 beta10 上,TC 导致系统类别元数据从类别下拉字段和主题列表中消失。

论坛日志为空,控制台日志中唯一的内容是:

[THEME 190 'Category Highlighter'] 为了防止测试出错,请在 `modifyClass` 调用中添加 `pluginId` 键。这将确保修改只应用一次。 3 plugin-api.js:19