nildarar
(Nildarar)
1
你好,
有人能帮我将话题发起人(OP)的用户名添加为 <body> 的 CSS 类吗?
我需要编写一些样式,并且需要为某些用户名设置不同的属性。
有些用户要求我们从他们的个人资料中删除该话题,但并未坚持要完全删除。因此,我们创建了一个匿名用户来更改这些话题的所有权。
现在,如果话题发起人(OP)是匿名用户,我们需要对页面元素进行修改,包括隐藏引用、提及等内容。
<script type="text/discourse-plugin" version="0.8">
api.onPageChange((url, title) => {
if (/^\/t\/.*$/.test(url)) {
const opUser = API.????? <--------------------------- 如何获取 OP 用户对象
if (opUser && opUser.id === 1234) {
document.querySelector("body").classList.add("anon");
}
} else {
document.querySelector("body").classList.remove("anon");
}
});
</script>
nildarar
(Nildarar)
2
有没有办法通过 JavaScript API 获取主题信息?
nildarar
(Nildarar)
4
调用 api.getCurrentUser() 方法会返回当前登录用户。我正在寻找一个能获取主题信息(包括主题所有者)的方法。
nildarar
(Nildarar)
6
不客气,我觉得这比问一个简单的问题要复杂一些:+1:
nildarar
(Nildarar)
7
为了解决我的问题,我通过阅读以下页面找到了解决方案:
https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/app/lib/plugin-api.js#L1138-L1140
<script type="text/discourse-plugin" version="0.8">
const specialTopicUserId = 1000;
api.decorateTopicTitle((topicModel, node, topicTitleType) => {
if (topicModel && topicModel.user_id === specialTopicUserId) {
$("#topic").addClass("anon");
}
});
</script>