[TYPO3-german] Typo3 Schrift-Positionierung auf GIFBUILDER Objekt

JoH asenau info at cybercraft.de
Wed Nov 7 22:42:29 CET 2007


> Ich habe folgendes unlösbares Problem.
> In meiner horizontalen Bild-Navigation habe ich gleich breite Buttons.
> Die Schrift darin soll horizontal und vertikal zentriert sein.
> Ein Button muss aber eine zweizeilige Aufschrift haben. Das führt zu
> zwei Problemen:
>
> 1. Die zweite Zeile ist nicht zentriert, sondern lediglich die gesamte
> Textbox auf dem Button, die Zeilen sind dabei linkbündig.

Das liegt daran, daß der Text als Ganzes per PHP Funktion mit GDlib/Freetype
gerendert wird und diese Funktion kennt nur "linksbündig"

> 2. Da ich keine option ausser "offset" kenne, mit der ein Text
> vertikal zentriert kann, ist nun die textbox bei zweizeiligen
> Navigationsbuttons nicht vertikal zentriert, sondern erhält das
> gleiche offst wie bei einzeiligem text.

offset kann aber auch relativ zu anderen Elementen berechnet werden.
z.B.:
offset = 0,[10.h]+20

> Daher meine 2 Fragen:
> 1. wie kann ich einem zerizeiligen Text ein anderes offset geben als
> einem einzeiligen
> 2. Wie kann ich die zweite Zeile im verhältnis zur ersten Zeile
> zentrieren?

Ich würde das mit einem verschachtelten GIFBUILDER lösen.
Statt eines Textes nimmst Du ein IMAGE, das exakt die Höhe bekommt, die
beide Zeilen + ein wenig Abstand (hier 10px) ergeben.
Danach wird das IMAGE Element seinerseits per align positioniert.
Weil align bei IMAGE Elementen aber VHalign kann, kannst Du dabei auch mit
center,center (c,c) arbeiten.

Außerdem würde ich den Split-Character weglassen und einfach das TCA des
Feldes umdefinieren, damit es im BE statt eines <input> Feldes ein
<textarea> verwendet.
Das kannst Du mit einer einfachen Zeile in der ext_tables.php erreichen:

t3lib_div::loadTCA('TABELLEN_NAME');
$TCA['TABELLEN_NAME']['columns']['FELD_NAME']['config']['form_type'] =
'text';

Du musst lediglich TABELLEN_NAME und FELD_NAME entsprechend anpassen.
Danach kanst Du direkt mit Zeilenschaltungen arbeiten, die durch
listNum.splitChar = 13 erkannt werden können.

Und so sieht das dann aus:

10 =IMAGE
10 {
    file = GIFBUILDER
    file {
        XY = 154,[10.h]+[20.h]+10
        10 = TEXT
        10 {
            offset = 0,[10.h]
            text.field = nav_title // title
            align = center
            fontColor = #FFFFFF
            text.listNum = 0
            text.listNum.splitChar = 13
        }
        20 < .10
        20 {
            text.listNum = 1
            offset = 0,[10.h]+[20.h]+10
        }
    }
    align = c,c
}

BTW: optionSplit funktioniert natürlich auch hier für alle Parameter also
z.B. auch so:

XY = 154,[10.h]+[20.h]+10|*|129,[10.h]+[20.h]+10

HTH

Joey

-- 
Wenn man keine Ahnung hat: Einfach mal Fresse halten!
(If you have no clues: simply shut your gob sometimes!)
Dieter Nuhr, German comedian
openBC/Xing: http://www.cybercraft.de
T3 cookbook: http://www.typo3experts.com
Jobs: http://www.professionals-only.com




More information about the TYPO3-german mailing list