Change all website links to affiliate links automatically

前端 未结 3 1747
情歌与酒
情歌与酒 2021-01-06 13:19

I would like to be able to automatically change links into affiliate links automatically on my MediaWiki installation. This would help to reduce the amount

相关标签:
3条回答
  • 2021-01-06 13:47

    So you can also use jquery to bind any link click. This way you can do your link eval on the fly. This jsfiddle is a rough run through of what i think you're trying to accomplish. The alerts are just for your benefit and should be removed.

    $("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/

    UPDATE: added code and fully qualified paths

    UPDATE: added 'else if' block for other codes. using 'else if' instead of just another if block will hopefully cut back on unnecessary processing.

    0 讨论(0)
  • 2021-01-06 13:50

    Not sure how great it would be performance wise for hundreds of links.

    // 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';   
        }
    }
    

    DEMO

    0 讨论(0)
  • 2021-01-06 13:55

    Right way is to use LinkerMakeExternalLink mediawiki hook like that ( you can put it at bottom of your 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;
        }
    }
    
    0 讨论(0)
提交回复
热议问题