Par défaut, Joomla regroupe les champs personnalisés dans des onglets séparés de l'éditeur d'article. Pratique pour ne pas surcharger l'interface, mais parfois contre-productif quand vos contributeurs doivent remplir ces champs à chaque article. Voici comment les ramener au premier plan.
01 Comprendre le problème
Quand vous créez des groupes de champs personnalisés dans Joomla (via Contenu → Champs → Groupes de champs), ils apparaissent automatiquement sous forme d'onglets dans l'interface d'édition d'article. L'utilisateur doit cliquer sur cet onglet pour accéder aux champs — une étape supplémentaire qui peut être oubliée.
L'objectif : afficher ces champs directement sous l'éditeur de texte, dans l'onglet principal, sans onglet intermédiaire.
Modifier directement les fichiers de Joomla est une mauvaise pratique : la prochaine mise à jour effacera vos modifications. La surcharge (override) est la méthode officielle et pérenne.
02 Le principe de la surcharge admin
Joomla permet de surcharger les vues de l'administration en plaçant des fichiers dans le dossier du template administrateur. Pour le template Atum (template par défaut de Joomla 5), le dossier de surcharge est :
com_content/
article/
edit.php ← votre surcharge
Joomla vérifie d'abord si ce fichier existe dans le template avant de charger le fichier original situé dans :
edit.php ← fichier original (ne pas modifier)
Copiez le fichier administrator/components/com_content/tmpl/article/edit.php vers votre dossier de surcharge avant de le modifier. Ne créez jamais un fichier vide from scratch.
03 Les deux fichiers en comparaison
Voici les différences clés entre le fichier original et la surcharge.
| Fichier original | Fichier surchargé | |
|---|---|---|
| Champs personnalisés | Générés dans des onglets séparés via joomla.edit.params |
Affichés sous l'éditeur ET exclus des onglets |
| Position | Onglet indépendant, après l'onglet principal | Intégrés dans la colonne principale, sous le texte |
| Onglets restants | Tous les onglets sont présents | Les onglets de champs personnalisés sont supprimés |
| Mises à jour Joomla | Écrasé à chaque mise à jour | Préservé — indépendant du core |
| Compatibilité | Tous les groupes de champs | Universel : détecte automatiquement les fieldsets fields-* |
04 Les modifications apportées
Modification 1 — Afficher les champs sous l'éditeur
Dans l'onglet principal (Contenu de l'article), juste après le champ éditeur, on ajoute une boucle qui détecte tous les fieldsets dont le nom commence par fields- — ce sont les groupes de champs personnalisés — et les affiche directement :
<!-- AJOUT dans la colonne col-lg-9, après le fieldset éditeur -->
<?php // Champs personnalisés affichés directement sous l'éditeur ?>
<?php foreach ($this->form->getFieldsets() as $name => $fieldset) : ?>
<?php if (strpos($name, 'fields-') === 0) : ?>
<fieldset class="options-form mt-3">
<?php if (!empty($fieldset->label)) : ?>
<legend><?php echo Text::_($fieldset->label); ?></legend>
<?php endif; ?>
<div>
<?php echo $this->form->renderFieldset($name); ?>
</div>
</fieldset>
<?php endif; ?>
<?php endforeach; ?>
Modification 2 — Exclure les champs des onglets
Sans cette étape, les champs personnalisés apparaîtraient en double : une fois sous l'éditeur, et une fois dans leurs onglets d'origine. On les exclut en les ajoutant au tableau $this->ignore_fieldsets avant l'appel à joomla.edit.params :
<!-- AJOUT juste avant LayoutHelper::render('joomla.edit.params', $this) -->
<?php
// Exclure les groupes de champs personnalisés des onglets
// (ils sont déjà affichés sous l'éditeur)
foreach ($this->form->getFieldsets() as $name => $fieldset) {
if (strpos($name, 'fields-') === 0) {
$this->ignore_fieldsets[] = $name;
}
}
?>
<?php echo LayoutHelper::render('joomla.edit.params', $this); ?>
fields- comme préfixe ?
Joomla nomme automatiquement les fieldsets des groupes de champs personnalisés avec le préfixe fields- suivi de l'identifiant du groupe. Cette convention est stable et permet une détection universelle sans hardcoder les noms de vos groupes.
05 Mise en place pas à pas
Copiez administrator/components/com_content/tmpl/article/edit.php vers administrator/templates/atum/html/com_content/article/edit.php. Créez les dossiers intermédiaires si nécessaire.
Dans la colonne col-lg-9, après la fermeture du </div> du fieldset éditeur, insérer la boucle foreach présentée ci-dessus.
Juste avant la ligne LayoutHelper::render('joomla.edit.params', $this), ajouter la boucle d'exclusion des fieldsets fields-*.
Dans l'administration Joomla : Système → Vider le cache. Rechargez ensuite l'éditeur d'article pour voir le résultat.
06 Résultat et avantages
Les champs personnalisés apparaissent directement sous l'éditeur de texte, dans l'onglet principal. Vos contributeurs n'ont plus besoin de naviguer entre les onglets pour remplir leur contenu. La solution est universelle : elle s'adapte automatiquement à tous vos groupes de champs, présents et futurs.
Voici un résumé de l'architecture finale :
edit.php ← votre surcharge active
administrator/components/com_content/tmpl/article/
edit.php ← original intact, jamais modifié
Vérifiez régulièrement si le fichier original com_content/tmpl/article/edit.php a évolué. Si c'est le cas, reportez les nouvelles modifications dans votre surcharge pour rester à jour. Joomla signale les surcharges potentiellement obsolètes dans le gestionnaire de templates.
