3

MediaWikiのインストール時に、リンクを自動的にアフィリエイト リンクに自動的に変更できるようにしたいと考えています。これにより、将来コードを変更する必要が生じた場合にリンクを管理する時間を短縮できます。

これは私の GOG.com アフィリエイト スキームのセットアップです。すべての GOG.com リンクの末尾にこのキーを追加する必要があります。?pp=708a77db476d737e54b8bf4663fc79b346d696d2

gog.com/en/gamecard/baldurs_gate_the_original_saga/?pp=708a77db476d737e54b8bf4663fc79b346d696d2

上記の例のように、Javascript などのコードですべてのリンク ( などhttp://www.gog.com/en/gamecard/baldurs_gate_the_original_saga/) を傍受し、最後にアフィリエイト コードを追加することは可能ですか?

同様のことを行うAmazon Associate Link Localiserと呼ばれるこの Javascript コードを認識しています。ただし、Amazon リンクに対してのみ機能し、リンクのローカライズも行いますが、これは私が望んでいない機能です。

4

3 に答える 3

1

正しい方法は、LinkerMakeExternalLink mediawikiフックをそのように使用することです (LocalSettings.php の一番下に置くことができます:

$wgHooks['LinkerMakeExternalLink'][] = 'ExampleExtension::exampleLinkerMakeExternalLink';

class ExampleExtension {
    public static function exampleLinkerMakeExternalLink( &$url, &$text, &$link, &$attribs, $linktype ) {
        if( strpos( $url, 'gog.com') !== false ) {
            $url .= '?pp=708a77db476d737e54b8bf4663fc79b346d696d2';
        }
        return false;
    }
}
于 2016-07-05T20:27:28.467 に答える
0

したがって、jquery を使用してリンクのクリックをバインドすることもできます。このようにして、その場でリンク評価を行うことができます。この jsfiddle は、あなたが達成しようとしていると私が思うことの大まかな流れです。アラートはあなたの利益のためだけのものであり、削除する必要があります。

$("a").click(function() {
    addAffiliate(this);
});

myCode = "?pp=708a77db476d737e54b8bf4663fc79b346d696d2";
myAmazonCode = "?tag=shihac-20"
    function addAffiliate(link) {
        alert("enterting script: " + link.href);
        if ((link.href).indexOf("gog.com") > -1 && (link.href).indexOf(myCode) < 0) {
                link.href = link.href + myCode;
        }else if((link.href).indexOf("amazon.com") > -1 && (link.href).indexOf(myAmazonCode) < 0){
                link.href = link.href + myAmazonCode;   
        }
            alert(link.href);
            return true;
        }​

http://jsfiddle.net/du47b/23/

更新: コードと完全修飾パスを追加

更新: 他のコードの「else if」ブロックを追加しました。別の if ブロックの代わりに「else if」を使用すると、不要な処理が削減されることが期待されます。

于 2012-08-03T15:57:15.007 に答える
0

何百ものリンクのパフォーマンスがどれほど優れているかはわかりません。

// Plain Javascript

var links = document.getElementsByTagName('a');

for (var i = 0, max = links.length; i < max; i++) {
    var _href = links[i].href;

    if (_href.indexOf('gog.com') !== -1) {
        links[i].href = _href + '?pp=708a77db476d737e54b8bf4663fc79b346d696d2';   
    }
}

デモ

于 2012-08-03T15:21:08.790 に答える