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.

 

 

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

  1. Door middel van een callback functie items die je niet wilt opnemen wegfilteren.
  2. 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.

 

 

 

 

 


 

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.

 

Als een aanbieder geen eigen datafeeds aanbied kun je zelf een productlijst maken.

Als je handmatig te werk gaat is een CSV bestand maken het eenvoudigst. Je kunt een gewone editor gebruiken, of in een spreadsheet programma als excel werken.

De eersre regel van je CSV bestand zijn de namen van de velden. Die zie je dan later terug in de feed configuratie. Op de andere regels komen dan regel voor regel de waardes van de velden. Onderstaande een voorbeeld van Jambo Safari. De links komen uit de deeplinkgenerator. De afbeelding kun je zelf maken, hier is het de afbeelding uit  het aangeboden materiaal.

 

Daisycon levert naast de productfeeds ook een feed van feeds. In deze feed staan alle feeds je je voor een bepaalde website kunt gebruiken. Hiermee is het dan mogelijk feeds half-automatisch te configureren.

In het admin gedeelte van de datafeeds component ( componenten->datafeeds) bevindt zich een tabblad 'Daisycon'. Hier verschijnt een lijst met alle beschikbare feeds. Door 1 of meerdere feeds te selecteren en op 'copy' te klikken wordt een nieuwe feed aangemaakt op basis van de gegevens in de feed van feeds.

Eigen feed voor feeds configureren

Ga naar daisycon meld je aan. Ga naar het menu Materiaal-> Productfeeds-> hulpmiddelen/tools.

Eventueel kun je een selectie maken uit de categorieën en standaarden.  De formaten doen er niet zoveel toe, de component past het formaat van de feed van feeds zelf aan. Kopieer de link

Ga op je joomla site naar componenten->feed of feeds ->daisycon en selecteer de 'voorkeuren/preferences'. Plak de  link in het te kleine hokje. Opslaan en daarna de pagina opnieuw laden. Als het goed is verschijnen nu jouw feeds.

Gebruik

in de lijst kun je 1 of meerdere feeds selecteren, met de 'kopiëren/copy' knop bovenaan kopieer je de feeds naar het actieve deel.

Na het kopiëren

De component probeert een aantal velden al voor je in te vullen. Hoe goed dit lukt is afhankelijk van de feed.

Controlleer de feed door op 'toepassen/apply' te klikken. Als het een werkende feed is zie je na verloop van tijd rechts voorbeeld data verschijnen. Let op : er is willeswaar een feed opgehaald maar de items zijn nog niet aan de database toegevoegd.

Controler de geselecteerde velden. Maak een keuze voor de groep: veld Select0

Zet de feed op aktief en sla deze op.

Importeer de data via de cron tab. Nu worden de items daadwerkelijk aan de database toegevoegd.

Opmerkingen

  • de feed van feeds wordt lokaal gecached. Als je voor nieuwe programma's bent goedgekeurt kan het even  (max 15 minuten) duren voordat je de wijzigingen ziet.
  • Ook bij Daisycon zelf zit er soms een vertraging in.
  • De feed van feeds is per site (media)
  • een slotje in het overzicht betekend dat je de feed al gebruikt.
  • de feed van feeds bevat soms ook feeds die het niet meer doen.
  • de feeds worden standaard op niet actief (unpublsihed) gezet.Controlleer een feed voordat je deze published

 

callback function xyz_cb not found

Kijk in de feeds-example.php en copier de relavante functie naar feeds.php

Curl en safe mode

Versie 422 bevatt hier een workaround voor.

In het geval dat je host alleen curl toestaat ( allow_url_fopen = Off) en safe mode aan staat of er beperkingen zijn door de open_basedir zullen de links uit de feed van feeds niet werken. Zie ook systeem eisen

 

Encoding

De feeds van daisycon zijn ISO-8859-15 gecodeerd. Voor XMLfiles gaat dit op php5 systemen niet goed, libxml ondersteunt het niet. Als het ophalen van xml feeds misgaat zet je Auto Encoding uit (nee/no) en vul je ISO-8859-1 (dus niet 15) in bij de encoding. Dit gaat meestal het best.

Feed generator

Eerdere problemen met de feed-url van daisycon zijn opgelost.

Gebruik de link bij  Download feed en niet de link uit de tekstbox.

Tip: Gebruik de feed van feeds

De updated feature?

De parser ondersteund de feature van daisycon om alleen de updated items te downloaden niet. Het algoritme van de import wordt daardoor een heel stuk ingewikkelder, de parser moet aardig overhoop en daisycon is de enige die deze feature op dit moment heeft. Er zijn dan ook geen plannen om het wel te ondersteunen.

 

 

 

 

Kwestie van uitproberen. de parsers van tradetracker en affiliates zijn een goed punt om eens te proberen.

 

Voor te afwijkende feeds zoals bijvoorbeeld suncamp kan een custom parser toegevoegd worden. Er zijn wel basisvoorwaarden aan de structuur van de feed: de feed moet per item gerubriceerd zijn en niet op menu items.

 


 

 

 

De feed bevat links naar niet bestaande afbeeldingen.

 

Tja, hier moet de eigenaar van de feed/website zijn huiswerk beter doen. De afbeelding wordt met een klein stukje inline javascript vervangen door een lege afbeelding.

 


 

Een eigen afbeelding.

De feed bevat geen afbeelding of je wilt altijd een eigen afbeelding weergeven. Dat kan met een callback function:

function noimage_cb (&$item) {
generic_cb($item);
$item['image']='http://www.example.com/noimage.jpg';
}
 

en bij de callback functie in de feed configuratie vervang je generic_cb dan door noimage_cb

 

 

 

Verschillende feeds gebruiken verschillende schrijfwijzen voor items 'Belgie' versus 'België' en 'LCD TV' versus 'LCD Televisie'. Het eerste probleem ( e versus ë) wordt in principe door de zogeheten collation van de database opgelost, maar het is toch netter het gelijk te trekken anders is er kans dat Belgie in plaats van België in de menu's komt. Andere problemen kunnen worden opgelost via een callback functie.  Een voorbeeld voor het aanpassen van landen: