Développeur TL débutant : Créer son propre élément de conten

Contribution des utilisateurs

Messagede cyril » 10 Déc 2009 23:07

Ce tutoriel va vous permettre de créer un élément de contenu qui possèdera seulement un titre et un descriptif :

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 ;)
Cordialement,

Cyril
Avatar de l’utilisateur
cyril
Site Admin
 
Messages: 573
Inscription: 14 Avr 2008 20:20
Localisation: Valence (Drôme)

Messagede tom-over » 11 Déc 2009 10:15

merci pour ce beau tuto... qui tombe à pic !

petite question : il est préférable de créer une table indépendante ou d'utiliser la table tl_content ?
et voir ajouter des ligne si nécessaire...
Avatar de l’utilisateur
tom-over
Membre
 
Messages: 936
Inscription: 23 Mai 2008 10:43
Localisation: Rouen

Messagede tom-over » 11 Déc 2009 11:52

j'ai remarqué un erreur l'ors du chargement de l'élément :
lors de la création d'un élément de contenu par defaut le type d'élément selectionné est de type "texte"

quand je souhaite selectionner mon élément fraichement créé... j'ai une alerte comme quoi je doit remplir le champ texte ??!?


PS : c'est étrange ça ne me le fait plus ! !

par contre il me créé un élément vide quans je quitte sans enregistré... c'est normal ?
Dernière édition par tom-over le 11 Déc 2009 11:56, édité 1 fois.
Avatar de l’utilisateur
tom-over
Membre
 
Messages: 936
Inscription: 23 Mai 2008 10:43
Localisation: Rouen

Messagede cyril » 11 Déc 2009 12:23

quand je souhaite selectionner mon élément fraichement créé... j'ai une alerte comme quoi je doit remplir le champ texte

Ce problème arrive quand on crée un élément de contenu qui utilise aussi l'élément texte obligatoire. Pourquoi ? je ne sais pas...

par contre il me créé un élément vide quans je quitte sans enregistré... c'est normal ?

oui, c'est le fonctionnement actuel de TYPOlight, des que l'on change la lite déroulante type, un élément est créé, là aussi... pourquoi ? je ne sais pas... si en fait je sais, c'est pour garder les modifications en cours :)

EDIT : j'ai fait des modifs sur le tuto pour être plus dans 'l'esprit' TYPOlight ;)
Cordialement,

Cyril
Avatar de l’utilisateur
cyril
Site Admin
 
Messages: 573
Inscription: 14 Avr 2008 20:20
Localisation: Valence (Drôme)

Messagede tom-over » 11 Déc 2009 12:56

Génial ! un grand merci à toi... je commence vraiment à m'amuser avec typolight..

dernière question et je te laisse tranquille.. jusqu'au nouveau probleme rencontré lol :

Tu me conseils quoi pour intégrer un lien ? au niveau syntaxe DCA et ligne de Bdd (url, imageUrl, useHomeDir...)
Dernière édition par tom-over le 11 Déc 2009 12:57, édité 1 fois.
Avatar de l’utilisateur
tom-over
Membre
 
Messages: 936
Inscription: 23 Mai 2008 10:43
Localisation: Rouen

Messagede cyril » 11 Déc 2009 13:07

le type 'url' me semble adéquat ;)
Cordialement,

Cyril
Avatar de l’utilisateur
cyril
Site Admin
 
Messages: 573
Inscription: 14 Avr 2008 20:20
Localisation: Valence (Drôme)

Re: Développeur TL débutant : Créer son propre élément de co

Messagede hurletout » 24 Aoû 2010 17:21

j'ai essayé ce tuto. j'ai tenté de faire un module personnalisé.

c'est ok a un détail près ...
en local avec easyphp cela semblait ok, mais dès que je suis passé sur le site réel (ovh..) des hoquets ont commencé à avoir lieu :

- il fallait rafraichir la page après chaque enregistrement/modif,
- une fois deloggué puis accès page connexion ... une erreur mettant en cause les headers php s'est déclarée

... un peu refroidie par expérience, pourtant il me semble que créer ses propres modules serait un point fort pour ce CMS qui sinon nous oblige à nombre de contorsions pour arriver à nos fin (dernière contorsion en date : afficher une accroche d'actualité avec une image)...

bon bon je fais quoi si cela fait tout planter ?
hurletout
Membre
 
Messages: 28
Inscription: 18 Aoû 2010 19:25
Localisation: Blois

Re: Développeur TL débutant : Créer son propre élément de co

Messagede Turom » 25 Aoû 2010 09:23

Salut hurletout,

À mon avis ce que tu décris ressemble beaucoup à un warning de PHP concernant les headers, peut être que des contraintes d'encodage créent des différences entre le local et le distant, ou des configs variables entre les serveurs qui deviennent + ou moins permissifs.

Vérifie bien ton code. Les fichiers sont ils bien TOUS en UTF-8 ? ( Sans BOM ! ) Vérifie bien que tu n'as pas d'espace qui traîne après un "?>" de fin de fichier PHP, active les messages d'erreur dans la config de TYPOlight pour voir un éventuel problème dans ton code.

Si tu suis bien le tuto, la création de module est vraiment simple, après il faut se rappeler que tu manipules des fichiers PHP, c'est du développement, ça nécessite de la pratique et l'apprentissage d'un certain nombre de bases dans le domaine, c'est un vrai métier ! :wink:

Bon courage en tout cas, persévère, tu ne seras pas déçue !
Avatar de l’utilisateur
Turom
Membre
 
Messages: 242
Inscription: 07 Nov 2008 15:54


Retourner vers Tutoriels utilisateurs

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités