pfaffman
(Jay Pfaffman)
1
我有一位客户,其社区成员经常使用公共访问计算机;在测试中,他们发现许多用户很难在汉堡菜单中找到注销链接。遗憾的是,我认为没有好的方法可以教会所有人使用 ZZ。
因此:我尝试在顶部菜单中添加一个 注销 按钮。
看起来我应该能够利用 (Superseded) Add a "+ New Topic" button on every page 来替代创建新主题以进行注销,并且应该可以“轻松”地将此 createTopic 更改为 logout,然后即可完成。
https://github.com/discourse/discourse-new-topic-button-theme-component/blob/master/common/header.html#L39
我已经摸索了一个小时左右,但始终无法完全弄清楚如何实现。
4 个赞
我很乐意使用你提出的方案,
你能模仿主页按钮的 API 函数吗?

<script type="text/discourse-plugin" version="0.4">
api.changeWidgetSetting('home-logo', 'href' , 'xxx')
</script>
1 个赞
抱歉,我很喜欢这个方案,也希望能帮上忙。请问 $0 指的是什么?它是否属于 document.querySelector 的一部分?这或许能提供一些帮助。
1 个赞
pfaffman
(Jay Pfaffman)
5
我明白了!我不能保证这对您有效,但这或许能帮到您。
这是 common/header.html
<script type="text/discourse-plugin" version="0.8">
const { iconNode } = require("discourse-common/lib/icon-library");
const { logout } = require("discourse/lib/logout");
api.decorateWidget("header-buttons:before", helper => {
if (!Discourse.User.current()) return;
currentUser = Discourse.User.current();
let container = api.container,
logout_text = '登出', // 按钮文本!
logout_title = '登出',
logout_icon = 'sign-out-alt',
logout_button_class = "btn btn-default btn btn-icon-text",
logout_button_helper = "button#logout",
logout_label_helper = "span.d-button-label",
composerModal = require("discourse/models/composer").default,
composerController = container.lookup("controller:composer");
const myLogout = function () {
if (currentUser) {
currentUser.destroySession();
}
};
let currentUser = Discourse.User.current();
let currentUsername = Discourse.User.current().username;
return helper.h("span.header-links", [
helper.h(
logout_button_helper,
{
className: logout_button_class,
title: logout_title,
onclick: myLogout
},
[iconNode(logout_icon), helper.h(logout_label_helper, logout_text)]
)
])
});
</script>
14 个赞
你好,Jay,
你的代码运行得非常完美!
我在标准标题下方有一个自定义菜单。如何将该按钮移动到这里?Screenshot by Lightshot
为了创建我的自定义导航,我在“公共”部分 → 标题中添加了 HTML。
提前感谢。
1 个赞
system
(system)
关闭
9
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.