Le plus simple est de s'inspirer d'un composant du core Joomla 2.5 ou + (par exemple com_banners ou com_contacts).
Quelques points essentiels à ne pas oublier
- votre table doit avoir un champ nom catid: catid int(10) UNSIGNED NOT NULL DEFAULT '0'
- dans votre composant / administration, il faut un helper du nom du composant avec une fonction statique addSubmenu (voir administrator/components/com_banners/helpers/banners.php)
- dans votre composant (front) il faut un helper category qui definira une classe fille de JCategories appelée VotreComposantCategories qui definira au minimum dans son constructeur le nom de la table et le nom de l'extension.
(voir components/com_banners/helpers/category.php). - Pour avoir un titre spécifique à votre composant dans l'administration de vos catégories, il faut que dans votre fichier de langue soit défini les clés :
COM_VOTRECOMPOSANT
COM_VOTRECOMPOSANT_SECTION si vous avez plusieurs catégories et que vous utilisez donc la notion de section.
Plusieurs catégories dans un composant
Si vous avez besoin de plusieurs catégories dans votre composant, il fadra ajouer une notion de section.
Par exemple :
Composant : com_competition
La première catégorie regroupera les compétitions par circuit ou chalenge
La deuxième catégorie indiquera le calendrier regroupe les épreuves de même niveau (départemental, régionnal ou nationnal, ou selon la discipline ligue1, lugue 2, etc...).
Il faudra donc définir une 2ème classe héritant de JCategorie dans le même fichier helper de nom category.php ou dans un autre fichier à condition de l'enregistrer par un classique JLoader::register
Il comprendra quelque chose de ce type :
class GskiepreuvesCalendrierCategories extends JCategories
{
public function __construct($options = array())
{
$options['table'] = '#calendrier_evenement';
$options['extension'] = 'com_competition.calendrier';
$options['statefield'] = 'published';
$options['key'] = 'id';
parent::__construct($options);
}
}
Avoir des rubriques spécifiques dans vos catégories
Il suffit de crée un xml des champs à rajouter (ces champs se trouveront dans l'onglet 'paramètres' de vos catégories) et structuré de la sorte :
<?xml version="1.0" encoding="UTF-8"?>
<form>
<fields name="params">
<fieldsetname="basic">
...ici les champs
</fieldset>
</fields>
</form>
Ce fichier s'appellera category.xml ou category.nom_de_votre_section.xml et est à placer dans /administrator/components/com_votrecomposant/models/forms
Remarque
- une feuille de style spécifique peut-être définie pour le composant (je n'ai pas approfondi ce point -a priori dans com_votrecomposant/administrator/categories.css)