| Door: Marie-Anne Melis. | Categorie: Extensies.

Metamod: iets voor mij?

Zo heel af en toe staat er bij de steeds groter wordende hoeveelheid Joomla! uitbreidingen een extensie waarvan je denkt "He, daar moet ik eens voor gaan zitten". Ingegeven door het idee dat deze module zoals beloofd misschien de oplossing biedt bij allerlei vage vragen over het wel of niet tonen van modules op momenten waarin Joomla niet standaard voorziet. Het is nu zondag, ik zit op de bank en Metamod (voor J! 1.5) is geïnstalleerd.

Metamod is beschikbaar voor Joomla! 1.0 en 1.5 .

Beloften

Op de extensionspagina van Joomla worden o.a. de volgende toepassingen voorgesteld:

  • modules laten verschijnen op een bepaalde datum/tijd, of ze een start en einddatum geven voor publicatie;
  • tonen van verschillende modules afhankelijk van de periode dat een gebruiker geregistreerd is;
  • controleren van facileforms modules (b.v. het tonen van een bepaalde form afhankelijk van de geografische locatie van de gebruiker);
  • tonen van verschillende modules op verschillende pagina's van VirtueMart / JReviews / en anderen - b.v. het tonen van een specifieke module afhankelijk van het gekozen VirtueMart product of de gekozen categorie;
  • tonen van modules afhankelijk van de Sectie/ Categorie waartoe het artikel op de pagina behoort;
  • tonen van een ander menu afhankelijk van de gekozen taal door de gebruiker;
  • module laten verdwijnen als iemand is ingelogd (Joomla heeft hier geen standaardmethode voor);
  • gebruik verschillende modules afhankelijk van de browser en browserversie.

Zou hij echt doen wat wordt beloofd? De recensies lijken voor zich te spreken.

Ervaring

Als je de module installeert en opent dan krijg je een configuratiescherm te zien dat complex oogt. Dat heeft twee redenen: er is regelmatig uitleg toegevoegd bij de parameters en er zijn gewoon veel mogelijkheden. Even doorbijten dus.

Sommige opties zijn eenvoudig in te stellen, zoals een start- en einddatum tijd voor een module. Wil je een module bijvoorbeeld elke dag van 10 tot 12 's avonds tonen dan vul je de velden als volgt in:

MetamodTijdRules

Voor het configureren van ingewikkeldere mogelijkheden kun je gebruik maken van de voorbeelden die de schrijver op zijn documentatiepagina heeft staan. Ik ga voor het Virtuemart voorbeeld en wil een bepaalde module alleen tonen op de browse pagina van één bepaalde categorie.

Ik maak een module aan die alleen bij een bepaalde VM-categorie mag worden getoond en zet in de moduleconfiguratie bij de menu toewijzing de waarde voor menu's op Geen. Standaard wordt de module dus op geen enkele pagina getoond.

Ik zoek het categorie-id op van de specifieke VM categorie bij de VM categorieën en kopieer het volgens mij toepasselijke deel uit de voorbeelden in het PHP invoerveld van de Metamod module:

MetamodVMcodeVerkeerd

Ik wijzig het id van de VM categorie en het id van de te tonen module dat ik direct uit de lijst van beschikbare modules kan halen. En kijk verwachtingsvol op mijn site. Niets!... geen module, geen foutmelding, stilte.... en dat is natuurlijk niet zo gek, want $category_id en $page hebben geen waarde gekregen. De tweede poging gaat een stuk beter en werkt als een zonnetje:

metamodvmok

Tien minuutjes en al een effect bereikt, niet verkeerd. De oplossing is zo makkelijk te vinden omdat de voorbeelden zo compleet zijn al moet je wel even je hersens erbij houden als je aan het kopiëren slaat. In het geval van Virtuemart kun je het voorbeeld toepassen op o.a. zoekpagina's, de checkoutpagina en profielpagina's.

Wat dit experimentje in één klap duidelijk maakt is dat enig logisch denkvermogen en wellicht wat programmeerervaring onontbeerlijk zijn om met deze module te bereiken wat je wilt. Metamod heeft weliswaar een debugfunctie maar die maakt mij bij het opsporen van de fout in dit voorbeeld in ieder geval niet wijzer.

So far ... so good.

Metamod stelt ook een groot aantal Joomla! variabelen ter beschikking voor het samenstellen van de ‘rules'. Een simpel voorbeeld van gebruik van Joomla! variabelen zie je hieronder (J! 1.5):

if ($user->usertype == "" || $user->usertype == "Public Frontend") return 44; // user is not logged in - show something generic
if ($user->usertype == "Publisher") return 47; // show a notice for users with "Publisher" privileges

Gasten krijgen de module met id 44 te zien, gebruikers van het type Publisher krijgen de module met id 47 te zien. Er zit geen If-statement in dus de twee rules werken los van elkaar.

Ook een klein experimentje hiermee leidt tot het gewenste resultaat, de experimentjes houd ik voor gezien.

Conclusie

Over het algemeen gebruik je Metamod om aan Joomla! te vertellen welke spelregels (‘rules') er gelden voor het tonen van bepaalde modules. De Metamod module werkt naast het bestaande modulesysteem en kan het handigst worden ingezet voor situaties waarvoor geen alternatieve oplossing is of waarvoor je vijf andere extensies moet installeren om hetzelfde effect te bereiken.

De documentatie is compact maar geeft veel goede en uitgebreide voorbeelden, allemaal te vinden onderaan de downloadpagina. Zowel module als documentatie zijn in het engels, dat is jammer voor mensen die het engels wat minder machtig zijn. De module is niet geprogrammeerd met languagestrings, de mogelijkheid om te kunnen werken met meerdere talen zou dus nog wel eens even op zich kunnen laten wachten, als die überhaupt al komt.

Voor mensen met weinig programmeerervaring vergt het gebruik van de Metamod module wellicht wat doorzettingsvermogen. Voor mensen die zo af en toe met klantvragen worden geconfronteerd waarvan ze denken "liever dat even niet" kan Metamod wel eens de problemsolver zijn.

En ach als je het echt niet weet, je kunt het altijd nog op ons forum vragen, wie weet...!