Ebay EPN : erreur de carte source

Le programme d’affiliation Ebay fournit un script qui convertit les liens côté client. C’est une simple chose en deux lignes :

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

Je réalise que je ne peux pas simplement ajouter ces deux lignes pour des raisons de sécurité. Il y a une petite discussion ici EPN Smart Links

J’ai créé un composant de thème très simple et placé le code dans le fichier common/head_tag.html :

L’identifiant est spécifié sur la page du composant et la console enregistre le bon identifiant. Cependant, cela ne semble pas mettre à jour les URL.

J’ai ajouté ce epn-smart-tools.js comme exception à la politique de sécurité du contenu. Dans la console du navigateur, j’obtiens cependant cet avertissement :
image

Il semble que ce “from-url.js.map” référencé dans epn-smart-tools.js soit le problème. J’ai écrit un fichier html simple sur mon bureau et l’ai exécuté localement et il ne semble pas y avoir de problème - ce qui me fait croire qu’il s’agit plus probablement d’un problème du côté de discourse que de mon navigateur.

Ce que font ces source maps et comment discourse interagit avec elles dépasse mes connaissances. Des conseils ici ? Est-ce que je néglige quelque chose ?

Les cartes sources sont des fichiers facultatifs qui aident au débogage des ressources minifiées. Comme vous ne contrôlez pas cette ressource et que vous n’avez aucun contrôle sur sa source, vous devriez ignorer cet avertissement.

2 « J'aime »

Merci pour l’info @Falco et joyeux anniversaire.

J’ai compris que le problème venait de l’endroit où j’ai ajouté cette ligne <script src="...">.

Ceci a fonctionné pour moi :

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

Le problème suivant que j’ai rencontré est que les éléments chargés dynamiquement ne se voient pas appliquer le script. Par exemple, si je rafraîchis la page sur un sujet, les messages qui se chargent auront le lien d’affiliation, mais si je fais défiler pour révéler plus de messages, ceux-là n’en auront pas.

Existe-t-il un moyen d’exécuter le script chaque fois qu’un nouvel élément est chargé ?

1 « J'aime »

Idéalement, vous feriez cela côté serveur, une fois qu’un nouveau message est enregistré. Nous avons un plugin qui fait exactement cela pour Amazon, vous devriez donc pouvoir l’adapter pour eBay : GitHub - discourse/discourse-affiliate

Si vous souhaitez toujours le faire côté client, vous pouvez suivre ce tutoriel utile : Link rewriting for affiliate codes - #8 by Johani