Selecties filteren en weergeven
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. 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.
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.