Le lien de menu, colonne vertébrale de Joomla!

Nous allons voir dans cet article l’importance du lien de menu dans le fonctionnement de votre site Joomla!


Le lien de menu colonne vertébrale de Joomla! Nous allons expliquer ici l’importance du lien de menu dans le fonctionnement de votre site Joomla! S’il y a quelque chose de central dans Joomla, c’est bien le lien de menu ! Pour mieux en comprendre l’importance, voici une petite infographie qui retrace très schématiquement ce qui se passe lors de l’appel d’un article dans Joomla! [Pour simplifier, nous avons évacué la gestion des langues et autres petits (hum, hum) détails…]

L’appel du contenu
Celui-ci est loin de suivre un azimut brutal, il va glaner sur son chemin les différents éléments qui vont constituer la page. Car comme vous le savez, les pages de votre site n’existent pas en tant que telles, mais se constituent lors de leur convocation.
Si j’appelle la page actualités de mon site, par le bais d’un lien de menu de type blog de catégorie, paramétré pour afficher un article en pleine largeur et deux intro, affichés par date, ce sont les trois derniers articles qui vont s’afficher sur la page. Mais si je n’ai que deux articles disponibles, la page n’affichera que deux articles. Miracle du CMS qui construit les pages en fonction de ma requête et de ce qui peux y répondre !
Un appel, plusieurs possibilités
On peut dégager trois cas de figure :

Il existe un lien de menu
Il existe un lien de menu apparenté
Il n’existe pas de lien de menu

Dans le cas A, l’appel a lieu directement par un lien de menu et nous avons donc le fameux itemid. C’est-à-dire l’identifiant numérique unique du lien de menu dans la base de données. Joomla va donc aller chercher ce qui est assigné à ce lien de menu : template, modules…
Dans le cas B, l’appel est fait par un lire la suite par exemple. N’ayant pas d’itemid au départ de l’appel, Joomla va aller chercher s’il existe un lien de menu dans la base de données vers l’article appelé, ou même un lien vers la catégorie de l’article. Comme il y a un lien de menu « actualités » qui mène vers cette catégorie, Joomla va donc aller chercher ce qui est assigné à ce lien de menu que j’appellerai apparenté : template, modules…
Dans le cas C, nous avons ni lien de menu au départ, ni lien de menu apparenté. Que va donc faire Joomla ? La réponse est simple : il va se servir de l’ItemId origine de la page où le clic a eu lieu ! Joomla va donc afficher l’article dans la mise en page qui est celle de la page de l’appel.
Cela explique pourquoi mon joli module de slider qui est assigné uniquement en page d’accueil, est encore là quand on a cliqué sur le lire la suite d’un article lui aussi en page d’accueil. Cet article et sa catégorie ne sont pas desservis par un autre lien de menu : Joomla reste dans la mise en page existante lors du clic. En route vers le rendu de la page

Le clic a lieu depuis : A un lien de menu, B un lire la suite avec un lien de menu apparenté ou C une liste d’articles. 
On requête la base de données
On récupère le template assignée à l’ItemId
On extrait les positions de publications de module dudit template
On récupère les modules publiés, avec vérification des droits, sur cet ItemId
On récupère le contenu de l’article, avec vérification des droits de lecture

Et on affiche la page telle qu’elle doit être.

Comment pallier à ce souci ? C’est tout simple, en créant un lien de menu vers la catégorie dans un autre menu que le menu principal, menu qui d’ailleurs peut ne pas être affiché et ne servir qu’à gérer les assignations de modules et de template. Crédits photo
Photo de Clem Onojeghuo provenant de Pexels