Je crains d’avoir été un peu trop optimiste ici @pfaffman, désolé ! Le PR que j’ai fait introduirait un nouveau wrapper <div> entre chaque publication, même si l’outlet n’était pas utilisé. Ce n’est pas vraiment ce que nous voulons faire.
Il peut y avoir des moyens d’éviter le wrapper… mais rien de simple que nous puissions faire immédiatement.
Je pense donc que la meilleure solution immédiate pour vous sera de copier l’implémentation de adplugin à laquelle vous avez fait référence dans l’OP.
Essentiellement :
-
Créez un composant (Glimmer ou classique, peu importe) qui rend ce que vous voulez.
-
Utilisez
registerWidgetShimpour rendre ce composant disponible en tant que widget. L’exemple adplugin crée un widget appelé “after-post-ad”, qui rend le composantPostBottomAd. Il transmet tous les attributs du widget(@data)à l’argument@modeldu composant. -
Utilisez
api.decorateWidgetpour rendre votre nouveau widget shim dans la positionpost:after. Dans votre cas, puisque vous ne le voulez que sur la première publication, vous pourriez faire quelque chose comme :api.decorateWidget("post:after", (helper) => { if (helper.widget.model.post_number === 1) { return helper.attach("my-widget-shim"); } });
Lorsque nous passerons enfin la page de sujet à glimmer, vous devrez supprimer le widget shim/décoration et le remplacer par un plugin outlet. Cela devrait être assez facile, car toute votre logique d’affichage dans le composant sera réutilisable dans le plugin outlet.
Faites-nous savoir comment vous vous en sortez ! Nous serons heureux de répondre à toutes vos questions de suivi - je sais qu’il y a beaucoup de pièces mobiles ici.