I want to add a topic to a top menu but not on all categories, just a specific one.
What code should I write?
Thanks
Found those topics but none of them was for a specific category…
https://meta.discourse.org/t/how-to-add-external-link-on-top-menu/9508/6
https://meta.discourse.org/t/best-way-to-customize-top-menu/35336
Tested this solution a bit more (modified from this post) try this (replace “Travel” with your category name):
<script>
Discourse.ExternalNavItem = Discourse.NavItem.extend({
href : function() {
return this.get('href');
}.property('href')
});
I18n.translations.en.js.filters.bugs = { title: "Bugs", help: "Open Bugs" };
I18n.translations.en.js.filters.google = { title: "Google", help: "Navigate to Google" };
Discourse.NavItem.reopenClass({
buildList : function(category, args) {
var list = this._super(category, args);
if(category && category.name == "Travel") {
list.push(Discourse.ExternalNavItem.create({href: '/category/bug', name: 'bugs'}));
list.push(Discourse.ExternalNavItem.create({href: 'https://google.com', name: 'google'}));
}
return list;
}
});
</script>
I18n.translations.en.js.filters.bugs = { title: “Bugs”, help: “Open Bugs” };
I18n.translations.en.js.filters.google = { title: “Google”, help: “Navigate to Google” };
Those are for English-based forums…
Your forum is French, so use I18n.translations.fr instead.
Still the same thing with translations.fr
<script>
Discourse.ExternalNavItem = Discourse.NavItem.extend({
href : function() {
return this.get('href');
}.property('href')
});
I18n.translations.fr.js.filters.liste = { title: "Liste", help: "Liste des formations" };
Discourse.NavItem.reopenClass({
buildList : function(category, args) {
var list = this._super(category, args);
if(category && category.name == "Formations") {
list.push(Discourse.ExternalNavItem.create({href: '/t/liste-2-0-des-formations-sur-lautosuffisance-et-la-consommation-ecoresponsable-en-2018/306', name: 'Liste'}));
}
return list;
}
});
</script>
Try name: 'liste'instead
Where has that lovely calendar come from??
在 Discourse.NavItem 弃用后,这段代码似乎不再有效。有人在帖子中提到,自定义顶部导航链接 可以解决这个问题:
然而,该组件无法根据当前位置动态生成链接。对于我的使用场景,我希望为主页和子类别设置不同的链接,例如根据当前分类显示“未完成/已完成”标签筛选导航项。我过去可以使用以下代码,但现在已无法正常工作:
<script>
Discourse.ExternalNavItem = Discourse.NavItem.extend({
href : function() {
return this.get('href');
}.property('href')
});
I18n.translations.en.js.filters.unfinished = { title: "tbc", help: "placeholder" };
I18n.translations.en.js.filters.finished = { title: "finished", help: "placeholder" };
Discourse.NavItem.reopenClass({
buildList : function(category, args) {
var list = this._super(category, args);
var url = category ? category.url : "";
// 主菜单和两个特定类别将拥有这两个具有不同 URL 的导航项
if(!category || (category && url && (url.includes("mix") || url.includes("other")))) {
var tbc_url = category ? "/tags" + url + "/tbc" : "/tags/tbc";
var finish_url = category ? "/tags" + url + "/finished" : "/tags/finished";
list.push(Discourse.ExternalNavItem.create({href: tbc_url, name: 'tbc'}));
list.push(Discourse.ExternalNavItem.create({href: finish_url, name: 'finish'}));
}
return list;
}
});
</script>
有人能帮我根据当前的 navigation-item 组件更新这段代码吗?或者,更一般地说,我该如何找到 Discourse.NavItem 的替代方案及其当前用法?
谢谢!
它还能用吗?我试的时候不行,我们要不要加一个插件版本?
此主题已在 2222 天后自动关闭。不再允许回复。

