vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 3.6 Add-ons (https://vborg.vbsupport.ru/forumdisplay.php?f=194)
-   -   Miscellaneous Hacks - Dynamic Amazon Links (https://vborg.vbsupport.ru/showthread.php?t=163393)

buro9 03-19-2009 06:13 PM

BTW. If anyone is using AME and has the definition file... whoever submitted the Amazon re-write for that is hijacking your affiliate earnings.

Hidden_Gamma 03-20-2009 03:43 AM

Quote:

Originally Posted by buro9 (Post 1771994)
BTW. If anyone is using AME and has the definition file... whoever submitted the Amazon re-write for that is hijacking your affiliate earnings.


What's AME?

buro9 03-20-2009 05:17 AM

Quote:

Originally Posted by Hidden_Gamma (Post 1772339)
What's AME?

https://vborg.vbsupport.ru/showthread.php?t=202476

And these are the definitions:
https://vborg.vbsupport.ru/showthread.php?t=195884

And someone with an Amazon affiliate of "citofgamonlco-20" is hijacking the earnings.

And you can see that here from the number of vBulletins he is earning from:
http://www.google.co.uk/search?q=citofgamonlco-20

Hidden_Gamma 03-20-2009 02:35 PM

Quote:

Originally Posted by buro9 (Post 1772357)
https://vborg.vbsupport.ru/showthread.php?t=202476

And these are the definitions:
https://vborg.vbsupport.ru/showthread.php?t=195884

And someone with an Amazon affiliate of "citofgamonlco-20" is hijacking the earnings.

And you can see that here from the number of vBulletins he is earning from:
http://www.google.co.uk/search?q=citofgamonlco-20

Oh, what a jackass. I hope he has been reported to Amazon and whatever other authorities handle that sort of thing. :mad: :erm:

Hidden_Gamma 03-20-2009 09:30 PM

Okay, I have this working, somewhat, under 3.8.1 PL1 using the hack to get multi-level domains, but the problem is, it is adding my affiliate IDs to all the URLs other than my my two multilevel domain affiliate IDs for Amazon UK and Amazon Japan.

I think it may have something to do with the preg_match section, which I keep trying to tweak to get working, but to no avail. Maybe someone here can help me out? Here's the code as I am using, with my affiliate IDs redacted:

PHP Code:

<?php
function amazon_links($text) {

    
/*
     * your partnernet ids
     */
    
$associate_id_co_uk 'azn-id'// or leave empty
    
$associate_id_co_jp 'azn-id'// or leave empty
    
$associate_id_de 'azn-id'// or leave empty    
    
$associate_id_com 'azn-id'// or leave empty
    
$associate_id_ca 'azn-id'// or leave empty

    /*
     * tag=xxx and ref=xxx will be replaced with your associate id in non asin links
     */
    
$replace_targt_urls true// true or false
          // reeplace arrays
    
$replace_src = array();
    
$replace_str = array();

    
// check for [url="amazon-link"]some text[/url]
    
if(preg_match_all("/\[url\=(?:\")?(http:\/\/(?:[A-z0-9\.]+)?amazon\.(co\.uk|co\.jp|de|com|ca)\/(?:.+))(?:\")?](.+)\[\/url\]/iU"$text$out)) {
        for(
$i=0;$i<count($out[1]);$i++) {
            
$associate_id = ${'associate_id_'.str_replace('.','_',$out[2][$i])};
            
$out[4][$i] = $out[1][$i];

            if(
$associate_id && !empty($associate_id)) {
                
// Look for an asin number
                
if(preg_match("/\/[A-Z0-9]{10}(\/)?/"$out[1][$i], $asin) && strpos($out[1][$i], '/review') === false) {
                    if(
substr($asin[0], -1) != '/') { $asin[0] .= '/'; }
                    
$out[1][$i] = 'http://www.amazon.'.$out[2][$i].'/exec/obidos/ASIN'.$asin[0].'ref=nosim/'.$associate_id;
                } else {
                    
$target_url $out[1][$i];
                    if(
$replace_targt_urls) {
                        
$target_url preg_replace('/ref\=([a-z0-9\-]{3,})\-([0-9]{2})/iU''ref='.$associate_id$target_url);
                        
$target_url preg_replace('/tag\=([a-z0-9\-]{3,})\-([0-9]{2})/iU''tag='.$associate_id$target_url);
                    }

                    
$out[1][$i] = 'http://www.amazon.'.$out[2][$i].'/exec/obidos/redirect?link_code=ur2&camp=1789&tag='.$associate_id.'&creative=9325&path='.urlencode($target_url);
                }

                
$replace_src[] = '[url="'.$out[4][$i].'"]';
                
$replace_str[] = '[url="'.$out[1][$i].'"]';

                
$replace_src[] = '[url='.$out[4][$i].']';
                
$replace_str[] = '[url='.$out[1][$i].']';

                
$replace_src[] = '[url="'.$out[4][$i].'"]';
                
$replace_str[] = '[url="'.$out[1][$i].'"]';

                
$replace_src[] = '[url='.$out[4][$i].']';
                
$replace_str[] = '[url='.$out[1][$i].']';
            }
        }
    } unset(
$out);
    
    
// check for [url]amazon-link[/url]
    
if(preg_match_all("/\[url\](http:\/\/(?:[A-z0-9\.]+)?amazon\.(co\.uk|co\.jp|de|com|ca)\/(?:.+))\[\/url\]/iU"$text$out)) {
        for(
$i=0;$i<count($out[1]);$i++) {
            
$associate_id = ${'associate_id_'.str_replace('.','_',$out[2][$i])};
            
$out[4][$i] = $out[1][$i];

            if(
$associate_id && !empty($associate_id)) {
                
// Look for an asin number
                
if(preg_match("/\/[A-Z0-9]{10}(\/)?/"$out[1][$i], $asin) && strpos($out[1][$i], '/review') === false) {
                    if(
substr($asin[0], -1) != '/') { $asin[0] .= '/'; }
                    
$out[1][$i] = 'http://www.amazon.'.$out[2][$i].'/exec/obidos/ASIN'.$asin[0].'ref=nosim/'.$associate_id;
                } else {
                    
$target_url $out[1][$i];
                    if(
$replace_targt_urls) {
                        
$target_url preg_replace('/ref\=([a-z0-9\-]{3,})\-([0-9]{2})/iU''ref='.$associate_id$target_url);
                        
$target_url preg_replace('/tag\=([a-z0-9\-]{3,})\-([0-9]{2})/iU''tag='.$associate_id$target_url);
                    }

                    
$out[1][$i] = 'http://www.amazon.'.$out[2][$i].'/exec/obidos/redirect?link_code=ur2&camp=1789&tag='.$associate_id.'&creative=9325&path='.urlencode($target_url);
                }

                
$displayed_link $out[4][$i];
                if(
strlen($displayed_link) > 55) {
                    
$displayed_link substr($displayed_link036).'...'.substr($displayed_link, -14);
                }


                
$replace_src[] = '[url]'.$out[4][$i].'[/url]';
                
$replace_str[] = '[url="'.$out[1][$i].'"]'.$displayed_link."[/url]";

                
$replace_src[] = '[url]'.$out[4][$i].'[/url]';
                
$replace_str[] = '[url="'.$out[1][$i].'"]'.$displayed_link."[/url]";
            }
        }
    } unset(
$out);


    
// replace the message
    
if(isset($replace_src[0])) {
        
$text str_replace($replace_src$replace_str$text);
    } unset(
$replace_src$replace_str);

    return 
$text;
}
?>


Hidden_Gamma 03-20-2009 10:04 PM

And now I'm getting this error message:

Quote:

Unable to add cookies, header already sent.
File: /home/bluray/public_html/forum/includes/functions_amazon_links.php
Line: 101
Okay, never mind, this error is fixed, but the piece of code above is working for everything, including embedded links, except for the multi-level .co.uk and .co.jp domains, which I can't seem to get to work no matter what I do.

Hidden_Gamma 03-23-2009 11:04 PM

One more update, this plugin also won't work on URLs in the Calendar. So, to sum up, it won't work for the multi-level .uk and .jp domains, and it won't add the affiliate ID's to URLs posted in the Calendar -- that's where I'm at with this on a 3.8.1 PL1 board using the hack for mutli-level domains.

RedWingFan 06-02-2009 05:11 AM

Can't get it to work on 3.7.2. The preg_match looks for the ASIN number, correct? If so, then the format of Amazon's link shouldn't matter, if the ASIN appears as below:

http://www.amazon.com/No-Line-Horizo...3921433&sr=1-1

Hidden_Gamma 06-02-2009 01:46 PM

I now have 3.8.2 installed and the status is still the same for me with this plugin -- it won't work for .uk and .jp multilevel domains or in te VB calendar.

RedWingFan 06-02-2009 08:46 PM

For now, I've disabled the plugin. When I get time, I may dissect the function and toss out some variables to see how it is working.

(EDIT: Disregard the following...my error...) For the .co.uk and .co.jp domains, I need those as well. I know that the regex for (co\.uk|co\.jp|de|com|ca) should work (syntax looks correct, and the dots are escaped properly), but I wonder how the script is parsing the $associate_id_co_uk and $associate_id_co_jp variable names, as they have one extra set of underscore and characters than the others. I wonder if that's where the problem lies...? That's why I want to look into the function more to see how it is setting the variables, if only for me to understand how it works overall. It's the regular expressions I sometimes get hung up on.

RedWingFan 06-04-2009 07:34 PM

Never mind that last bit above--I am now using the modified version of the plugin's PHP file above (post #85 by Hidden Gamma), and I see the modified lines. (I had manually made changes, but missed two lines.) So the regex is fine as is.

Nonetheless, I ran the plugin as a regular PHP file (removed the function syntax), assigned $text manually, and found out that the plugin's PHP file is rewriting the URL correctly, with our associate ID in it. So, the problem does not appear to be with the functions_amazon_links.php file.

And those with .co.jp and .co.uk should be happy to know that those URLs are rewriting properly as well (the domains show up properly).

So for some reason, the rewritten code is not making it to the posts, either when made as a new thread, a normal reply, or a quick reply.

Someone with access to a web server can test this themselves also. Comment out this line at the top of the file:

PHP Code:

// function amazon_links($text) { 

Right below it, use something like this:

PHP Code:

$text "[url=\"http://www.amazon.co.uk/No-Line-Horizon-U2/dp/B001O0EQ5U/ref=sr_1_1?ie=UTF8&s=music&qid=1243921433&sr=1-1\"]Click Here[/url]"

At the bottom of the file, comment out these two lines:

PHP Code:

//    return $text;
// } 

...and add this line below it:

PHP Code:

print $text

Run this file in the browser, and you'll see the output with the correct country's associate ID inserted, and the correct domains in the URL.

So my hiccup has to do with the hook location...? Or the PHP code that calls the plugin? This plugin file works, but changes don't end up in the finished post. Once I solve that, I'm golden.

One added bonus: we have one or two members who "innocently" :rolleyes: post Amazon links to a CD, with their own Associates ID inserted in the URL. This will kill that, and save my staff having to sniff these out.

SirHappy 06-20-2009 03:16 PM

thx. works in 3.8.3.

jca2112 07-31-2009 06:57 PM

This doesn't work for me in vB 3.8.3.

Any help updating this for 3.8.3 (and adding support for sites like Amazon.co.uk) is appreciated.

meeja 08-31-2009 10:24 AM

Does this mod work for 3.8.4?

derrene 12-13-2009 04:55 PM

Quote:

Originally Posted by meeja (Post 1877109)
Does this mod work for 3.8.4?

work

RedWingFan 12-13-2009 10:23 PM

I haven't gotten it to work in ANY version.

Uninstalled.

Phillip Chapman 01-01-2010 06:34 PM

Does anyone know if this mod will work in vB 4.0 or will it need to be updated for the new version? Thanks in advance.

Claygp 01-14-2010 11:31 PM

Quote:

Originally Posted by Phillip Chapman (Post 1944208)
Does anyone know if this mod will work in vB 4.0 or will it need to be updated for the new version? Thanks in advance.

Works perfect for me on 4.0.1 after the upgrade from 3.8.4. I didn't even have to disable it or enable it or anything. :D

derrene 03-06-2010 08:24 AM

4.0.2 works too

drudge99 08-12-2010 04:44 PM

Does anyone have this installed with 4.0.6?

ShackMaster 08-16-2010 03:57 PM

This appears to be working good for us thus far on version 3.8.5... with the co.uk modification.

New links to Amazon.com, Amazon.ca and Amazon.co.uk are rewriting with our associate ID, but old links are not. In order for old links to work, we are having to edit and save with no actual edit being made.

Of course this is our initial findings... and we will have to verify that there are no other conflicts.

twistedsymphony 09-23-2010 04:44 PM

I just got this installed and running on 3.8.x and it seems to work great :)

one concern though... I'm new to the whole affiliate linking thing and I noticed it's adding "ref=nosim" to some of the links.

I didn't know what this was so I looked it up, people used to add it because it would take users directly to the desired products as opposed to a similar product's page.

Amazon has depreciated this tag a few years ago (hence why I'd never seen it) and they state that link that include it should still work but they don't recommend anyone use it anymore.

there is concern among some that the "ref=nosim" tag will at some point stop working and invalidate existing links.

it'd be nice if there were an updated version of this plugin that takes newer link protocol into account... or if someone with a good knowledge of amazon affiliate links could point out what needs to be changed in the code to get rid of that tag.

it looks like it's used in 2 places with the following line:

Code:

$out[1][$i] = 'http://www.amazon.'.$out[2][$i].'/exec/obidos/ASIN'.$asin[0].'ref=nosim/'.$associate_id;
I'm curious if it should be modified to this:

Code:

$out[1][$i] = 'http://www.amazon.'.$out[2][$i].'/exec/obidos/ASIN'.$asin[0].'ref='.$associate_id;
or to this:

Code:

$out[1][$i] = 'http://www.amazon.'.$out[2][$i].'/exec/obidos/ASIN'.$asin[0].'/'.$associate_id;

hqarrse 10-22-2010 11:36 AM

Version 4.0.8 has caused me some problems (this is my first try so I don't know if it worked in previous versions of VB4).

Firstly I had to manually create the plugin - the XML upload throws an error. This was no problem - just look at the XML file and it is very obvious what to enter when you do 'Add new plugin'. However....

The function only worked for a new post. I believe this is to do with cache. Therefore after this initial posting is made, this line in the plugin no longer does anything:

Code:

$post['pagetext'] = amazon_links($post['pagetext']);
My solution - I'm sure not the ideal one, is to scrap the plugin and edit the file showthread.php as follows:

after line 113 add the include
Code:

require_once(DIR . '/includes/functions_amazon_links.php');
after line 980, in the loop for the large query that reads the post table:

Code:

$post['pagetext'] = amazon_links($post['pagetext']);
and then after 1469 when the post cache is being read

Code:

$post['pagetext'] = amazon_links($post['pagetext']);
Secondly the regex seems to be case sensitive when searching for URL, despite the /i at the end. Therefore as given it will not find
Code:

URL=
and (sod's law) the post I was testing on had it in upper case. I assume the user typed it in manually. I haven't been able to fix that yet, hence this post. Can a regex expert please help and make the function search for both URL and url?

Claygp 11-21-2010 03:12 PM

Can we please get an updated version of this for 4.0.8? Mine stopped working with the upgrade. :(

raaowdot 11-30-2010 01:30 PM

Does anyone know how to adapt it for amazon.co.uk?

I've tried to amended the codes from com to co.uk however I'm not able to do this with the variable. Any ideas?

mulesnx 12-07-2010 06:55 PM

When I add a link, it truncates the amazon link but does not add affiliate code. I am using 3.6.7

wraggster 02-02-2011 02:28 PM

any chance of a vb4 version ?

lubbie 03-09-2011 04:50 PM

Same here. Appreciate an update to vb4

wraggster 03-22-2011 01:53 PM

Quote:

Originally Posted by ShackMaster (Post 2084814)
This appears to be working good for us thus far on version 3.8.5... with the co.uk modification.

New links to Amazon.com, Amazon.ca and Amazon.co.uk are rewriting with our associate ID, but old links are not. In order for old links to work, we are having to edit and save with no actual edit being made.

Of course this is our initial findings... and we will have to verify that there are no other conflicts.

do you have the full code of this working, i still cantget .com and .co.uk to work together

hiker 05-13-2011 07:47 PM

Quote:

Originally Posted by lubbie (Post 2171483)
Same here. Appreciate an update to vb4

ditto

imahawki 08-06-2011 11:13 PM

Ditto. Used this before but now I'm on vB 4.x and it doesn't work. The alternatives are crap, they require you to register with a 3rd party service and funnel your traffic through them. I don't NEED that, I just need a link reformatted!

Artes_Marciales 10-17-2011 12:18 PM

Work for amazon.es?

zippokid 01-22-2012 04:00 AM

Quote:

Originally Posted by imahawki (Post 2230310)
Ditto. Used this before but now I'm on vB 4.x and it doesn't work. The alternatives are crap, they require you to register with a 3rd party service and funnel your traffic through them. I don't NEED that, I just need a link reformatted!

agreed, would love to have a rewrite!

insidegames 05-04-2012 03:41 PM

would this also work with amazon.co.uk?

brandon515 06-25-2012 05:46 PM

Looking for VB4 version...anyone?

jderouen 06-30-2012 03:51 PM

I can't get it to work with Amazon.co.uk either.

djbaxter 06-30-2012 04:17 PM

You don't need a vB4 version. I've had this working from 3.x through 4.0 to 4.2.0 PL2.

singabaloo 08-28-2012 09:40 AM

Has anyone tried this with amazon.co.jp ?

englishtalk 09-07-2012 12:46 PM

tried to add this to 4.1.7 and the product uploader thinks this is a plugin not a product. What to do?

cisoprogressivo 10-12-2012 04:55 PM

I can't make it work for amazon.it (vb4).


All times are GMT. The time now is 01:01 PM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01831 seconds
  • Memory Usage 1,910KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (8)bbcode_code_printable
  • (5)bbcode_php_printable
  • (9)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (3)pagenav_pagelink
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (40)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete