在第一篇帖子后插入一个glimmer组件

恐怕我在这里有点过于乐观了,@pfaffman,抱歉!我提交的 PR 会在每个帖子之间引入一个新的包装器 <div>,即使该插槽未被使用。这并不是我们真正想要做的。

或许有办法避免这个包装器……但没有什么简单的方法可以立即做到。

所以,我认为对你来说,最好的直接解决方案是复制你在 OP 中引用的 adplugin 实现。

基本上:

  1. 创建一个组件(Glimmer 或经典,无所谓),它渲染你想要的任何内容

  2. 使用 registerWidgetShim 使该组件可用作一个小部件。adplugin 示例正在创建一个名为“after-post-ad”的小部件,它渲染 PostBottomAd 组件。它将所有小部件属性 (@data) 传递到组件的 @model 参数中。

  3. 使用 api.decorateWidgetpost:after 位置渲染你的新小部件 shim。在你的例子中,如果你只想在第一个帖子显示,你可以这样做:

    api.decorateWidget("post:after", (helper) => {
      if (helper.widget.model.post_number === 1) {
        return helper.attach("my-widget-shim");
      }
    });
    

当我们最终将主题页面 Glimmer 化时,你需要移除小部件 shim/装饰,并用插件插槽替换它。这应该相当容易,因为你在组件中的所有显示逻辑都可以在插件插槽中重用。

让我们知道你的进展!很乐意帮助解答任何后续问题——我知道这里有很多活动部件。

3 个赞