Zum Inhalt springen

Zeilenumbruch im GMENU --> Problem Umlaute!

Erstellt am 24. August 2010 · 8 Antworten · letzte Antwort am 7. September 2010

Tags: Frage

stevee ·

Hallo zusammen
Wollte eigentlich nur schnell für einen Kunden die Funktion einbauen, dass zweizeilige GMENU-Einträge gemacht werden können.

Habe das auch schon bei einer anderen Seite eingebaut wie folgt:

//// Menü 2. Ebene
	2 = GMENU
	2.NO = 1
	2.NO {
		wrap = |<br>
		XY = 252, 22+[46.h]
		backColor = #ffcc00
		
		//// Menütexte rendern
		40 = TEXT
		40.text.field = title
		40.text.listNum = 0
		40.text.listNum.splitChar = _
		40.fontFile = fileadmin/fonts/verdana.ttf
		40.fontSize = 12
		40.niceText = 1
		40.offset = 36, 16
		
		//// ggf. zweite Zeile anzeigen
		45 < .40
		45.text.listNum = 1
		45.offset = 36, 32
		
		//// Hilfsebene zur Höhenberechnung der Menüpunkte
		46 < .40
		46.text.listNum = 1
		46.text.case = upper
		46.fontSize = 21
		46.offset = -1000, -1000
	}

das alles funktioniert ja auch, ABER, sobald auch Umlaute im Titel sind, ist natürlich die Textebene höher als sonst, auch wenn man alles in Grossbuchstaben umwandelt.
Dazu habe ich leider noch nichts gefunden im Netz.
(Bei meiner ersten Seite, wo ich das eingebaut hab, hatten wir nie Titel mit Umlauten, darum habe ich das auch nie bemerkt, dass die Lösung nicht ganz ausgereift ist, obwohl sie so im T3-Buch von Robert Meyer steht)

Nun habe ich versucht, bei der Ebene 46 z.B. den Wert des Textinhaltes zu überschreiben, das ist mir aber mit keiner der folgenden Angaben gelungen:

		//// Hilfsebene zur Höhenberechnung der Menüpunkte
		46 < .40
		46.text.listNum = 1
		46.text.field >
		46.value = Test-Text
		46.text = Test-Text
		46.text.value = Test-Text
		46.text.data = Test-Text
		46.data = Test-Text
		46.text.case = upper
		46.fontSize = 21
		46.offset = -1000, -1000

gäbe es da eine Lösung evtl. mit if oder required, wo ich quasi abfragen würde, ob die "45.text.listNum = 1" überhaupt abgefüllt wurde und dann erstelle ich anstatt der Text-Ebene 46 z.B. eine Box, welche dann eine fixe Höhe hat?
Danach könnte ich diese Höhe wiederum einsetzen bei der Höhe des gesamten Menüpunktes.
Mit den if-Abfragen kenn ich mich aber leider nicht so toll aus, daher frage ich hier um Hilfe.

Danke Euch
Stevee

igorshmigor ·

Leichter wäre es vielleicht, für 46 einen Font mit identischer Versalhöhe zu verwenden, der keine Umlaute unterstützt.

stevee ·
igorshmigor schrieb

Leichter wäre es vielleicht, für 46 einen Font mit identischer Versalhöhe zu verwenden, der keine Umlaute unterstützt.

ja, das wäre sicher eine Möglichkeit.

Aber gibt es denn bei den if/required-Abfragen die Möglichkeit, dass man über Ebenen hinweg etwas abfragen kann?
Somit könnte ich eben so ein Box nur rendern lassen, wenn die listNum Nr. 1 überhaupt gefüllt ist...

Danke für die Hilfe

theis ·

Hallo Stevee,

Kannst du nicht das ganze 46 weglassen und folgendes eintragen?

XY = 252, 10+[40.h]+[45.h]
40.offset = 36,4+[40.h]
45.offset = 36,20+[45.h]

Somit wäre sichergestellt, dass die Höhe mit der tatsächlich benötigten Höhe übereinstimmt.

Gruss
Theis

stevee ·

Hallo Theis

Das ginge schon, aber das Problem ist ja, dass dann z.B. der Menüpunkt "Salpeter" höher wird als z.B. "Anna" wegen dem kleinen p.
Und das will ich natürlich nicht. Das ist eigentlich der Grund, warum der Text eben in Grossbuchstaben umgewandelt wird.
Nur sind eben dort die mit "¨" noch höher.

Danke

theis ·

Hallo Stevee,

es gibt beim GIFBUILDER noch "maxHeight".

Wäre dies hier evtl. die Lösung (maxHeight wäre dann die Höhe beider TEXT zusammen).

Gruss
Theis

stevee ·

Ja, maxHeight funktioniert!

Allerdings scheint mir das eher als dirty Hack - naja, es geht zumindest.

Eigentlich wollte ich es so irgendwie lösen:

//// Hilfsebene zur Höhenberechnung der Menüpunkte
46 < .40
46.text.listNum = 1
46.text.case = upper
46.value.stdWrap.parseFunc.short {
	Ö = O
	Ä = A
	&Auml; = A
	&auml; = a
	Ü = U
}
46.stdWrap.parseFunc.short {
	Ö = O
	Ä = A
	&Auml; = A
	&auml; = a
	Ü = U
}
46.fontSize = 21
46.offset = -1000, -1000

...Zeichen ersetzen mit parseFunc.short, aber offenbar geht das nur bei Texten, welche auch als Text ausgegeben werden.

Kann das jemand bestätigen oder weiss jemand, wie es trotzdem geht?

Danke Euch
Stevee

igorshmigor ·

Wieso wendest du den stdWrap auf value an? Das TEXT-Objekt des GifBuilders hat doch eigentlich gar kein "value". Ich denke es müsste so aussehen:

46.text.parseFunc.short{
stevee ·

Hallo Igor

Ja weisst Du, ich probier manchmal einfach viele Varianten aus - habe auch Deine Variante ausprobiert, aber auch diese geht nicht...

Gruss, Stevee

NEIN, ich habe mich geirrt !!!
Ich hatte dies ausprobiert:

46.text.stdWrap.parseFunc.short {

Aber mit

46.text.parseFunc.short {

funktioniert es, aber komischweise nur mit den normalen Zeichen, aber nicht mit den Umlauten.
Die Seite läuft NICHT mit UTF-8.

Weiss jemand, wie ich das codieren muss?

ä = a geht nämlich nicht!