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

  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.

datafeeds menu items

Op de voor joomla gebruikelijke wijze kun je een datafeeds items menu-item aanmaken. In het parameters velden kun je de verschillende menu niveau's toewijzen aan een selectie uit de database. Deze velden zijn bij de feed-configuratie toegekend.

 

 

 


 

 Met het veld hoofdselectie maak je een eerste selectie van de items. Bij de feed-configuratie is voor elke feed een  Select 0 waarde aangegeven. Deze zie je in het overzicht van de feeds terug als 'Groep'.

 

 

 

Stel je wilt nu een menu item aanmaken die alleen de items uit de groep 'wintersport'  weergeeft. Kies dan als hoofdselecte Select 0 en geef daaronder als waarde 'wintersport' op.

 Je kunt op elke selectie criterium groeperen, ook kun je meerde waardes meegeven. Voor een menu Winterzon kies je Select 1 (Ervan uitgaande datde landen in Select 1 gestoptzijn) en geef je een lijst met landen op die je als winterzonbestemmingen ziet:

 

 

 

De headings worden gebruikt door de module bij het maken van de menu's

Datafeeds zonder joomla gebruiken

De parser gebruikt joomla als framework voor de backend ( onderhoud van de feeds) en de frontend ( weergave van de feeds). De parser zelf is volledig onafhankelijk van joomla (de cron werkt buiten joomla om) en een frontend is te schrijven in elke programmeertaal die je mysql database kan benaderen. Het onderhoud van de feeds is wat lastiger. Het frame van joomla maakt het relatief eenvoudig om een admin omgeving aan te bieden, het zou vrij veel werk zijn een losse admin te schrijven.

 

phpmyadmin

installatie

  • indien gewenst creëer een nieuwe database
  • download de component
  • in de map admin staan twee sql bestanden vervang hierin #__ door een gewenste prefix (of haal het weg) en importeer de feeds in joomla. (#__ staat er meerdere keren in)
  • in de map cron staat het bestand feedcron.php. Hierin staat en require van configuration.php, de instantiatie van de config en de confguratie van de database parameters. Verwijder de eerste twee en pas de rest aan.
  • installeer de map cron met inhoud op de server. Aanroepen van de feedcron.php (https://www.jouwserver.nl/jouw-pad/cron/feedcronphp ) zou moeten resulteren in het importeren van de voorbeeld feeds.
  • Download de standalone demo.
  • Vervang in het bestand db.php de configuratie van de database ( tip : include dit bestand ook in de feedcron.php ipv de zaak daar dubbel te configureren.)
  • installeer de demo in kijk of het werkt.

feeds toevoegen

  • Ga naar de tabel datafeeds in phpadmin
  • Voeg een nieuwe regel toe (invoegen/insert)
  • Begin met de volgende veld
    • feed : korte naam voor de feed
    • feed_url : de url van het xml/cvs bestand
    • groep : de groep of type waartoe de feed behoort bijvoorbeeld vakantie of winkels
    • class: een van TradetrackerRSS, M4NRSS, ZanoxRSS, AffiliateRSS, TradeDoublerRSS, CleafsRSS, AffiliateCSV (";"), CSV, AtrRSS (xml met data in attributen
  • Sla de feed op een probeer een import:
    https://www.jouwserver.nl/jouw-pad/cron/feedcronphp?freq=1&feed=
  • Als het goed is staat er nu een array met de velden. Die kun je in phpmyadmin gaan invullen:
    • title : naam of titel van het product
    • href : product url
    • image : image url
    • prijs : de prijs van het product
    • menu_1-9 negen mogelijk menu velden

Toch met joomla

ook als je ervoor kiest om de frontend van joomla niet te gebruiken kun je evengoed de backend gebruiken om de feeds te onderhouden. Het lijkt overkill maar als je twee keer een feed via phpmyadmin onderhouden hebt ben je dankbaar.

  • installeer joomla, volg de stappen het is niet nodig voorbeeld data te installeren.
  • download de component
  • Log in in de admin, ga naar extensions en install en installeer de component.
  • onder components vind je nu de datafeeds, klik de cron link.Nu zouden de feeds ververst moeten worden
  • Download de standalone demo.
  • installeer de inhoud in de joomla root directory.
  • Viola
  • Als je wilt kun je delen van joomla  verwijderen bijvoorbeeld ongebruikte templates

 

Hoe kan ik de layout aanpassen?

Nieuwere beschrijving over het aanpassen van de layout(s)

CSS

in .../components/com_datafeeds/assets staat een css die gebruikt wordt voor de datafeeds. Deze kun je aanpassen. Verstandiger is wellicht de inhoud over te nemen in de css van je template en de css daar aan te passen.

 

tmpl / layout (php) component aanpassen

layout naar tempates verplaatsen

Op de voor joomla gebruikelijke manier kun je de scripts in de tmpl map aanpassen. Kopier hiervoor het gewenste bestand van

...\components\com_datafeeds\items\tmpl naar ...\templates\JOUW TEMPLATE\html\com_datafeeds\items\

Je hoeft alleen de tmpl bestanden te kopieren die je wilt aanpassen.

Over het algemeen zul je aan default_full.php en wellicht default_thumb.php genoeg hebben.

layout toevoegen


een andere optie is een andere layout voor de view aanmaken. Copier alle bestanden default* naar *. Pas in mijndinges.xml de naam aan. Pas aan wat je wilt

als je nu een nieuw menu item aanmaakt ( of bij een bestande het type wijzigd staat daar een extra layout.

 

mod_datamenu

naast de joomla methode heeft mod_datamenu nog een eigen mechanisme.