Ebay EPN: Erro no mapa de origem

O programa de afiliados do Ebay fornece um script que converte links no lado do cliente. É uma coisa simples de duas linhas:

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

Percebo que não posso simplesmente adicionar essas duas linhas por motivos de segurança. Há uma pequena discussão aqui EPN Smart Links

Criei um componente de tema muito simples e coloquei o código no arquivo common/head_tag.html:

O ID é especificado na página do componente e o console registra o ID correto. No entanto, ele não parece atualizar nenhum URL.

Adicionei este epn-smart-tools.js como uma exceção à política de segurança de conteúdo. No console do navegador, recebo este aviso:
image

Parece que este “from-url.js.map” referenciado no epn-smart-tools.js é o problema. Escrevi um arquivo HTML simples na minha área de trabalho e o executei localmente e não parece haver um problema - o que me leva a acreditar que é mais provável um problema no lado do discourse do que no meu navegador.

O que esses mapas de origem fazem e como o discourse interage com eles estão fora dos limites do meu conhecimento. Algum conselho aqui? Estou esquecendo de algo?

Mapas de origem são arquivos opcionais que ajudam na depuração de ativos minificados. Como você não controla este ativo e não tem controle sobre sua origem, você deve ignorar este aviso.

2 curtidas

Obrigado pelas informações @Falco e feliz aniversário.

Descobri que o problema estava em onde adicionei aquela linha <script src="....

Isso funcionou para mim:

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

O próximo problema que encontrei é que os elementos carregados dinamicamente não têm o script aplicado a eles. Por exemplo, se eu atualizar a página em um tópico, as postagens que carregam terão o link de afiliado, mas rolar para revelar mais postagens - essas não terão.

Existe uma maneira de executar o script toda vez que um novo elemento é carregado?

1 curtida

Idealmente, você faria isso no lado do servidor, assim que um novo post fosse salvo. Temos um plugin que faz exatamente isso para a Amazon, então você deve ser capaz de adaptá-lo para o eBay: GitHub - discourse/discourse-affiliate

Se você ainda quiser fazer isso no lado do cliente, pode seguir este tutorial útil: Link rewriting for affiliate codes - #8 by Johani