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 (http://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:
    http://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

 

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.

 


 

 

 

Check ook  Release notes.

Herinstalleren

De component ondersteunt de upgrade methode van joomla. Je kunt de component dus herinstalleren zonder eerst een deinstall uit te voeren.

Voor de zekerheid

  • Maak een backup van JOOMLA_HOME/modules/mod_datamenu en dan met name eigen templates die je in de tmpl hebt geplaatst
  • Maak een backup van JOOMLA_HOME/components/com_datafeeds en dan met name eigen templates die je in view/... hebt geplaatst
  • Maak een backup van JOOMLA_HOME/administrator/components/com_datafeeds/cron als je die aangepast hebt en eventuele andere bestanden die je handmatig hebt toegevoegd in de cron directory.
  • Maak een dump of kopie van de tabel jos_datafeeds

 

Het verwerken van de feeds is een vrij zware operatie. Door de feedcron veelvuldig aan te roepen zou een kwaadwillende een DOS aanval kunnen uitvoeren.

Over het algemeen voer je de feedcron uit vanuit een vast locatie. Je kunt de map ../administrator/components/com_datafeeds/cron  dan eenvoudig beveiligen met een .htaccess bestand ( apache )

Order deny,allow
deny from all
allow from <toegestaan ip nummer>
allow from <ander toegestaan ip nummer>

 Uiteraard zou je hier ook met wachtwoorden aan te gang kunnen. 

En andere methode is om de map 'cron' en/of het script feedcron.php andere namen te geven. Alleen werkt dan de link vanuit het administrator panel niet meer.

Het is mogelijk om 1 (en ook meerdere teksten) te koppelen aan een specifieke (sub)rubriek in het menu.

Maak hiervoor een nieuwe module 'mod_datamenu' aan en kies bij de parameters 'artikel'

Schrijf daarna een artikel, titel en alles kun je zelf kiezen, het artikel kan de status ongepubliceerd houden, van belang is de alias. De alias van het artikel moet worden alias-rubriek-subrubriek

De content wordt in de module geplaatst. Description en keywords worden in de metadata gezet.

Zie als voorbeeld gsm-toestellen/Google.html Onderaan staat een korte intro van de telefoon. In de broncode zie je de description (hetzelfde als de tekst) en de keywords die gekozen zijn.

 

Links

Hetzelfde mechanisme, alleen gebruik je hier de joomla weblinks. Verschil met de artikelen is hier dat de links ook op een lager niveau getoond worden. Dus links met alias vakantie-spanje, komen ook op de pagina vakantie-spanje-costabrava te staan.

Uiteraard kun je ook een artikel maken met links.

 

Voorbeeld

plaatsen module

Maak een nieuwe module aan met mod_datamenu en kies voor 'Links'

 

 

 

Configuratie weblinks

Je kunt (moet) meerdere links dezelfde alias geven.

Resultaat

(niet meer op de live site)

 

 

of in geval van een artikel :

 

 

Meerdere modules

Als er op meerdere locaties stukken tekst moeten komen kun je meerdere modules aanmaken. Kies bij het aanmaken van de module dan een extra prefix voor de alias.

de alias van het artikel wordt dan

prefix-alias-rubriek-subrubriek.

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

 

 

 

 Elke klik op 'Apply/Uitvoeren' haalt wel de feed opnieuw op en gebruikt ook de laatste versie van de feeds.php. Je ziet rechts dus de laatste stand van zaken, maar tijdens deze aktie wordt de database niet bijgewerkt.

 

Nadat een feed configuratie is aangepast (of een feed is toegevoegd) zul je dus de cron  moeten uitvoeren. 

 

bram

 

 

Het import script verwijdert automatisch spaties aan het begin en einde van een menu item. Er zijn een paar feeds waar in plaats van gewone  spaties gecodeerde non-breaking-space characters staan. En manier om deze weg te krijgen:

 

function nbsp2space(&$var) {
$nbsp=urldecode("%A0");
$var=str_replace($nbsp,' ',$var);

}
function elmar_cb(&$item){
    global $feed_opts;
   nbsp2space($item[$feed_opts['menu_1']]);
   nbsp2space($item[$feed_opts['menu_2']]);
   nbsp2space($item[$feed_opts['menu_3']]);

    generic_cb($item,$count);
}
 

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:

Je gebruikt een oude (Beta) versie van Joomla 1.5.0

 

De nieuwere versie gebruikt  JLanguage:transliterate niet meer.