Le développement d'extensions sous TYPO3 (suite)
Constantes et Setup de l'extension
Nous disposons de deux méthodes pour configurer notre extension.
1 - soit en renseignant constantes et setup depuis le gabarit racine de notre site. Il faudra simplement compléter les champs "Contants" et "Setup"
2- soit en procédant à une inclusion de template statique. Il s'agit du champ "Include static (from extensions)"
La 1ère méthode est efficace et éprouvée. Cependant, je vais vous montrer comment intégrer des constantes et un setup depuis le champ "Include static" évoqué dans la seconde méthode.
Les constantes sont placées dans le fichier pi1/static/default_contactlist/constants.txt et le setup est placé dans le même répertoire, fichier setup.txt. Nous avons évoqué la méthode de classe addStaticFile. Celle-ci est appelée dans le fichier ext_tables.php. Voici la syntaxe :
t3lib_extMgm::addStaticFile($_EXTKEY,"pi1/static/","Contact List");
où $_EXTKEY est la clé de l'extension, le second argument représente le chemin vers les fichiers et le troisième argument fait office de légende dans le backend. Ainsi, vous retrouverez cette information dans la partie "Include static" comme le montre l'image ci-dessous :
Avec la ligne suivante, je change la légende :
t3lib_extMgm::addStaticFile($_EXTKEY,'static/default_contactlist/', 'Default setup');
Utilisation d'un template HTML pour le rendu dans le frontend
Nous allons utiliser un template HTML composé de marqueurs pour afficher les informations de notre base de données en frontend. Ce fichier s'appelera user_contactlist_template.html
Le fichier user_contactlist_template.html contient une liste des marqueurs et de subparts :
###TEMPLATE### est un subpart pour identifier le gabarit utilisé par notre extension.
###ITEM### est également un subpart pour identifier un enregistrement dans la base de données.
Nous avons ensuite des marqueurs à remplacer par les champs dans notre base de données :
###FIRSTNAME###, ###LASTNAME###, ###STREET###, etc.
Nous allons configurer le setup de notre gabarit pour lui indiquer où se situe ce template html.
// Mon extension
plugin.user_contactlist_pi1 {
templateFile = EXT:user_contactlist/pi1/user_contactlist_template.html
}
La classe à modifier est située dans le fichier pi1/class.user_contactlist_pi1.php. Dans cette classe, on retrouve comme dans toute extension, une méthode chargée d'afficher les information en frontend : main($content,$conf) où $content est le contenu à afficher tandis que $conf contient les informations indiquées dans le setup de votre gabarit root.
Par exemple, $conf['templateFile] contient le chemin vers notre gabarit HTML. Nous allons progressivement restreindre notre champ d'action aux marqueurs. Ceux-ci seront remplacés par les champs de notre base de données. La requête en base est executée avec la fonction exec_SELECTquery
Les autres méthodes à connaître :
- fileResource() ou cObj->FILE qui va lire le contenu de notre template HTML comme le ferait un fread avec php
- getSubpart() récupére le contenu entre deux subparts
- substituteMarkerArrayCached() s'occupe du « chercher-remplacer » pour les marqueurs/subparts et le contenu récupéré en base
- pi_wrapInBaseClass est une simple méthode qui retourne le contenu entouré par une classe portant le nom de notre extension.
Exemple : <div class="user-contactlist-pi1">$content</div>
Voici ce que vous pouvez faire simplement avec quelques connaissances en PHP, une légère lecture de l'API pour les principales fonctions et de la pratique :
Les derniers articles à consulter :
Afficher une page 404
Comment créér une page non trouvée (404) sous TYPO3
TYPO3 et le e-Commerce (1ère partie)
Quelle extension utiliser pour faire du e-Commerce avec TYPO3 ?
Felogin, la newloginbox intégrée (TYPO3 v 4.2)
Felogin remplace l'extension newloginbox et offre la possibilité d'offrir une boite de connexion pour protéger l'accès à certaines pages.
