|
Versie svn:1282 bevat een eerste parser voor de niche datafeeds van Affiliate4You .
Er is nog geen zip met deze parser, je kunt de nieuwe parser handmatig plaatsen, het gaat om xml_fetch.inc(dat is de 1.7 tak maar dit bestand is ook de gebruiken voor 1.5) deze moet in administrator/components/com_datafeeds/cron mbv ftp of de control panel van je webhost.
het lijkt alsof er op dit moment (5-10-11) nog een probleem zit bij a4y, niet alle feeds leveren correcte xml, de parser zal dan niet werken.
|
Daisycon
de kortingscode feed van daisycon kan opgenomen worden als datafeed.
Export voorbereiden
kies in het actiecodes menu je media en zo je wilt landen en categorieen, selecteer ook het filter op 'aanmeld status' = goedgekeurd. Zoeken en dan de programma's selecteren. Kies ook het vinkje onderaan 'Nieuwe actiecodes automatisch toevoegen'. Ga naar het tab 'exporteren' en kies CSV en 'Kolom namen toevoegen' zet het vinkje 'external' aan. Nu krijg je de feed link die je in de component kunt gebruiken. Kies in de component als class 'CSV ; en "'
Feed gebruiken
De inhoud van de feed wijkt wat af van gewone datafeeds. Via de list/text velden onderin de configuratie f een callback filter kun je de description aanvullen met de code en datums.
Integratie met product feeds
Interessant wordt het om bij een product ook de actiecode van die aanbieder te tonen. Dit zou je kunnen doen via een custom mod_datamenu. Dat kan eenvoudig mits de naam in 'program name' binnen de kortingscode feed identiek is aan het veld 'naam' in de feed configuratie van de bijbehorende product feed.
Affiliate4you
De feed van affiiate4you is een RSS feed die via een tool als feed gator als artikelen kan worden ingelezen. Helaas mist een RSS feed de structuur om het binnen de component te kunnen inzetten.
|
|
Op hoeveel paarden wed je op de renbaan, spreekwoordelijk in ieder geval op meer dan een. Je hebt meerdere sites, op verschillende servers staan, je promoot meerdere webwinkels via verschillende affiliate netwerken, toch? En toch ben je voor bezoekers volledig afhankelijk van 1 bron: google? Toegegeven het was en is niet echt makelijk, google heeft een behoorlijke dominantie met meer dan 90% marktaandeel. Nederland is hiermee koploper, zou ‘gratis’ ermee te maken hebben dat we ons volledig afhankelijk hebben gemaakt. (ik tik dit verhaal trouwens in google docs) En het was eigenlijk altijd relatief makkelijk om in ieder geval op de long tail lekker te scoren in google.
Helaas is dat over. Heel veel affiliate sites hebben harde klappen gehad. Toch is het niet helemaal uit de lucht komen vallen, de regels van google over thin-affiliate sites waren al lang duidelijk. Men is ze alleen strengen en concequenter gaan toepassen. Wellicht om ruimte te maken voor hun eigen thin-affiliate sites onder de noemer google shopping? We zijn met zijn alleen verslaafd geraakt aan de gratis diensten van google, maar ook gratis moet ergens zijn geld verdienen.
Daarnaast is er de afgelopen tijd een toename geweest van zowel hobby webmasters die een graantje wilden meepikken als de meer profesionelle sites die hun deel van de markt opeisen. Grote vergelijkingssites, cach-back en kortingscodes sites bieden de bezoeker wat ze willen, informatie en koopjes. Afgezien dat google het moeilijker maakt is er ook nog eens veel meer concurrentie, zowel in kwantiteit als kwaliteit.
‘content is king’ een site met unieke inhoud scoort goed in google, of scoorde? Het schrijven van unieke inhoud is zo moeilijk niet, dat het een prettig leesbaar verhaal is is een tweede. Het schrijven van unieke informatie is al een stuk lastiger. Welke bezoeker zal het boeien dat op jouw site het duizend-en-eenste verhaaltje over Arabië staat? Google net zo min. Wat gaat jouw site onderscheiden zodat een bezoeker jouw pagina’s gaat bookmarken, liken en tweeten, en zorgt ervoor dat hij nog een keer terugkomt.
Wellcht nog belangrijker dan content is het concept van de site, wat is het USP van je site. Dat geld voor affilaite sites, waar je site in feite je product is. Maak ook sites die een product aan de man proberen te brengen. Wat onderscheid jouw webwinkel?
Het concept hoeft niet zo vernieuwend te zijn als marktplaats een tijdje terug of twitter en facebook.
Geld verdienen zou bij het bedenken van een concept van een site op het tweede plan moeten staan, wat wil ik bieden wat nog nergens anders op deze unieke manier te vinden is. Uniek als in anders of beter dan de anderen. Er zijn voldoende niches waar de grote vergelijkingssites het laten liggen, kunst is alleen ze te vinden, en er genoeg bezoekers voor te krijgen.
Is er nog geld te verdienen met affiliate (feeds). Zekers maar je zult er (weer) hard voor moeten werken. Site/Concept/Content en dan pas cashen. Of een heel briljant idee hebben.
|
|
Vrijwel alle affiliate productfeeds zijn voorzien van afbeeldingen. De afbeeldingen staan meestal op de server van de webwinkel, in enkele gevallen op de server van het affiliatenetwerk. Het kan aantrekkelijk zijn de afbeeldingen zelf te hosten i.p.v. ze vanaf andere servers te gebruiken:
- veel afbeeldingen van verschillende servers kan een trigger voor google zijn: affiliatesite !!!
- de afbeeldingen zijn soms erg groot hetgeen in trage pagina’s resulteert.
- je kunt de afbeeldingen van een eigen cookie-loos domein aanbieden ( is een advies van google page-speed)
Nu kun je de afbeeldingen allemaal gaan ophalen op het moment dat je de datafeed inleest, de eigenaar van de server zal je dat echter niet in dank afnemen. een interessante optie is het om de plaatjes op te halen als ze nodig zijn en dan locaal op te slaan. Dit mechanisme gebruikt dezelfde truck als ‘404 caching’
Note: er zijn wat problemen in dit artikel met de voorbeelden, joomla knipt nogal wat html code weg. Het kan zijn dat het verhaal daardoor nog iets onbegrijpbaarder is.
De database.
in de database staan 1 of meer tabellen voor de informatie over de items in de feed in opgeslagen staan. Van belang is de tabel met het veld van de afbeelding voorbeeld:
ID,img_url,titel,omschrijving,etc etc
bij gewoon gebruik van de afbeelding plaats je iets als
<img src="/$img_url" border="0" alt="" />
in je code. om over te stappen op eigen afbeeldingen maak je hier van:
<img src="http:/images.example.com/$ID" border="0" alt="" />
volgende stap is het '404' gedeelte, dit kan op apache server m.b.v. .htaccess en een error document. Onderstaande voorbeeld gebruikt de rewrite engine:
Rewriteengine on RewriteCond %{REQUEST_FILENAME} !-f RewriteRule (.*) index.php
de eerste keer dat een afbeelding opgevraagd wordt bestaat deze nog niet en komt 'index.php' in aktie, de volgede keren staat de afbeelding in de 'cache' en gebruikt de webserver deze. Rest nog invulling te geven aan de index.php die de afbeelding ophaalt en bewerkt:
$db_host= “jouw host”; $db_user= “jouw db user”; $db_password=“jouw db password”; $db_database=“jouw db”; $db_table= “jouw tabel”;
if (!($_resource = mysql_connect( $db_host, $db_user, $db_password, true ))) { $_errorNum = 2; $_errorMsg = 'Could not connect to MySQL'; print $_errorMsg; exit; } mysql_select_db( $db_database, $_resource ); $img=(int)$_SERVER['REQUEST_URI']; # int tegen injection $feed_q="select img from $db_table where id = $img limit 1"; $_feeds=mysql_query($feed_q,$_resource); @$p=mysql_result($_feeds,0); if ( ! $p ) { $p="noimage.jpg"; } createthumb($p,$img,150,150);
#haalt de afbeelding op ( $name ) maakt er een standaard formaat van #plaats de afbeelding in de directory en stuurt deze als response function createthumb($name,$filename,$new_w,$new_h) { $src_img=false; $name=str_replace(array('[',']',' '),array('%5B','%5D','%20'),$name); $src_img=imagecreatefromstring(file_get_contents($name)); if ( ! $src_img ) { if (preg_match("/(jpg|jpeg)$/i",$name)){ $src_img=imagecreatefromjpeg($name); } if (preg_match("/gif$/i",$name)){ $src_img=imagecreatefromgif($name); } if (preg_match("/png$/i",$name)){ $src_img=imagecreatefrompng($name); } } if ( ! $src_img ) { error_log("No IMAGE $name"); $src_img=imagecreatefromjpeg('noimage.jpg'); } $old_x=imageSX($src_img); $old_y=imageSY($src_img); if ($old_x > $old_y) { $thumb_w=$new_w; $thumb_h=$old_y*($new_h/$old_x); } if ($old_x < $old_y) { $thumb_w=$old_x*($new_w/$old_y); $thumb_h=$new_h; } if ($old_x == $old_y) { $thumb_w=$new_w; $thumb_h=$new_h; } $d_h=$thumb_h > 200?200:$thumb_h; $dst_img=ImageCreateTrueColor($thumb_w,$d_h); imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y); imagejpeg($dst_img,$filename); header("Content-type: image/jpg"); imagejpeg($dst_img); imagedestroy($dst_img); imagedestroy($src_img); }
Dit is een basic script, als je veel afbeeldingen hebt is het verstandig met sub-mappen te werken; het script lost het probleem van niet bestaande afbeeldingen slechts deels op. Het script zal gewijzigde afbeeldingen niet oppikken; sommige feeds gebruiken dezelfde afbeelding verschillende keren, je zou kunnen overwegen een hash van de image url te gebruiken:
<img src="http:/images.example.com/crc32($img_url)" border="0" alt="" />
en de query om de afbeelding uit de database te halen ook aan te passen. Dit lost ook het probleem op als een product een andere img url krijgt
|
|
een uitgebreide handleiding is te vinden op de blog van M4N
Je hebt de volgende gegevens nodig:
| Email/login |
De login/email zoals je die bij M4N gebruikt |
| Wachtwoord |
Het wachtwoord zoals je die bij M4N gebruikt |
| Hash |
Dit is de korte code achter dhid= zoals die in feed url's staat |
| M4N id |
Je M4N affiliate id staat achter duid= in feed url's |
http://www.M4N.nl/_df/stream-13152-M4N ID.csv?duid=M4N ID&dhid=Hash&dfid=1
als je al een actieve feed in je systeem hebt worden de hash ( niet bij oudere feed url formaten) en de id automatisch opgehaald, anders moet je eenmalig bij M4N een feed selecteren en de gegevens overnemen.
Je kunt de gegevens opslaan in de voorkeuren, anders moet je ze per sessie een keer opgeven.
Ook de feeds worden opgeslagen voor duur van een sessie, wil je ze opnieuw ophalen binnen een sessie gebruik dan purge.
Selecteer een of meerdere feeds, klik copier en daarna ( per feed) 'Apply' om de velden op te halen. Er worden standaard CSV tabbed feeds opgehaald.
|
|
Er zijn scenarios denkbaar waar je slechts een deel van het aanbod uit een feed wilt gebruiken, bijvoorbeeld omdat je een site specifiek gericht hebt op een onderwerp. In dit forum bericht staat een korte beschrijving van een mogelijk filter. Dit artikel beschrijft het wat uitgebreider. Globaal zijn er twee mogelijklheden
- Door middel van een callback functie items die je niet wilt opnemen wegfilteren.
- Alles importeren en het menu gebruiken als filter
Hieronder een beschrijving van de methodes aan de hand van voorbeelden.
Algemene configuratie van de feed en menu
Stel we hebben een site over 'wijn' en willen daarbij een lijst met boeken over wijn weergeven.
Allereerst met er een leverancier met een geschikte feed gevonden worden. Daisycon bijvoorbeeld heeft boek.net en bruna met datafeeds in het programma zitten. De feed van boek.net is megagroot bevat veel niet gerelateerde producten en bovenal bevat geen rubricering, we kunnen dus niet bepalen welke boeken in de rubriek 'wijn' thuishoren.
De feed van bruna is hanteerbaarder in heeft ook een rubricering waar we wellicht iets me kunnen. Bij de invoer van de feed is het ivm de performance verstandig het csv formaat te kiezen. In de ruwe data zien we dat het veld category gevuld is met termen als 'boek' en 'ebook' geen nuttige info voor onze filter akties. De sub_category bevat echter wel termijn die nuttig zijn. In de field selectie nemen we dan ook de sub_category als 'Select 1', voor 'Select 0' is dan Boeken een voor de hand liggende keuze.
Met een import wordt nu de complete datafeed ingeladen.
Maak een nieuw menu item aan om de boeken weer te geven. Voer bij 'Main Selection' het Select 0 in met als parameter Boeken

Het menu zal nu alle boeken uit de database weergeven. Als je het menu op de front end bekijkt zie je een enorm lange lijst, dit komt deels doordat er veel rubrieken 'Engelstalig' zijn, m.b.v. van de callback functie die we toch gaan maken kunnen we de Engelse boeken een niveau lager zetten (zie script aan einde van de pagina).
Na een nieuwe import is de lijst korten en zien we er een rubriek 'Wijn en Dranken' is. Dit zijn de boeken waar we in geïnteresseerd zijn. Om het wat fraaier te maken herschrijven we de naam naar Wijn in de callback functie. De indeling bij Bruna is niet fijner dan 'Wijn en dranken'. Het is dus niet goed mogelijk alleen de wijn boeken eruit te filteren. Wel zou je in de titel kunnen gaan zoeken naar termen die niets met wijn te maken hebben zoals Wiskey.
Filteren in het menu
Zoals beschreven in de inleiding kunnen we nu verschillende kanten op:filteren van de items bij de import d.m.v. een callback filteren met het menu.
Eerst het tweede geval, filteren met het menu. Onder het Advenced tab is een tweede filter. Hier kunnen we dan filteren op Select1 met als keuze Wijn ( als er alleen datafeeds met boeken zijn kun je ook het eerste filter op boeken laten vervallen en daar Select1 -> Wijn van maken)

Het idee van bovenstaande opzet is dat je twee menu's aanmaakt, eentje met de wijn boeken, en daaronder een menu met alle boeken, je bent toch al bezig met importeren en dan zou je kunnen overwegen die items ook maar te laten zien.
de boeken demo site demonstreert dit (in een andere volgorde), hoofdmenu is 'boeken' submenu is wijn. Daarbij zit ook nog een sub-menu naar het bier. Dit is een deeplink binnen het boeken menu. Dat is de derde mogelijkheid om te selecteren: maak een menu item aan op een onopvallende plek ( of in een onzichtbaar menu) en maak dan in het hoofdmenu een deeplink-menuitem ( externe link) aan.
Filteren bij de import
In het geval dat je de overige boeken helemaal niet wilt importeren kun je ze ook volledige weg filteren door in de callback functie het item te wissen.
de callback functie bruna2_cb verzorgt dit. Dit script filtert alle boeken uit de rubrieken met de term wijn of bier. Daarnaast kijkt het in de titel van de boeken naar bekende drank termen of zelf subrubrieken te maken.
drank boeken demo
Meer feeds
als je nog andere (boeken) feeds gaat toevoegen kun je stukken van de callback gaan hergebruiken. voorbeeld hiervan is het stukje 'hernoem_drank in onderstaand voorbeeld.
|
|
De joomla component beschreven op deze site bied een komplete oplossing voor het integreren van affilaite feeds met een joomla site. Het gaat hier om functionaliteit aan de achterkant: beheer van de feeds en de automatische import en de voorkant weergave van de geimporteerde data.
Een komplete oplossing als voor joomla voor andere CMS systemen wordt hier niet geboden. Ze zijn er wel. Onderaan de pagina staan een aantal voorbeelden. Onderstaand een aantal oplossingen om deze parser te gebruiken met andere CMS systemen.
Importeren van RSS feeds.
Alle grote CMS systemen beschikken over een extensie ( module, plugin ) die het mogelijk maakt RSS feeds te importeren als content. Gebaseerd op de parser die ook voor de joomla extensie gebruikt wordt is er een standalone datafeeds naar RSS converter. Hier is geen admin panel bij, de feeds worden geconfigureerd in php of xml bestanden. De uitleg op deze site m.b.t. configuratie en callback functies geldt ook voor de stand alone versie. Als je wel een admin wilt, kun je een joomla site neerzetten, in de feed configuratie kun je de instellingen van een feed exporten als xml, die je weer voor de datafeeds2rss tool kunt gebruiken
RSS Importers
Tonen van RSS feeds
Een andere optie is het weergeven van RSS feeds naast (bestaande) content. Stel je hebt een (bestaande) website met veel content waar je advertenties op basis van affiliatefeeds aan wilt toevoegen. Hiervoor bouw je naast je bestaande site een nieuwe (joomla) website die gebruikt gaat worden als leverancier van rss feeds. Voor alle grote CMS systemen is er wel een extensie om RSS feeds te tonen. In tegenstelling tot de vorige oplossing importeer je hier de data niet in het CMS van je hoofd website maar toon je slechts een deel van de affiliate site.
Een voorbeeld hiervan is te vinden op deze demo-site op basis van mediawiki: Op de pagina over boormachines is een feed van deze huis en tuin site toegevoegd. bij de rss feeds van com_datafeeds kun je een query meegeven
Het mooiste is dan een RSS module die feedds laat zien op basis van de tags op de pagina.
Importeren als content
Als je de datafeeds als echte content importeert in je CMS (als content,article, post, page,node etc) zijn er geen beperkingen in het gebruik van de gemaakt pagina, de pagina is immers een standaard onderdeel van je CMS en je kunt er alle extensies op los laten.
Er zijn wel wat potentiele problemen: CMS systemen zijn er niet op ingericht om duizenden artikelen met bijbehorende tags ( categorien, taxanomie rubrieken etc) te beheren, al ze het al kunnen joomla kent bijvoorbeeld alleen een eenvoudige rubricering. Wordpress bijvoorbeeld is prima in staat om duizenden artikelen te beheren, maar de admin loopt hopeloos vast als je te wild gaat met de rubrieken en tags voor de artikelen. Een landen site met landen-regio's- steden heeft duizenden tags en dat gaat fout.
Voor kleine feeds kan het een oplossing zijn, de parser die bij de joomla component hoort is ook voorzien in het toevoegen van extra/andere import functie. Ook is het datafeeds2rss te verbouwen. Bij de eerste verloopt de import dan via een joomla site, bij de tweede is het een zelfstandige toepassing.
Er is een experimentele versie van een wordpress importer. Deze gaat in de komende tijd uitgewerkt worden en kan dan hier gedownload worden: vakantiehuizen demo, dagaanbiedingen demo
PHP includen
Een andere mogelijkheid is het importen van de data ( via joomla of standalone) en daarna een eigen stukje php code te includen in je content of in een sidebar widget. Bijvoorbeeld een widget die producten laat zijn op basis van tags in de artikelen.
wordpress
Andere systemen
standalone
Veel CSV import tools, als iemand ervaring ermee heeft hoor ik het graag.
|
|
M4N en tradetracker bieden de mogelijkheid om email te ontvangen bij een (gekeurde) transactie. Beide niet perfect, M4N laat niet weten als een sale of lead is afgekeurd, tradetracker laat helemaal niet weten of en wanneer een transactie door de keuring is.
affiliate4you heeft helemaal geen berichtgeving, wel is in het leads/sales overzicht een download beschikbaar met alle leads en sales. Met curl is het mogelijk deze automatisch op te halen en mails te genereren.
|
|
|
The 'normal' mod_datemenu menus show a hierarchical structure of categories based on the settings of he component joomla menu
This layout shows just a single level, for example just 'menu level 3'. This layout can be usefull to show the list of feeds/merchants (See 'AANBIEDERS REIZEN'). Or a list of gender (voor wie)
|
|
Een veel voorkomend probleem in feeds zijn de verschillende schrijfwijzen, bijvoorbeeld in reizen en vakantie feeds worden landen en regio's op verschillende wijzen geschreven. Neem bijvoorbeeld
'Vierwaldstaettersee' versus 'Vierwoudstedenmeer' of 'Saasdal' en 'Saasdal Noord'
Bovenstaande zijn twee voorbeelden van veel voorkomende problemen in de vakantie feeds, verschillende schrijfwijzen voor hetzelfde, of varianten van regio's. zoals twee regio's die elkaar overlapen en die je wellicht toch als 1 wilt presenteren. Onderstaande script geeft een illustratie hoe deze twee problemen op te lossen zijn.
|
|
De standaard refentie om aan een feed mee te geven is 'DF-REF' deze wordt door de component vervangen door een referentie met het volgede formaat:
S<M4DART nummer>-I<Item nummer>-[CM]-product titel
Voorbeeld : S015-I119389-C46-Broek-van-levis
Het M4DART nummer is een numeriek waarde, om deze toe te voegen aan de feeds plaats je in de feeds.php een define:
define("M4DART", );
elke site geeft je hiermee een uniek nummer, welke feed je ook gebruik van welke aanbieder het S nummer is voor een site altijd hetzelfde.
note: de M4DART is (eigenlijk) iets specifieks voor M4N, het wordt in de component echter generiek gebruikt om elke site te identificeren.
De C en M geven aan of er in de component of een module geklikt is.
Als je een eigen tracking wilt gebruiken, kun je die toevoegen, dit werkt alleen voor de feeds waar je de tracking meegeeft aan de feed url (TT,Daisycon,affiliate4you), je kunt dit ook combineren met de DF-REF : sportsite-DF-REF
Gebruik DF-REF als refentie in de feed link generator
Daisycon
Voeg &ws=DF-REF toe aan de feed url of vul DF-REF in als Sub id in de feed link generator
Voeg &linkinfo=DF-REF toe aan de feed url. (Info)
voeg define("M4DART", ); toe aan je feeds.php. Waarbij de 4dsid dan je gekozen nummertje is. Let op M4dart is bij M4N niet standaard beschikbaar.
Referentie tracking uitschakelen
Vanaf versie svn:1276 kun je de ingebouwde referentie tracking uitschakelen Voeg onderstaande define toe aan je feeds.php
define('DF_SKIP_DFREF',true);
|
|
De ene feed is eenvoudiger te gebruiken dan de ander. Naast technische problemen zoals verkeerde coderingen kan hem dat ook zitten in bijvoorbeeld het gebruik van bijzondere indelingen van de categorieen.
Onderstaande een lijst met selectie van feeds die eigenlijk zonder problemen te gebruiken zijn. Soms geeft de feed bij de ene aanbieder wel problemen maar bij een ander niet. Kwestie van proberen. Vrijwel alle feeds ook de eenvoudige hebben een soort van verwerking nodig, ook een feed die op zich prima is gaat op bijvoorbeeld fashionsales door een rename script heen, om ervoor te zorgen dat schrijfwijzen van producten en rubrieken identiek zijn ( dames, woman, women, ladies). (en ja op die site is het ook niet perfect...)
|
|
|