Ebay EPN: Errore nella mappa sorgente

Il programma di affiliazione di Ebay fornisce uno script che converte i link sul lato client. È una semplice cosa di due righe:

<script>window._epn = {campaign: [XXX_ID_XXX], smartPopover:false};</script>
<script src="https://epnt.ebay.com/static/epn-smart-tools.js"></script>

Mi rendo conto che non posso semplicemente aggiungere queste due righe per motivi di sicurezza. C’è un po’ di discussione qui EPN Smart Links

Ho creato un componente tematico molto semplice e ho inserito il codice nel file common/head_tag.html:

L’ID è specificato nella pagina del componente e la console registra l’ID corretto. Tuttavia, non sembra aggiornare alcun URL.

Ho aggiunto questo epn-smart-tools.js come eccezione alla policy di sicurezza dei contenuti. Nella console del browser, tuttavia, ricevo questo avviso:
image

Sembra che questo “from-url.js.map” a cui si fa riferimento in epn-smart-tools.js sia il problema. Ho scritto un semplice file html sul mio desktop e l’ho eseguito localmente e non sembra esserci alcun problema, il che mi porta a credere che sia più un problema lato discourse che dal mio browser.

Cosa fanno queste source map e come discourse interagisce con esse sono al di fuori dei limiti della mia conoscenza. Qualche consiglio? Sto trascurando qualcosa?

Le source map sono file opzionali che aiutano nel debug di asset minificati. Poiché non controlli questo asset e non hai alcun controllo sulla sua origine, dovresti ignorare questo avviso.

2 Mi Piace

Grazie per le informazioni @Falco e buon compleanno.

Ho capito che il problema era dove ho aggiunto quella riga <script src="....

Questo ha funzionato per me:

<script type="text/discourse-plugin" version="0.8">

  console.log(settings.epn_id);
  window._epn = {campaign: settings.epn_id, smartPopover:false};

  var script = document.createElement('script');
  script.src = 'https://epnt.ebay.com/static/epn-smart-tools.js';
  var head = document.getElementsByTagName("head")[0];
  head.appendChild(script);

</script>

Il problema successivo che ho riscontrato è che agli elementi caricati dinamicamente non viene applicato lo script. Ad esempio, se aggiorno la pagina su un argomento, i post che vengono caricati avranno il link di affiliazione ma scorrendo per rivelare altri post, quelli non li avranno.

C’è un modo per eseguire lo script ogni volta che viene caricato un nuovo elemento?

1 Mi Piace

Idealmente, faresti ciò sul lato server, una volta salvato un nuovo post. Abbiamo un plugin che fa esattamente questo per Amazon, quindi dovresti essere in grado di adattarlo per eBay: GitHub - discourse/discourse-affiliate

Se vuoi ancora farlo sul lato client, puoi seguire questo utile tutorial: Link rewriting for affiliate codes - #8 by Johani