Ebay EPN: Error de mapa de origen

El programa de afiliados de Ebay proporciona un script que convierte enlaces en el lado del cliente. Es una cosa simple de dos líneas:

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

Me doy cuenta de que no puedo simplemente agregar estas dos líneas por razones de seguridad. Hay una pequeña discusión aquí EPN Smart Links

He creado un componente temático muy simple y he colocado el código en el archivo common/head_tag.html:

La id se especifica en la página del componente y la consola registra la id correcta. Sin embargo, no parece actualizar ninguna URL.

He agregado este epn-smart-tools.js como una excepción a la política de seguridad de contenido. Sin embargo, en la consola del navegador obtengo esta advertencia:
image

Parece que este “from-url.js.map” al que se hace referencia en epn-smart-tools.js es el problema. Escribí un archivo html simple en mi escritorio y lo ejecuté localmente y no parece haber ningún problema, lo que me lleva a creer que es más probable que sea un problema en el lado de discourse que en mi navegador.

¿Qué hacen estos mapas de origen y cómo interactúa discourse con ellos está fuera de los límites de mi conocimiento. ¿Algún consejo aquí? ¿Estoy pasando algo por alto?

Los mapas de origen son archivos opcionales que ayudan a depurar recursos minificados. Dado que no controlas este recurso y no tienes control sobre su origen, debes ignorar esta advertencia.

2 Me gusta

Gracias por la información @Falco y feliz cumpleaños.

Descubrí que el problema estaba en dónde agregué esa línea <script src="...">.

Esto me funcionó:

<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>

El siguiente problema con el que me encontré es que a los elementos que se cargan dinámicamente no se les aplica el script. Por ejemplo, si actualizo la página en un tema, las publicaciones que se cargan tendrán el enlace de afiliado, pero al desplazarse para revelar más publicaciones, esas no lo harán.

¿Hay alguna forma de ejecutar el script cada vez que se carga un nuevo elemento?

1 me gusta

Idealmente, harías eso en el lado del servidor, una vez que se guarde una nueva publicación. Tenemos un plugin que hace exactamente eso para Amazon, por lo que deberías poder adaptarlo para eBay: GitHub - discourse/discourse-affiliate

Si aún deseas hacerlo en el lado del cliente, puedes seguir este útil tutorial: Link rewriting for affiliate codes - #8 by Johani