Générer une image contenant plusieurs lignes de texte

by Cédric Aellen /

Un petit truc pour mes amis "typoteurs". Typo3 permet de créer du texte sous forme d'image. Mais voilà, l'objet Gifbuilder qui permet cela ne gère pas le multi ligne automatiquement. Voici comment y parvenir ... Disons qu'on veut créer une en-tête de page sous forme d'image. Dans cette image, il nous faut trois lignes à disposition pour y écrire du texte. Pour ce faire, nous allons utiliser le champ "résumé" (abstract) des propriétés de la page. Si rien n'est définie dans ce champ, les pages parentes vont être remontées jusqu'à trouver une valeur à utiliser (slide). Pour pouvoir utiliser le champ "résumé", il faut ajouter "abstract" à  la variable $TYPO3_CONF_VARS['FE']['addRootLineFields'] dans l'install tool (typo3conf/localconf.php) Bien entendu pour que cela fonctionne, il faut mapper notre en-tête dans le gabarit TamplaVoilà. Celui-ci doit être de type "TypoScript Object Path" ou un objet TypoScript si vous préférez. Nous allons l'appeler lib.header.title. Une fois que c'est fait, voici la configuration TypoScript que doit se trouver dans le gabarit du site. [code lang="cpp"] ##################################################################### # [Header Title Image] # # Le texte affiché correspond à ce qui se trouve dans le champ # abstract de la page # # Les lignes sont séparées par des tubes (|) # ex : ligne1 | ligne2 | ligne3 # # La troisième ligne est ajustée en-bas du GIF. La deuxième est au-dessus et # la première encore au-dessus lib.header.title = IMAGE lib.header.title.file = GIFBUILDER lib.header.title.file { #dim de l'image XY = 329,150 #couleur de fond de l'image backColor = #ffffff #Première ligne 10 = TEXT 10 { #Les titres sont éditables jusqu'au niveau -10 du site text.data = fullRootLine:10, abstract, slide #char de retour à la ligne text.listNum.splitChar=| #première partie du contenu du champ "résumé" (jusqu'au premier tube) text.listNum = 0 # couleur de la police fontColor = #333333 # le texte est aligné à droite du gif align = right #espacement entre les mots wordSpacing = 2 #taille de la police fontSize = 28 #police (il faut un format TTF) fontFile = fileadmin/templates/library/fonts/maPolice.ttf #positionnement du texte par rapport au bord droite (vu que aligné à droite et au haut) offset = -10,75 #nicetext activé nicetext = 1 } #Pour les deux ligne suivantes, on écrase que les configs qu'on veut modifier #Deuxième ligne 20 > .10 #deuxième partie du contenu du champ "résumé" (entre le premier tube et le deuxième) 20.text.listNum = 1 #positionnement 20.offset = -10,105 #Troisième ligne 30 > .10 #deuxième partie du contenu du champ "résumé" (après le deuxième tube) 30.text.listNum = 2 #positionnement 30.offset = -10,135 } # Sur la homepage je veux une image par défaut # 1 est l'id de ma rootpage [treeLevel=0] && [PIDinRootline = 1] lib.header.title > lib.header.title = IMAGE lib.header.title { file = fileadmin/templates/library/image/header.title.png altText = Image d'en-tête du site } [GLOBAL] [/code] Bien entendu, on peux utiliser plus de trois lignes. Il suffit d'adapter ce script.