群组导航侧边栏菜单部分

:information_source: 摘要 为特定用户组显示自定义导航菜单部分
:hammer_and_wrench: 仓库 https://github.com/Lillinator/group-menu-sections
:question: 安装指南 如何安装主题或主题组件
:open_book: Discourse 主题新手? Discourse 主题使用入门指南

安装此主题组件

此主题组件允许仅向特定用户组(包括信任级别和默认组)显示 Discourse 自定义导航(侧边栏)菜单部分。该组件允许使用多达八个自定义菜单部分,并且每个指定部分可以设置任意数量的用户组。使用连字符分隔的小写菜单部分名称(例如,“超级用户菜单” = superuser-menu,“员工菜单” = staff-menu)。用户组是从您的可用组中通过下拉选择字段选择的。

请注意,此组件中指定的自定义部分必须设置为公开且对所有人可见。要创建新的组导航菜单部分,请像平常一样创建一个公共部分,然后在组件设置中包含它以及您希望它可见的用户组。您可以在设置您的自定义部分之前在组件设置中指定该部分,只要使用正确的名称即可——这将防止该部分在您用组件限制它之前对所有人显示。

尽管此组件旨在用于自定义部分,但它也可用于导航菜单的任何现有部分(例如,类别、标签、频道、个人聊天,甚至现在已弃用的“社区”顶部部分)。例如,您可以向超级用户和员工组显示自定义菜单,同时向新用户组(trust_level_0)隐藏标签和频道。如果您只想向论坛成员显示特定菜单部分(对匿名用户隐藏),您可以将其设置为对 trust_level_0 组显示。

:arrow_right: 对于希望用于此组件的任何组,其组可见性必须在组交互设置中设置为“所有人”。


设置:

设置列表
名称 描述
menu 1 要向以下设置中的用户组显示的自定义菜单部分 1。使用小写 slug 名称。
display menu 1 for these groups only 菜单 1 的可用组的下拉选择器。组可见性必须在组交互设置中设置为“所有人”。
menu 2 - 8 要向相应组设置中的用户组显示的自定义菜单部分 2 - 8。
display menu 2 - 8 for these groups only 菜单 2 - 8 的可用组的下拉选择器。
hide custom menus globe icon 隐藏员工的地球图标(不适用于非员工)

截图:

必需的组可见性设置

显示第一个设置和组选择器的截图

地球图标隐藏设置


请注意,此组件通常旨在用于侧边栏模式下的导航菜单,但目前也适用于标题下拉菜单。它也适用于桌面和移动视图。

25 个赞

太棒了,我真的很需要这个,非常有帮助,非常感谢。我喜欢你的作品和你的 Discourse 组件。

2 个赞

谢谢你,Tiago!:blush:

2 个赞

您好,感谢分享!

此组件是否可用于在默认部分的顶部添加仅对特定组可见的自定义链接?

不,此组件仅用于分区,不用于链接。不过,您可以创建一个包含单个链接的自定义分区。

1 个赞

也许我以后会添加此功能。如果您确实想要此功能,我可以为您创建一个专用组件或向您展示如何实现它。

4 个赞

如何做相反的操作,仅向匿名用户显示某个部分?我想为匿名用户和论坛成员(登录用户)创建单独的部分。

哦,好问题。我会这样做:

步骤 1:

创建一个新的自定义导航菜单版块,例如命名为“匿名菜单”(你可以随意命名,但请记住名称),并将其设为公开版块(在模态框底部勾选复选框)。

步骤 2:

然后在你创建的主题或主题组件的 Common-CSS 中插入此 CSS 代码。将“anon-menu”替换为你第一步创建的菜单版块名称的 slug(例如:Custom Section = custom-section)。

.sidebar-section-wrapper.sidebar-section[data-section-name="anon-menu"] {
        display: none;
}

.anon .sidebar-section-wrapper.sidebar-section[data-section-name="anon-menu"] {
        display: block;
}

事实上,我喜欢这个用例场景,并将在下次更新组件时将其添加进去。我正在为组件设置构建一个 JSON 模式模态,以便更直观地进行配置。

1 个赞

谢谢。这比我预期的要复杂,仅仅从维护的角度来看,几个月后我不会记得我做了什么。

编辑:我创建匿名用户组的尝试不起作用,因为这只适用于匿名功能,即登录用户在登录后切换到匿名模式,而不是真正匿名的用户(没有账户的用户)。

哦,非常抱歉,我误解了您的意思——我没意识到您指的是匿名模式,我以为您说的是未登录用户。 :woman_facepalming:t2:

另一个建议是,如果它能读取组列表并提供一个下拉菜单,从中选择可用组,这样在输入组名时就不会出现拼写错误,那就太好了。

1 个赞

是的,没错,我指的是未登录用户,那些访问网站但未登录或没有账户的用户。

我上面尝试过一些方法,但不起作用,因为那是完全不同的功能(这造成了不必要的困惑,我很抱歉)。

如果您使用我上面提供的方法,它应该可以正常工作。而无需使用那个匿名的其他模式功能 :slight_smile:

不过,下次更新此组件时,我会添加一些专门针对匿名用户的选项,更新应该很快就会到来。

1 个赞

我将等待您的主题更新,不习惯手动自定义主题,这对于“外行”来说将是一场维护噩梦 :slight_smile:

只是在此发布一个链接到我的另一个回复和解决方案,供其他可能在此看到您的问题的人参考。

我将在即将发布的导航菜单修改器组件更新中添加此功能。

1 个赞

我已更新此组件,其中包含组下拉选择框,这些选择框会填充可用组。还增加了菜单部分的数量至八个,并添加了一个地球图标隐藏器。

2 个赞

您好!
我刚刚安装了这个很棒的主题组件 :ballot_box_with_check:

在设置过程中,我有一个问题:

  1. 在上面的说明中,您给出了菜单部分名称的示例,例如 Sectionname Menu=sectionname-menu

image


在我的例子中,菜单部分的名称是用俄语写的,例如,“Сотрудники”(英文:Staff)。


menu 1 行中,我应该如何写这个部分名称?俄语字母还是拉丁字母?
也许是这样:

image

或者这样

image

menu”这个词是文本中必需的属性吗? :sweat_smile:

我尝试了所有方法,但仍然无效。

我已将所有组设置为公开,正如您在说明中所述。

  1. 似乎我无法使用此主题组件为特定组设置“社区”部分的可见性?
1 个赞

哦,不是的,我只是把它作为示例菜单名称的一部分。例如,如果菜单名称是“User Info”,那么它将是“user-info”。最好的方法是在创建菜单部分时,在“Section title”(部分标题)字段中使用名称,并将其转换为小写字母和用连字符替换空格的 slug 格式。

然后在主题组件设置中,进行如下配置:

我认为是俄语?无论在“Section title”(部分标题)字段中是什么,我都在第一个截图中标出了它,但要使用小写字母和用连字符替换空格。

我刚刚在我截图中的配置进行了测试,它有效。

你有没有在任何时候将社区部分重命名为俄语?如果不是,那么使用“community”应该可以工作(我假设你指的是顶部未命名的默认菜单部分)。

1 个赞

如果我用拉丁字母写章节名称,那么一切正常:


**
**

如果我用西里尔字母(俄语)写章节名称,则不起作用。