[Joomla] Le cache, pour un site Joomla 1.5 à haut trafic

Dernièrement j’ai procédé au lancement de la nouvelle plateforme du Journal L’Avantage à Rimouski. Le nouveau site, en Joomla 1.5, est construit avec un bon nombre de modules, plugins et composants maison que j’ai programmé moi même pour les besoins du projet. Lorsque l’on programme pour un site avec un potentiel de trafic élevé, il est très important d’utiliser les fonctions natives de caching de Joomla dans notre programmation afin de donner une petite chance au serveur SQL de survivre à, par exemple, une nouvelle indexée dans Google News.

Déjà, si vous savez comment programmer avec le framework de Joomla, utiliser les fonctions natives de caching de ce dernier ne devrait pas vous causer beaucoup de problème. En réalité c’est extrêmement simple.

En premier lieu, il faut activer le cache dans la configuration globale de Joomla par le GUI du Backend. Cependant, il est possible de forcer l’utilisation de la cache en informant directement Joomla dans votre code source (voir ci-dessous). Pratique lorsque l’on fait un code gourmand que l’on pense distribuer publiquement.

En premier lieu, déclarez une référence vers l’objet global JFactory de Joomla directement dans votre code php afin d’informer le cadriciel que vous désirez utiliser cette fonctionnalité.

$cache = & JFactory::getCache();

Si vous avez besoin de forcer l’utilisation du cache dans vos créations, par exemple pour un code avec le potentiel de requête SQL lourde sur plusieurs milliers d’entrée dans une BD SQL, vous pouvez indiquer à Joomla que vous désirez forcer l’utilisation du cache de cette façon :

$cache->setCaching( 1 );

Encore une fois, cette technique est très utile lorsque vous développez un code gourmand, destiné au grand publique.

Par la suite, il suffit de convertir votre méthode d’extraction des données traditionnelle pour la faire traiter par le système de caching de Joomla.

Par exemple, la méthode suivante :

$mesDonnees = maClasse::obtentionDeMesDonnees();
Deviendra :

$mesDonnees = $cache->call( array( 'maClasse', 'obtentionDeMesDonnees' ) );

Vous pouvez passer des paramètres à votre classe très facilement en ajoutant simplement vos variables à la fin du tableau. Par exemple :

$mesDonnees = maClasse::obtentionDeMesDonnees($variable);

Deviendra :

$mesDonnees = $cache->call( array( ‘maClasse’, ‘obtentionDeMesDonnees’),$variable);

Notez également que vous pouvez utiliser une fonction n’étant pas membre d’une classe de la façon suivante :

$mesDonnees = maFonction();

Deviendra :

$mesDonnees  = $cache->call( 'maFonction' );

Le reste de votre code s’exécutera de la façon habituelle, mais utilisera des données en provenance du cache. Cela donnera un sérieux « break » à votre serveur SQL et aura pour effet direct d’améliorer la vitesse de chargement de votre projet Joomla 1.5.

Bon code!

Références (anglais seulement) : http://docs.joomla.org/Tutorial:Using_Caching_to_Speed_Up_Your_Code

L’été s’annonce pas mal rock’n'roll

Je ne sais pas pour vous mais pour ma part, l’été s’annonce particulièrement chaud et très occupé. Après le lancement du méga projet en Joomla des Publications L’Avantage (www.lavantage.qc.ca), lequel aura monopolisé le plus clair de mon temps, j’ai cumulé beaucoup de retard avec le reste de mes travaux. J’ai du travail par dessus la tête, que ce soit au bureau ou par les soirs avec mes projets personnels, mes légendaires Garden Party et délicieux BBQ ou l’entretiens de mon serveur Linux et de mon bungalow. J’ai tellement d’ouvrage que je m’interroge la pertinence de prendre du temps pour aller relaxer sur un lac cet été. D’ailleurs, si cela vous intéresse, je suis à la recherche d’un ou d’une assistant(e) programmeur Web Junior ainsi que d’un spécialiste Linux pour greffer à notre équipe technique.

Pour davantage d’informations sur les postes en question, visitez http://www.lavantage.qc.ca/carriere-chez-nous et hésitez pas à me donner vos commentaires !

[Joomla] Tutoriel pour ajouter un champ personnalisé dans la rédaction d’article

Voici un petit tutoriel couvrant la base pour ajouter un champ personnalisé, par exemple un sous titre, à vos articles Joomla. J’ai eu besoin de modifier le core de Joomla afin d’ajouter cette fonctionnalité pour un projet de Journal en ligne, comportant un exergue à la majorité de ses articles.

Cette solution est intéressante, facile à implanter et à utiliser mais elle a le défaut de nuire à la mise à jour de Joomla. Le jour ou vous procéderez à une mise à jour de votre CMS Joomla, vous aurez probablement à refaire cette petite procédure en entier.

Ce tutoriel prend en considération que vous avez les notions de base en programmation et en gestion de votre base de données SQL. Si vous avez besoin d’aide avec votre projet Joomla, contactez moi. Cette solution  s’applique à la version 1.5 de Joomla. Voici donc comment procéder :

ÉTAPE 1 : Faite un backup de vos fichiers!

Il est très important de copier vos fichiers et votre base de données avant de procéder à cette modification. Vous risquez potentiellement de faire planter votre site si vous vous trompez et vous pourriez avoir besoin de restaurer vos fichiers originaux.

ÉTAPE 2 : modification de la base de données

Avec votre logiciel de gestion de base de données préféré, ouvrez la base de données correspondant à votre projet. Ouvrez la table jos_content et ajouté à sa structure un nouveau champ, par exemple soustitre. Choisissez un type de champ VARCHAR de taille 255.

ÉTAPE 3 : Gestion de l’affichage sur le frontend du site

Commencez par créer un override pour l’affichage du contenu sur votre site. Un override permet de modifier le output d’un composant core publique de Joomla sans avoir à modifier le fichier original. C’est déjà ça de moins à modifier lors de la mise à jour de Joomla. Dans le répertoire de votre template (/templates/nom_de_votre_template/), assurez-vous d’y avoir un répertoire html. Ajoutez-y (s’il n’existe pas déjà) le répertoire com_content et article. Copier le fichier default.php que vous retrouverez dans le répertoire /components/com_content/views/tmpl/ vers votre répertoire /templates/nom_de_votre_template/html/com_content/article/.

Ouvrez le fichier default.php que vous venez de copier. Allez à la ligne 25 et ajoutez :

<?= $this->escape($this->article->soustitre); ?>

Remplacez soustitre par le nom du champ que vous avez ajouté à votre table SQL (voir étape 1).

Vous pouvez modifier le output comme bon vous semble, ajouter des conditions de l’affichage, des suffixes de classes CSS etc. dans ce fichier et gérer l’affichage comme vous le souhaitez.

ÉTAPE 4 : Modifier le fichier article.xml

Le fichier article.xml comporte une série d’instruction pour les paramètre assignés à la gestion des champs dans le formulaire d’ajout d’article. Si, par exemple, vous voulez contrôler l’affichage de votre champ personnalisé sur la page frontispice ou non, c’est ici que ça se passe.

Ouvrez le fichier /administrator/components/com_content/models/articles.xml et rendez-vous à la ligne 27. Pour contrôler l’affichage de votre champ personnalisé sur la page frontispice, ajoutez le code suivant :

<param name= »show_ soustitre » type= »list » default= »" label= »Afficher le soustitre » description= »Affiche ou cache le soustitre »>
<option value= »">Use Global</option>
<option value= »0″>No</option>
<option value= »1″>Yes</option>
</param>

Remplacez soustitre avec le nom du champ que vous avez ajouté dans la base de données SQL.

ÉTAPE 5 : Modifier le formulaire dans le backend

La prochaine étape consiste à modifier le fichier en charge de l’affichage du formulaire dans le backend de Joomla. Ouvrez le fichier /administrator/components/admin.content.html.php et rendez-vous à la ligne 797. Tout de suite après le </tr>, ajoutez la ligne suivante :

<tr>
<td>
<label for= » custom_field « >
<?php echo JText::_( ‘Sous titre’ ); ?>
</label>
</td>
<td>
<input type= »text » name= » soustitre  » id= »soustitre  » size= »40″ maxlength= »255″ value= »<?= $row->soustitre; ?> »/>
</td>
</tr>

Encore une fois, n’oubliez pas de remplacer soustitre avec le nom du champ que vous avez ajouté dans la base de données SQL. Ce bout de code ajoutera le champ sous titre sous le champ titre dans le formulaire d’ajout d’article (voir le screenshot en début d’article).

ÉTAPE 6 : Ajouter la correspondance du nouveau champ dans config.xml

Pour indiquer à Joomla d’utiliser notre paramètre d’affichage sur le frontend, ouvrez le fichier /administrator/components/config.xml et rendez-vous à la ligne 16. Insérez le code suivant :

<param name= »show_subtitle » type= »radio » default= »1″ label= »Show
Article SubTitle » description= »Show/Hide the articles subtitle »>
<option value= »0″>No</option>
<option value= »1″>Yes</option>
</param>

De concert avec la modification de l’étape 3, ceci aura pour effet de gérer l’affichage sur le frontend de Joomla.

ÉTAPE 7 : Informer Joomla de notre nouveau champ dans la table jos_content

Ajouter un champ ne suffit pas. La base de données est géré par une librairie et il faut indiquer à Joomla d’utiliser notre nouveau champ. Pour y parvenir, il faut modifier le fichier /libraries/joomla/database/table/content.php. Rendez-vous à la ligne 33 et ajoutez le bout de code suivant :

var $subtitle = null;
/** @var string **/

Bravo, votre formulaire gère maintenant votre nouveau champ!

Truc et astuce Joomla de la semaine

Un petit truc rapide pour les développeur Joomla débutant, lorsque l’on créé un template pour Joomla 1.5.x, il arrive parfois que l’on aimerait afficher un truc uniquement sur la page d’accueil du site Internet. Pour se faire, il suffit simplement d’ajouter le bout de code suivant :

<?php $menu = & JSite::getMenu();
if ($menu->getActive() == $menu->getDefault()) {
    --> votre contenu ici <--
}
?>

Bon développement Web avec Joomla!