修改搜索结果

我希望能够调整搜索结果(右上角放大镜类的下拉菜单)的一些样式。现在它似乎是动态生成组件(在 app/assets/javascripts/discourse/app/lib/search.js 中),而不是使用模板。我似乎无法做到:

      api.modifyClass("component:search-result-post", {
        didInsertElement() {
          this._super(...arguments);

        },
      });

或者类似的东西。

我该如何获得一个触发器/事件并修改一些生成的 HTML?

2 个赞

理查德,您好:

您能详细说明一下您在寻找哪些修改吗?

作为起点,我认为您需要调整:

api.reopenWidget(`search-result-post`, {
    html(attrs) {
        //
    }
})

这里是 post,但您也有:tagcategorygroupusertopic

4 个赞

谢谢你的帮助!!!

2 个赞

更新:该小部件中的 HTML 生成相当复杂,并且有许多外部依赖项。我也不想将所有这些代码复制到我们的插件中,所以我最终这样做了

      api.reopenWidget(`search-result-topic`, {
        html(attrs) {
          const html = this._super(attrs);
          // 按我们认为合适的方式修改 HTML
          return html;
        }
      });

修改已生成的 HTML 可能不是最优雅的方法,但它使我无需从核心复制大块代码到插件中,从而使插件能够更好地应对未来的核心更新。

1 个赞

是的,我注意到当我尝试在我这边进行操作时也是如此。我认为你在这里没有太多选择。

1 个赞

此主题在上次回复后 30 天自动关闭。不再允许回复。