恐怕我在这里有点过于乐观了,@pfaffman,抱歉!我提交的 PR 会在每个帖子之间引入一个新的包装器 <div>,即使该插槽未被使用。这并不是我们真正想要做的。
或许有办法避免这个包装器……但没有什么简单的方法可以立即做到。
所以,我认为对你来说,最好的直接解决方案是复制你在 OP 中引用的 adplugin 实现。
基本上:
-
创建一个组件(Glimmer 或经典,无所谓),它渲染你想要的任何内容
-
使用
registerWidgetShim使该组件可用作一个小部件。adplugin 示例正在创建一个名为“after-post-ad”的小部件,它渲染PostBottomAd组件。它将所有小部件属性(@data)传递到组件的@model参数中。 -
使用
api.decorateWidget在post:after位置渲染你的新小部件 shim。在你的例子中,如果你只想在第一个帖子显示,你可以这样做:api.decorateWidget("post:after", (helper) => { if (helper.widget.model.post_number === 1) { return helper.attach("my-widget-shim"); } });
当我们最终将主题页面 Glimmer 化时,你需要移除小部件 shim/装饰,并用插件插槽替换它。这应该相当容易,因为你在组件中的所有显示逻辑都可以在插件插槽中重用。
让我们知道你的进展!很乐意帮助解答任何后续问题——我知道这里有很多活动部件。