Zum Inhalt springen

typolinks unterschiedlich gestalten, je nach Situation

Erstellt am 31. August 2008 · 14 Antworten · letzte Antwort am 2. September 2008

Tags: Links, Frage

sholvar ·

da bei typo scheinbar die CSS Einträge für "active" nicht funktionieren, würde ich gern der aktuellen Seite im typolink einen class-Eintrag mitgeben. Ich verwende für mein Menü kein HMenu sondern statische Marker.
So sieht es aus, wie ich es mir vorstelle. Es funktioniert aber noch nciht:
(Beispiel für die Startseite. Die anderen Einträge erben das Verhalten von dieser)

	START = COA
	START {
	  10 = TEXT
	  10.typolink.parameter = 1
          10.if {
            value.field = field:uid
            equals = 1
          }

	  20 < START.10
	  20.if.negate = 1
	}

Bitte im Berichtigung!

sholvar ·

danke für deine Antwort SLAng,

ich freue mich auch, ein Forum gefunden zu haben, wo noch aktiv was passiert. 🙂

START = COA
        START {
          10 = TEXT
          10.typolink.parameter = 1 - current
          10.if {
            value.field = field:uid
            equals = 1
          }

          20 < START.10
          20.typolink.parameter = 1
          20.if.negate = 1
        }

Entschuldige, ich habe meine Frage nicht korrekt formuliert. Es geht mir nicht darum, eine Class-Eigenschaft in einen Typolink zu kriegen, sondern darum, wie ich diese Class-Eigenschaft so gestalte, dass sie optional gesetzt wird, wenn man gerade auf dieser Seite ist.
ich denke, mein if ist falsch formuliert, aber ich habe keine Ahnung, wie ich es richtig mache.

sholvar ·

(editierfunktion des Forums geht nicht. da werd ich immer zur Startseite geschickt und das Post wird nicht geupdated. muss das so? 🙁 )
*edit*
gerade nochmal was ausprobiert, was ich in einem anderen Thread gelesen habe:

	START = COA
	START {
	  10 = TEXT
[globalVar = TSFE:id = 1]
	  10.typolink.parameter = 1 - current
[else]
          10.typolink.parameter = 1 - other
[global] 
        }

Erstmal kommt da immer die class other. Also als if funktioniert das (noch!) nicht. Aber jetzt werden die nachfolgenden Marker nicht mehr gesetzt. Wie gehts richtig?
Welcher der beiden Wege ist typischer/angenehmer (der eine weg mit .if der andere mit [Bedingung]en)?

steffenk ·

conditions dürfen nicht innerhalb von Verschachtelungen sein!

Ausserdem kann man sowas wie 1-current nicht als Parameter angeben - erwartet wird ein Integer für die Seite

sholvar ·

danke. Wie sollte es denn dann gestaltet sein? Wenn ich wüsste, wie es anders geht, würde ich ja nicht fragen.

typolink Doku:

Consider this .parameter value passed to this function:

51 _blank blueLink

This would result in a link approx like this:

<A href=”?id=51” target=”_blank” class=”blueLink”>

- bedeutet "setze kein @target-Attribut"

Also würde
.parameter = 51 - blueLInk

zu folgendem führen:
<a href="?id=51" class="blueLink">

sholvar ·

habe jetzt mal probiert, das Menü auch mit der HMENU Funktion zu gestalten.

	GLOBALNAV = HMENU
	GLOBALNAV {
	  1 = TMENU
	  1.wrap =   <ul id="globalnav" class="boo"> | </ul>
	  1.NO = 1
	  1.NO {
            wrapItemAndSub = <li id="current">|</li>
            #stdWrap.htmlSpecialChars = 1
            #ATagTitle.field = title
            value = hallo
	  }
	  1.ACT = 1
	  1.ACT {
	    wrapItemAndSub = <li id="other"> | </li>
          }
	}
	GLOBALNAV = HTML
	GLOBALNAV.value (
  <ul id="globalnav">
    <li id="gn-vboo" >###START###</li>
    <li id="gn-discover" >###DISCOVER###</li>
    <li id="gn-enjoy" >###ENJOY###</li>
    <li id="gn-share" >###SHARE###</li>
  </ul>
	)

Das untere Menü macht er problemlos. Dann ersetze ich die Marker und alles geht (bis eben auf das Darstellen der aktuellen Seite). Bei der oberen Variante kriege ich aber gar keine Ausgabe. (und ich habe inzwischen fast 10 Seiten im Menü)

steffenk ·

ich versteh nicht warum Du das Menü mit einzelnen Markern machst.

Wenn Du eine Metanavigation machst, so gibt es extra den Menütyp LIST!

10 = HMENU
10.special = list
10.value = 1,5,78,94
sholvar ·

ich mach es, weil das mit dem HMENU nicht erstellt wird. Ich weiss leider auch nicht warum. Hab den Code ja von euren Howtos. Aber immer wenn ich das so mache, bleibt der entsprechende Bereich, wo das Menü hin soll, leer.

Unbekannter Benutzer ·

Ich denke du verstehst da was falsch.

So wie es sich anhört willst du doch bestimmte Menüpunkte in deiner Navigation ausgeben.

Den Code den due Oben gepostet hast gibt dir alle Menüpunkte der ersten Ebene aus. Wenn dir da nichts angezeigt wird, dann musst du dir die Ebene per entryLevel holen.
Desweiteren sind kleine Fehler drinn:

Wenn du NO aktivierst, dann brauchst du ACT nicht nochmal aktivieren. In deinem Fall allerdings schon, denn du hast vergessen NO auf ACT zu kopieren. Das heißt in deinem ACT-Zustand wird dir nur der Wrap ausgegeben, das value schon mal gar nicht. Das Value ist zwar sowieso total über, aber ich gehe dochmal davon aus dass du die Navi auch noch erweitern wirst. Steht ja auch schon ATagTitle drinn (auskommentiert). Das würde dir dann in den ACT-Zustand auch nicht übernommen.

Also versuchs doch mal so:

GLOBALNAV = HMENU
GLOBALNAV {
	special = list
	special.value =
	1 = TMENU
	1.wrap =   <ul id="globalnav" class="boo">|</ul>
	1.NO = 1
        1.NO {
		wrapItemAndSub = <li id="current">|</li>
		#stdWrap.htmlSpecialChars = 1
		#ATagTitle.field = title
	}
	1.ACT < .1.NO
	1.ACT {
		wrapItemAndSub = <li id="other">|</li>
	}
}

Wenn ich dich falsch verstanden habe, und du zum Beispiel alle Seiten einer Ebene ausgeben möchtest, dann musst du es mit entryLevel machen.

sholvar ·

danke, ich denke, jetzt habe ich es fast.

	#der Hauptnavigationsbaum
	GLOBALNAV = HMENU
	GLOBALNAV {
	  special = list
	  special.value = 
	  entryLevel = 2
	  1 = TMENU
	  1.wrap =   <ul id="globalnav" class="boo"> | </ul>
	  1.NO = 1
	  1.NO {
            wrapItemAndSub = <li class="other">|</li>
            #stdWrap.htmlSpecialChars = 1
            ATagTitle.field = title
	  }
	  1.ACT < .1.NO
	  1.ACT {
	   wrapItemAndSub = <li id="current"> | </li>
	  }
	}

so sieht das jetzt aus. Da stellt er aber komischerweise immer nur die aktuelle Seite dar und alle anderen ignoriert er. Das sorgt sogar mal dafür, dass garkein Menü da ist.

sholvar ·

du hast Recht. So ist es noch nicht richtig, aber mache ich es andersrum gibt es auch einen Fehler. Denn dann ist die Startseite (diese ist ein Layer über den anderen 3 darzustellenden Seiten) auch immer "current".

hier der aktuelle Code:

	GLOBALNAV = HMENU
	GLOBALNAV {
	  special = list
	  special.value = 1,3,4,5
	  #entryLevel = 2
	  1 = TMENU
	  1.wrap =   <ul id="globalnav" class="boo"> | </ul>
	  1.NO = 1
	  1.NO {
            wrapItemAndSub = <li class="other">|</li>
            #stdWrap.htmlSpecialChars = 1
            ATagTitle.field = title
	  }
	  1.ACT < .1.NO
	  1.ACT {
	   wrapItemAndSub = <li id="current"> | </li>
	  }
	}
sholvar ·

es geht jetzt soweit erstmal ganz gut. Aber einige Punkte sind mir noch recht unklar.

1)
Wenn ich das einfachste Menü überhaupt erstelle (nach Doku für NO) kriege ich garkein Menü.

page.20 = HMENU
page.20.1 = TMENU
page.20.1.NO = 1

Meine Seiten sind so aufgebaut:

-domain(keine Seite)
|
|-Startseite
||-Hauptseiten (unsichtbar)
|||-SeiteA
|||-SeiteB
|||-SeiteC
||-Funktionsseiten (unsichtbar)
| |-Userseiten (unsichtbar)
|  |-register
|  |-edit
|-Storages
 |-Userdata
 |-Templates

und ich möchte in meinem Menü SeiteA,...B und ...C sehen.
aber das oben gezeigte Typoscript schreibt mir garkeine Seiten ins Menü. Das folgende aber auch nicht:

GLOBALNAV = HMENU
GLOBALNAV.entryLevel = 1
GLOBALNAV.1 = TMENU
GLOBALNAV.1.NO = 1

auch mit 2 und 3 für entryLevel funktioniert es nicht. Nur mit der Variante, die 2 Posts über diesem zu sehen ist.

2)
beim TMENU wird das komplette Menü gewrapt. Wie kann ich denn sagen, dass ich einen Menüpukt wrappen möchte? In dem NO wird ja direkt automatisch ein <a>-Tag erstellt. Aber ich kann keinen großen, dynamischen(!!!) einfluss auf das außen rum ums <a>-Tag nehmen. Nur statische Sachen rum machen... 🙁