Christophe Lance marketing internet et web designChristophe Lance marketing internet et web design (Mobile version)Logo Christophe Lance (Mobile)

Joomla! est un système de gestion de contenu (CMS) open source, développé par des contributeurs dans le monde entier, qui se veut à la fois simple pour les débutants et suffisamment flexible et performant pour les développeurs plus expérimentés. Bien entendu, ce CMS, qui existe depuis 2005, a ses limitations et les lourdeurs que l'on peut attendre d'un projet communautaire à l'échelle mondiale. Mais tout en reconnaissant qu'aucun logiciel n'est parfait, Joomla permet de développer un site dynamique, sécurisé et multilingue avec un budget raisonnable et des technologies éprouvées qui sont régulièrement mises à jour par les développeurs.

De plus, c'est un logiciel qui n'est pas lié aux intérêts d'une entreprise, mais qui est juridiquement sous la houlette d'une association (Open Source Matters). Cette structure juridique sans buts lucratifs favorise à long terme l'intérêt des utilisateurs, plutôt que la recherche de profits immédiats par les concepteurs du logiciel. C'est un critère important dans la recherche d'une solution technique durable aussi bien pour des PME, que des organisations gouvernementales ou des associations.

Programmer sans toucher au coeur de l'application

Joomla est une application open source complexe qui est régulièrement améliorée. Il est donc important de ne pas altérer son coeur pour pouvoir la mettre à jour facilement dès qu'une nouvelle version est annoncée. La bonne nouvelle, c'est qu'il existe de nombreux moyens de surcharger ou surclasser le code source existant, d'utiliser les nombreux champs personnalisés du CMS ou de créer ses propres extensions.

Les composants (applications routant leurs propres URL comme le gestionnaire de contenu) et les modules (widgets d'affichage) de Joomla se conforment au modèle de programmation MVC (Model-view-controller). L'utilisateur a la possibilité de substituer le code HTML/PHP de chaque vue en l'ajoutant dans un dossier nommé HTML à l'intérieur du dossier template et même de créer des vues alternatives. L'interface d'administration permet de générer rapidement ces surcharges (overrides) d'un clic dans le gestionnaire de templates. D'autres éléments d'interface, appelés Affichages (layouts), peuvent être substitués de la même manière. Ces fichiers peuvent être personnalisés et ne seront pas écrasés lors de la prochaine mise à jour (ne pas oublier de les synchroniser de temps en temps).

 Gestion des templates

Lorsque ces techniques ne font pas l'affaire, il est possible de programmer un troisième type d'extension, un plugin, qui modifie le fonctionnement global de l'application. Par exemple, un plugin peut ajouter un nouveau type de champ personnalisé, intégrer des meta-données ou des micro-données à la volée dans le code HTML, crypter les adresses emails ou transformer des shortcodes en divers éléments d'interface plus complexes comme des diaporamas.

Modifier le template en fonction des pages et des catégories

Le code CSS peut être injecté à différents niveaux pour modifier l'apparence du site: dans le template, directement dans les articles, mais aussi à l'intérieur d'un module et à l'extérieur (module chrome). Les modules sont activés ou désactivés à volonté dans chaque page ou catégorie assignée à un élément de menu. C'est pratique, car les modules peuvent charger leurs propres feuilles de style ou scripts Javascript, ce qui permet un contrôle très fin sur ce qui est chargé et à quel moment.

Le gestionnaire de menu de Joomla permet aussi d'ajouter des noms de classe pour créer des règles CSS spécifiques à une page particulière ou de choisir un style de template. Un fichier XML est utilisé pour configurer les styles de template comme pour tous les autres types d'extensions de Joomla. Par exemple, il est possible de créer le bouton de sélection d'un logo, d'un code de couleur ou d'un simple champ texte sans devoir programmer l'interface. C'est vraiment un gros plus par rapport à d'autres CMS. Joomla est livré avec les fichiers LESS du framework Bootstrap (en version 2 pour l'instant), ce qui permet de tailler sur mesure l'interface responsive du template par défaut Protostar. En attendant la prochaine version du CMS qui modernisera son backend et son template de base, il est possible d'installer des templates avec des librairies plus récentes, des frameworks professionnels comme Gantry 5 ou Yootheme, voire de développer en "flat files" avec Pages de JoomlaTools.

Créer ses propres extensions

Ok, l'interface de programmation orientée objet de Joomla est complexe et peut être confuse en raison de la présence de code legacy (lié à d'anciennes versions) et de la nécessité de naviguer dans la hiérarchie des classes Joomla. La documentation, en net progrès dans sa version anglophone, n'est pas exhaustive. Mais la structure et l'organisation des fichiers sont éprouvées. Pour gagner du temps, il est possible de créer le squelette de l'extension que l'on veut développer avec Component creator ou en téléchargeant un boilerplate sur Github. En effet, réaliser la structure MVC multilingue d'une extension et son paramétrage à l'aide de fichiers xml et ini est l'aspect le plus rébarbatif. Mieux vaut automatiser ce qui peut l'être. Examiner le code source d'une extension installée par défaut par le CMS peut être un bon point de départ. De plus, le JED (Joomla extensions directory) propose des milliers d'extensions gratuites ou payante qui peuvent être téléchargées et installées directement depuis l'interface d'administration du CMS. Mais attention, la qualité de leur code source et leur compatibilité avec les versions les plus récentes de Joomla et de PHP peuvent être variables. Certains développeurs comme Akeeba, JCE ou RSJoomla sont néanmoins à recommander en ce qui concerne mon expérience personnelle. Joomla est aussi connu pour ses extensions de développement de type CCK (K2, Seblod, Fabrik), mais je ne les ai pas utilisées.

La sécurité

La sécurité d'un CMS sur un serveur est un sujet à part entière. Néanmoins, en suivant les conseils précédents, on aura compris que mettre à jour l'application et ses extensions permettra déjà d'améliorer considérablement la sécurité de son site.

Joomla est considéré "out of the box" comme un des CMS les plus sûrs selon les mots du fondateur d'Akeeba. Il est en plus livré avec deux plugins indispensables pour améliorer la sécurité de son site: Google reCaptcha filtre l'accès des robots aux formulaires et Google Authenticator protège l'accès à l'interface d'administration par un code secret modifié toutes les 30 secondes. Comme expliqué précédemment, la classe JForm permet de définir facilement dans un fichier XML les champs à utiliser, par exemple pour créer le backend d'un module, template, composant ou plugin, en bénéficiant des règles de sécurité et des filtres de l'API Joomla. De nombreuses règles de sécurité supplémentaires peuvent être incluses dans le fichier htaccess du serveur Apache pour bloquer les attaques. En cas de doute pour sécuriser son site, il vaut mieux installer une extension comme Akeeba Admin Tools (version payante) qui va créer les règles pour Apache/Nginx à votre place et offrir des services de protection, d'audit et d'alerte supplémentaires.

Source: Développement d'un composant MVC

Devis et renseignement gratuits