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!