piffy
1
Ebayのアフィリエイトプログラムは、クライアントサイドでリンクを変換するスクリプトを提供しています。これは簡単な2行のものです。
<script>window._epn = {campaign: [XXX_ID_XXX], smartPopover:false};</script>
<script src="https://epnt.ebay.com/static/epn-smart-tools.js"></script>
セキュリティ上の理由から、これらの2行を単純に追加することはできないことに気づきました。この件については、EPN Smart Links で議論があります。
非常にシンプルなテーマコンポーネントを作成し、コードを common/head_tag.html ファイルに配置しました。
IDはコンポーネントページで指定されており、コンソールには正しいIDが記録されています。しかし、URLが更新されているようには見えません。
このepn-smart-tools.jsをコンテンツセキュリティポリシーの例外として追加しました。しかし、ブラウザのコンソールでこの警告が表示されます。

epn-smart-tools.js で参照されているこの「from-url.js.map」が問題のようです。デスクトップで簡単なHTMLファイルを作成してローカルで実行したところ、問題はないように見えました。これは、ブラウザの問題というよりは、Discourse側の問題である可能性が高いことを示唆しています。
これらのソースマップが何をするのか、そしてDiscourseがそれらとどのように連携するのかは、私の知識の範囲外です。何かアドバイスはありますか?何か見落としていることはありますか?
Falco
(Falco)
2
ソースマップは、最小化されたアセットのデバッグに役立つオプションファイルです。このアセットを制御しておらず、そのソースを制御できないため、この警告は無視してください。
「いいね!」 2
piffy
3
情報ありがとうございます、@Falco さん。お誕生日おめでとうございます。
問題は、... の <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>
次に発生した問題は、動的に読み込まれる要素にはスクリプトが適用されないことです。たとえば、トピックのページを更新すると、読み込まれた投稿にはアフィリエイトリンクが表示されますが、スクロールしてさらに投稿を表示すると、それらの投稿には表示されません。
新しい要素が読み込まれるたびにスクリプトを実行する方法はありますか?
「いいね!」 1
Falco
(Falco)
4
理想的には、新しい投稿が保存されたらサーバー側で行います。Amazon 用にまさにこれを行うプラグインがあるので、eBay 用に適合させることができるはずです。GitHub - discourse/discourse-affiliate
それでもクライアント側で行いたい場合は、この役立つチュートリアルに従うことができます。Link rewriting for affiliate codes - #8 by Johani