Dove inserire lo script dell'annuncio?

È un po’ difficile rispondere ai tuoi punti senza contesto. Sarebbe molto utile se potessi includere maggiori dettagli su quale rete pubblicitaria stai citando e esattamente come non ha funzionato per te.

Non è del tutto vero e dipende davvero dalla rete pubblicitaria che stai cercando di utilizzare. Se è un requisito tassativo che lo script della rete pubblicitaria venga posizionato accanto al tag </body> – il che è improbabile – allora la responsabilità è della rete pubblicitaria per avere un requisito così rigido e irragionevole.

Gli script aggiunti in un tema vengono estratti in un file theme.js che viene poi iniettato nel tag <head> del documento.

Questo ci offre un certo livello di controllo e ci permette di implementare alcune funzionalità utili, come ad esempio impedire che temi difettosi facciano crollare l’intero sito.

Anche questo è vero solo in parte. I temi possono modificare qualsiasi cosa lato client. Ciò significa che tutto ciò che è scritto in JavaScript in Discourse è accessibile ai temi.

In effetti, l’intero plugin ufficiale per la pubblicità potrebbe essere convertito in un componente del tema e funzionerebbe. L’unica cosa che mancherebbe sarebbe la possibilità di aggiungere un file ads.txt, poiché ciò richiederebbe l’accesso al backend. Il motivo per cui non lo abbiamo fatto è che un plugin è un’implementazione più pulita per questo scopo, in particolare perché include più di un fornitore. Quindi sì, i temi hanno delle limitazioni, ma non è questo il punto principale qui.

C’è una nota molto importante qui: Discourse è un’applicazione a pagina singola (SPA). Ciò significa che una volta caricata l’app alla visualizzazione iniziale della pagina, tutta la navigazione successiva è gestita da Discourse e non dal tuo browser.

È importante sottolinearlo perché una rete pubblicitaria deve fornire gli hook necessari affinché le applicazioni a pagina singola possano aggiornare le informazioni della pagina e servire nuovi annunci. Non so molto su Adbutler o Openx, ma non ho trovato alcuna documentazione sul supporto per le applicazioni a pagina singola da parte di uno di questi fornitori.

Quindi, se la rete pubblicitaria non fornisce gli hook necessari, è davvero colpa di Discourse che non è supportata?

Non sei davvero costretto a utilizzare DFP. È solo una delle sei opzioni disponibili nel plugin ufficiale per la pubblicità, che elenco qui per riferimento:

  1. DFP
  2. AdSense
  3. Google ads
  4. Amazon advertising
  5. Codefund
  6. Carbon Ads

Ancora una volta, poiché Discourse è un’applicazione a pagina singola, “generico” semplicemente non funzionerà.

Certo, puoi caricare gli script pubblicitari che vuoi in un tema, ma verranno eseguiti solo alla visualizzazione iniziale della pagina. Tutto ciò che segue verrà ignorato dallo script della rete pubblicitaria, a meno che la rete non fornisca gli hook necessari.

Ecco come appare un’integrazione del genere su una rete pubblicitaria che supporta le applicazioni a pagina singola.

https://github.com/discourse/discourse-adplugin/blob/master/assets/javascripts/discourse/components/google-dfp-ad.js.es6#L191-L230

In realtà, hai bisogno di implementazioni di codice specifiche per ogni singola rete pubblicitaria.

Inoltre, credo che tu stia confondendo gli annunci interni con quelli provenienti da reti pubblicitarie. Il motivo per cui la casella accetta solo HTML è perché è pensata per creare i tuoi annunci interni. È un’implementazione molto semplice che è già stata integrata nel plugin in modo che non debba preoccuparti degli hook per le SPA se vuoi semplicemente servire i tuoi propri annunci.

Inoltre, se desideri davvero che un’altra rete pubblicitaria venga inclusa nel plugin, esiste un precedente per l’aggiunta di nuove reti basate su contributi della comunità.

L’esempio più recente è l’integrazione di Carbon Ads:

Tuttavia, in questo caso, l’onere di configurare tutto correttamente ricade su di te.

Se ritieni che tale implementazione sia troppo complicata, allora è così. Sono molto capace nel cambiare le gomme o l’olio della mia auto, ma se devo fare la manutenzione del cambio, allora trovo semplicemente qualcuno che ne sa più di me e lo pago per farlo al posto mio.

Quello che voglio dire è che se vuoi davvero utilizzare un’altra rete pubblicitaria e non riesci a farlo da solo, ti consiglio di creare un argomento nella sezione Marketplace e sono sicuro che attirerai l’attenzione di uno sviluppatore se hai il budget adeguato.