是否可以更改员工通知的图标?

是否可以通过 CSS 或某个尚未找到的设置来更改“员工通知”中使用的图标?我们更希望能将其替换为自定义图片,而不是 FontAwesome 图标。

1 个赞

我们没有为此提供设置,我认为仅通过 CSS 实现比较困难,但您可以创建一个主题组件来替换它。

在 CSS 中,您可以隐藏旧图标:

.post-notice {
  .d-icon-user-shield {
    display: none;
  }
}

在 JavaScript 中(将此代码放入主题组件的 <head> 部分),您可以装饰通知并添加新图标:

<script type="text/discourse-plugin" version="0.8">
  const { iconNode } = require("discourse-common/lib/icon-library");
  api.decorateWidget('post-notice:before', helper => {
    return iconNode('heart');
  });
</script>

或者,如果您想替换为图片:

<script type="text/discourse-plugin" version="0.8">
  api.decorateWidget('post-notice:before', helper => {
    return helper.h('img', {
      src: 'https://www.discourse.org/a/img/home-spot-1.png',
      style: 'margin-right: 0.65em',
      height: 30,
      width: 30
    });
  });
</script>

借助主题和主题组件,您可以实现的功能几乎无限。如果您想进一步了解,我们提供了相关资源:

12 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.

我已经试过了;第一个 JS 代码片段需要稍作更新。

现在需要将其放入主题组件(或主题)的 JS 选项卡中:

import { apiInitializer } from "discourse/lib/api";
import { iconNode } from "discourse-common/lib/icon-library";

export default apiInitializer("0.11.1", (api) => {
  api.decorateWidget("post-notice:before", () => {
    return iconNode("heart");
  });
});

抱歉,我没看如何使用图片。

3 个赞

添加到我的主题后,我看到了一个警告,因为 Upcoming post stream changes - How to prepare themes and plugins

我尝试这样做是因为我想知道它是否仅影响员工笔记,还是也影响新用户和回访用户笔记,因为这些都是帖子通知。
它会影响所有帖子通知,而上面的 CSS 只会隐藏盾牌。因此,您在新用户和回访用户通知上会看到两个图标。

1 个赞

那这一切都有些不尽如人意!!

我急于发布那条消息,却忘了删除 api.decorateWidget。我一定是在没注意的情况下忽略了我网站上的错误。

我相信 CSS 可以被更好地定位,但我刚刚发现了 Quote Callouts - 我认为这能更好地满足我的用例。

3 个赞