Ich fürchte, ich war hier etwas zu optimistisch, @pfaffman, Entschuldigung! Der PR, den ich gemacht habe, würde einen neuen Wrapper <div> zwischen jedem einzelnen Beitrag einführen, auch wenn der Outlet nicht verwendet wurde. Das wollen wir eigentlich nicht tun.
Es mag Wege geben, den Wrapper zu vermeiden … aber nichts Einfaches, das wir sofort tun können.
Daher denke ich, dass die beste sofortige Lösung für Sie darin besteht, die Implementierung des Adplugins zu kopieren, auf die Sie im OP verwiesen haben.
Im Wesentlichen:
-
Erstellen Sie eine Komponente (Glimmer oder klassisch, das spielt keine Rolle), die das gewünschte rendert.
-
Verwenden Sie
registerWidgetShim, um diese Komponente als Widget verfügbar zu machen. Das Adplugin-Beispiel erstellt ein Widget namens “after-post-ad”, das die KomponentePostBottomAdrendert. Es übergibt alle Widget-Attribute(@data)an das@model-Argument der Komponente. -
Verwenden Sie
api.decorateWidget, um Ihren neuen Widget-Shim in der Positionpost:afterzu rendern. In Ihrem Fall, da Sie ihn nur beim ersten Beitrag wünschen, könnten Sie etwas wie folgt tun:api.decorateWidget("post:after", (helper) => { if (helper.widget.model.post_number === 1) { return helper.attach("my-widget-shim"); } });
Wenn wir die Topic-Seite irgendwann mit Glimmer versehen, müssen Sie den Widget-Shim/die Dekoration entfernen und durch einen Plugin-Outlet ersetzen. Das sollte ziemlich einfach sein, da Ihre gesamte Anzeigelogik in der Komponente im Plugin-Outlet wiederverwendbar sein wird.
Lassen Sie uns wissen, wie es Ihnen ergeht! Gerne helfe ich Ihnen bei weiteren Fragen - ich weiß, dass hier viele bewegliche Teile im Spiel sind.