Inserisci un componente glimmer dopo il primo post

Temo di essere stato un po’ troppo ottimista qui @pfaffman, scusa! Il PR che ho fatto introdurrebbe un nuovo wrapper <div> tra ogni singolo post, anche se l’outlet non veniva utilizzato. Non è proprio quello che vogliamo fare.

Potrebbero esserci modi per evitare il wrapper… ma niente di semplice che possiamo fare immediatamente.

Quindi penso che la migliore soluzione immediata per te sarà copiare l’implementazione di adplugin a cui hai fatto riferimento nell’OP.

Essenzialmente:

  1. Crea un componente (Glimmer o classico, non importa) che renderizza ciò che desideri

  2. Usa registerWidgetShim per rendere quel componente disponibile come widget. L’esempio di adplugin sta creando un widget chiamato “after-post-ad”, che renderizza il componente PostBottomAd. Sta passando tutti gli attributi del widget (@data) all’argomento @model del componente.

  3. Usa api.decorateWidget per renderizzare il tuo nuovo widget shim nella posizione post:after. Nel tuo caso, dato che lo desideri solo sul primo post, potresti fare qualcosa di simile

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

Quando alla fine faremo il glimmer-ify della pagina dell’argomento, dovrai rimuovere il widget shim/decorazione e sostituirlo con un plugin outlet. Dovrebbe essere abbastanza facile, dato che tutta la tua logica di visualizzazione nel componente sarà riutilizzabile nel plugin outlet.

Facci sapere come va! Felice di aiutarti con qualsiasi domanda di follow-up - so che ci sono molte parti in movimento qui.

3 Mi Piace