T3FRUniversity 2005 - Boîte à outils - TypoScript
Documentation
La référence complète du TypoScript peut être obtenue à l'adresse suivante:
typo3.org/documentation/document-library/references/doc_core_tsref/current/
typo3.org/documentation/document-library/references/doc_core_tsref/current/
Cette documentation s'adresse aux personnes possédant déjà une certaine expérience en TypoScript. Peut les débutants, un tutoriel est également disponible (TypoScript By Example):
-
Version officelle (en anglais):
typo3.org/documentation/document-library/core-documentation/doc_core_tsbyex/current/ -
Traduction française:
typo3.org/documentation/document-library/tutorials/doc_core_tsbyex_fr/current/
TypoScript: OptionSplit
L'OptionSplit est une fonction TypoScript extrêmement puissante et pratique. Elle nécessite par contre un peu de pratique pour être utilisée de manière correcte.
Cette fonction, utilisée notemment dans la construction de menus dynamiques, sert à attribuer des valeurs différentes pour un groupe d'objet, en fonction de leurs positions.
Les valeurs sont séparées en utilisant deux types de marqueurs spécifiques:
|*|
Ce marqueur est utilisé pour séparer les valeurs en 3 groupes (premier, milieu, et dernier). Il est donc impossible d'en utiliser plus que deux.
Ce marqueur est utilisé pour séparer les valeurs en 3 groupes (premier, milieu, et dernier). Il est donc impossible d'en utiliser plus que deux.
||
Ce marqueur sert à séparer chaque groupe de valeurs séparées préalablement par le premier marqueur en un nombre N de valeurs.
Ce marqueur sert à séparer chaque groupe de valeurs séparées préalablement par le premier marqueur en un nombre N de valeurs.
Exemple:
premier_1 || premier_2 |*| milieu |*| dernier_1 || dernier_2 || dernier_3
premier_1 || premier_2 |*| milieu |*| dernier_1 || dernier_2 || dernier_3
Règles:
Il existe 4 règles qui régissent le concept de l'OptionSplit:
Il existe 4 règles qui régissent le concept de l'OptionSplit:
- La priorité des marqueurs est la suivante: dernier, premier, milieu.
- Si la valeur du milieu est vide, c'est la dernière partie du premier groupe de valeurs qui sera utilisée à la place.
- Si la valeur du début ou du milieu est vide, c'est la première partie du dernier groupe qui sera utilisée pour ces valeurs.
- La valeur du milieu se répète au besoin, en reprenant à chaque fois depuis le début de son sous-groupe.
TypoScript: RootLine
Voici le code TypoScript nécessaire à la création d'un chemin d'accès vers la page courante, appelé rootline.
Notez l'utilisation de l'OptionSplit dans la configuration de ce type de menu.
/**
* Rootline
*/
lib.menus.rootline = HMENU
lib.menus.rootline {
// Rootline type
special = rootline
// Text menu
1 = TMENU
1 {
// Wrap
wrap = <div class="menu_rootline"<Vous êtes ici: / |</div>
// Normal state
NO.linkWrap = | / |*||*| |
}
}
TypoScript: Multi-langue
Dans le cas d'un site Typo3 multi-langue, il est nécessaire de configurer chaque langue dans un template TypoScript.
En premier lieu, il faut définir la langue par défaut du site:
/**
* Config object
*/
config {
// Default language settings
sys_language_uid = 0
language = fr
locale_all = fr_FR
linkVars = L
}
Tout d'abord, nous définissons quelle langue de site (créée préalablement dans l'interface d'administration). En l'occurence, 0 puisqu'il s'agit de la langue par défaut.
Le deuxième paramètre indique le code de la langu, tandis que le troisième sert à configurer les locales (utilisées par exemple pour l'affichage des dates au format long).
Le quatrième paramètre, quant à lui, indique au système quelle variable sera utilisée pour changer de langue.
Ensuite, chaque langue peut être configurée séparément dans des conditions TypoScript. Notez que ces conditions ne peuvent se trouver qu'au premier niveau du code TypoScript, c'est à dire pas à l'intérieur d'un autre objet:
// French language
[globalVar = GP:L = 0]
config.sys_language_uid = 0
config.language = fr
config.locale_all = fr_FR
[GLOBAL]
// English language
[globalVar = GP:L = 1]
config.sys_language_uid = 1
config.language = en
config.locale_all = en_EN
[GLOBAL]