1. Pour ne pas compliquer la tâche, on va utiliser des champs déjà existant de la table tl_content :
- le champ headline pour le titre
- le champ text pour le descriptif
2. Dans /system/modules/ on crée un répertoire ex : mon_CE
Dans ce répertoire on crée 4 autres répertoires : config, dca, templates et languages
3. Dans le répertoire dca on crée un fichier tl_content.php
Ce fichier décrit les champs qui s'afficheront dans le Back office.
- Le champs 'type' est obligatoire, c'est lui qui gère la liste déroulante des types d'éléments de contenu.
- Les champs 'headline', 'guests', 'cssID', 'space' ne sont pas obligatoire, mais si l'on veux être conforme à l'héritage de la classe ContentElement, il faut les ajouter.
guests : gestion des protections d'accès.
cssID : ID CSS
space : Espace avant et après
Les champs entre accolade, sont les catégories qui se plient/déplient afin de chacher ou montrer les champs dans le Back office
tl_content.php contiendra les lignes :
- Code: Tout sélectionner
<?php if (!defined('TL_ROOT')) die('You can not access this file directly!');
$GLOBALS['TL_DCA']['tl_content']['palettes']['mon_type_d_element'] = '{type_legend},type,headline;{text_legend},text;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID,space';
?>
4. Dans le répertoire config on crée un fichier config.php, qui permettra d'initialiser et d'afficher notre élément de contenu en Front office et en Back office. On y ajoute les lignes suivantes :
- Code: Tout sélectionner
<?php if (!defined('TL_ROOT')) die('You can not access this file directly!');
$GLOBALS['TL_CTE']['categorie_du_type_d_element']['mon_type_d_element'] = 'ContentMonType';
?>
- à la place de 'categorie_du_type_d_element' on peux utiliser des catégorie existantes telle que 'texts', 'links', 'images', 'files', 'includes'.
- 'mon_type_d_element' sera un nom qui décris le type de l'élément et devra être le même que celui du fichier dca/tl_content.php.
Pour l'exemple, je garderai les valeurs 'categorie_du_type_d_element' et 'mon_type_d_element'
A partir de ce point, vous pouvez déjà éditer votre élément de contenu dans le back office. Allez dans un article, ajoutez un élément de contenu de type 'mon_type_d_element'
5. Dans le répertoire mon_CE on crée un fichier ContentMonType.php
avec comme contenu :
- Code: Tout sélectionner
<?php if (!defined('TL_ROOT')) die('You can not access this file directly!');
class ContentMonType extends ContentElement
{
protected $strTemplate = 'ce_monType'; // notez qu'il ne faut pas mettre .tpl à la fin
protected function compile()
{
// on alimente le template avec les données venant de la table tl_content
// 'headline', 'guests', 'cssID', 'space' sont renseignés automatiquement grâce à l'héritage de la classe ContentElement;
$this->Template->text= $this->text;
}
}
?>
6. Dans le répertoire templates on crée un fichier ce_monType.tpl avec comme contenu :
- Code: Tout sélectionner
<div class="<?php echo $this->class; ?> block"<?php echo $this->cssID; ?><?php if ($this->style): ?> style="<?php echo $this->style; ?>"<?php endif; ?>>
<?php if ($this->headline): ?>
<<?php echo $this->hl; ?>><?php echo $this->headline; ?></<?php echo $this->hl; ?>>
<?php endif; ?>
<?php echo $this->text; ?>
</div>
7. Dans le répertoire languages, on crée un répertoire fr et dedans un fichier default.php (il devra être encodé en format UTF-8 sans BOM) qui contiendra les lignes suivantes :
- Code: Tout sélectionner
<?php if (!defined('TL_ROOT')) die('You can not access this file directly!');
$GLOBALS['TL_LANG']['CTE']['categorie_du_type_d_element'] = 'Ma catégorie';
$GLOBALS['TL_LANG']['CTE']['mon_type_d_element'] = array('Mon élément','Description de mon élément');
?>
Et voilà ! vous venez de créer votre premier élément de contenu
