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)

Bij het opbouwen van de menu's zijn er een tweetal problemen.

  1. Er zijn mogelijk heel veel menu's items. Als voorbeeld: op deze reizen site zijn er ongeveer 200 menu 1 varianten ( de landen) maar respectivelijk 8000 en 14000 menu 2 en 3 varianten ( regio's en steden). Het zou de webpagina aardig opblazen als je een menu maakt die dit allemaal laat zien
  2. Er zijn veel combinaties die geen resultaten opleveren. Als je alle velden met alle varianten vult krijg je heel veel zoekcombinaties die niets opleveren.Land + Regio +Stad is vrijwel altijd een unieke combie alle andere combinaties leveren niet op.

 

Deze module kan gebruikt worden voor:

  • weergeven van een menu
  • plaatsen van tekst of links  bij een com_datafeeds menu : zie dit artikel
  • weergeven van een toplijst.

De module werkt altijd samen met een com_datafeeds menu . Dit menu definieert het filter waarmee in de database gezocht wordt.

De opties

Niet alle opties worden voor alle layouts gebruikt.

Algorithm Selectie methode van menu items ( zie onder ) in menu layouts
prefix Om verschillende artikele/links te kunnen toevoegen zie dit artikel
Default ID Wijst naar een com_datafeed menu. Als de module op een pagina weergegeven wordt waar geen datafeeds menu aanwezig is wordt dit menu item gebruik. Het is ook mogelijk om het gebruik van een bepaalt menu te forceren door een min-teken te gebruiken
Table grid Aantal  kolommen dat naast elkaar gezet moet worden. Wordt bijvoorbeeld gebruikt in de search layout. Als je hier 2 kiest met levels op 8 krijg je een tabel van 2 kolomen en 4 rijen.
Number of levels Aantal subniveau's dat getoond gaat worden(zie onder)
Number of items Aantal items dat in niet top niveau's getoond gaat worden (zie onder)
Sorteer Niveau 0 Sorteer optie (gebruikt bij lijsten)
Volgorde Sorteer volgorde (gebruikt bij lijsten)
Advanced tab
Neven Hoofdselectie/value's Analoog aan de hoofdselectie bij de menu configuratie kan hier weer een kleine selectie gemaakt worden. De combinate merchant/esprit zal alleen de items uit de esprit feed laten zien

Menu niveau's en aantallen.

Gegeven de volgende data

  • Frankrijk
    • Elzas
    • Provence
    • Parijs
      • Single Reis
  • Spanje
    • Andalusie
    • Costa Brava

In de beginsituatie zal het menu zo weergeven worden:

Niveau/Menu 1

  • Frankrijk
  • Spanje

Niveau/Menu 2

  • Elzas
  • Andalusie

Niveau/Menu 3

  • Single Reis

Hierbij is  Number of items ingesteld op 2. Het tweede menu niveau zonder selectie ( dat is in de beginstand niveau 2 ) geeft dan maximaal Number of items weer gebaseerd op hits.

Stel jeer wordt nu Frankrijk geselecteerd. ( niveau drie even buiten beschouwing )

Minimaal Smart
Maximaal

Niveau 1

  • Frankrijk

Niveau 2

  • Elzas
  • Provence
  • Parijs

 

Niveau 1

  • Frankrijk
  • Spanje

Niveau 2

  • Elzas
  • Provence
  • Parijs
Niveau 1
  • Frankrijk
  • Spanje
Niveau 2
  • Elzas
  • Provence
  • Parijs
  • Andaluesie
  • Costa Brava

Bij een keuze voor 'Maximaal' is er kans op selectis die niets opleveren.

 

Automatische Keuze

Stel in de begin situatie wordt in het derde menu voor 'single reis' gekozen, de enige optie die er dan voor nivuea  1 en 2 is Frankrijk,Parijs. Er is geen keuze en het item is niet te selecteren

Geen keuze

Stel in de begin situatie wordt in het eerste menu 'Spanje' gekozen. Er is dan voor niveau 3 geen keuze meer met de Algomitmes 'Minimaal' en 'Smart'

Custom layout

De module staat het toe eenvoudig andere layouts toe te voegen.

Stel je wilt het menu aanpassen aan je eigen wensen. Kopier bijvoorbeeld default.php naar bijvoorbeeld mijnmenu.php Vervang in het script in de classnaam 'default' door 'mijnmenu' en pas het script verder aan. Dus de naam van de class is Data<filename>Menu. Selecteer je scripts als layout.

De layouts zijn er in drie varianten, menu's, lijsten en custom.  Om een custom layout voor een lijst te maken moet de bestandsnaam eindigen in _list.php. Bij een custom layout eindigd de naam op _custom. Bij een lijst en een menu wordt een ingebouwde query uitgevoerd. Bij een custom layout moet je het helemaal zelf doen.

 

 

{include_code_listing /var/www/www.affiliatefeeds.nl/images/code/count_custom.txt}

 

Default ID

De module mod_datamenu verwijst altijd naar een datafeeds->items menu. Als de module weergegeven wordt op een datafeeds->items menu pagina dan gebruikt de module automatisch de instellingen/filters van die pagina. Als de module geplaatst is op een pagina die geen datafeeds-items is dan heeft de module geen instellingen en kan niets weergeven worden. Om toch op een willekeurige pagina een zoekmodule of een toplijst te kunnen weergeven gebruik je de default id.

In het voorbeeld rechts is de startpagina een gewoon artikel, stel je wilt op deze pagina op een module positie een toplijst van Vakanties en reizen aanmaken. In de module parameters komt dan in default-id '36' te staan. Wil je zowel een toplijst van zowel de vakanties als wintersport dan wordt het '36,45'.

Of je wilt op de vakantie pagina juist wel een toplijst van de wintersport. Gewoonlijk zou de module automatisch de top lijst van het eigen datafeeds menu overnemen. Vul voor de default-id een negatieve waarde in om de relatie met een datafeeds-items menu te fixeren : '-45'

Met de plugin loadposition ( core joomla ) kun je de module ook willekeurig in een artikel weergeven.

 

Tips

  1. De module gebruikt diverse instellingen van het betreffende menu item. Zo onder andere de headings voor de menu's. (tot versie 346 in het  Advanced Tab van de instellingen)
  2. Je kunt de module meerdere keren onder elkaar plaatsen door  meerdere default ids op te geven 36,45 of beter -36,-45 ( dan staan ze er onafhankelijk van het menu item )
  3. Sommige custom layouts geven titels weer van de betreffende component. Dit is niet zoals wellicht te verwachten de titel linksboven in de menu instellingen (dat is namelijk de naam van het menu-item), maar de titel rechts onder bij de systeem parameters.
  4. Wil je altijd eerst de lijst/menu van het huidige datafeeds menu en dan de rest. Gebruik dan eerst een nul: 0,-36,-45

 

 

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.

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);
}