Идентификатор указан на странице компонента, и в консоли выводится правильный ID. Однако, похоже, что ни один URL не обновляется.
Я добавил этот epn-smart-tools.js как исключение в политике безопасности контента (CSP). Однако в консоли браузера я получаю следующее предупреждение:
Похоже, что проблема заключается в файле “from-url.js.map”, на который ссылается epn-smart-tools.js. Я создал простой HTML-файл на своем рабочем столе и запустил его локально, и там проблем не возникло — это заставляет меня думать, что проблема скорее на стороне Discourse, а не в моем браузере.
Что делают эти карты исходного кода и как Discourse взаимодействует с ними — выходит за рамки моих знаний. Есть ли какие-либо советы? Не упускаю ли я что-то?
Исходные карты — это необязательные файлы, которые помогают в отладке минифицированных ресурсов. Поскольку вы не контролируете этот ресурс и не имеете контроля над его исходным кодом, вы должны игнорировать это предупреждение.
Я понял, что проблема была в том месте, где я добавил строку <script src=“…”.
У меня сработало следующее:
<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>
Следующая проблема, с которой я столкнулся, заключается в том, что к элементам, загружаемым динамически, скрипт не применяется. Например, если обновить страницу на теме, посты, которые загрузятся, будут содержать партнёрскую ссылку, но при прокрутке для отображения новых постов — у тех её не будет.
Есть ли способ запускать скрипт каждый раз при загрузке нового элемента?
В идеале это следует делать на стороне сервера сразу после сохранения нового сообщения. У нас есть плагин, который делает именно это для Amazon, поэтому вы сможете адаптировать его для eBay: GitHub - discourse/discourse-affiliate · GitHub