Zum Inhalt springen

Link-Erweiterung beim Wrap

Erstellt am 12. Februar 2008 · 2 Antworten · letzte Antwort am 18. Februar 2008

Tags: Frage

samefa ·

Hallo,

durch folgende Syntax wird ein Menü (mit Farbwechsel nach dem Anklicken eines Menüpunktes) erzeugt.

temp.main_nav.1 = TMENU
temp.main_nav.1 {
  wrap = <ul class="level1"> | </ul>
  NO.allWrap = <li> | </li>
  ACT = 1
  ACT.wrapItemAndSub = <li class="act"> | </li>
  ACT.stdWrap.wrap = <span class="blue"> | </span>
}

Wie kann ich jedoch den Link, der durch "NO.allwrap" erzeugt wird, erweitern? Im Moment schaut der nicht-aktive Menüpunkt im HTML so aus.
<ul class="level1"><li><a href="test/" onfocus="blurLink(this);">Test</a></li></ul>

Nun möchte ich, dass statt "...<a href="test/"...." ein "...<a href="XYZ/test/..." erscheint. Der Inhalt des Zusatzes "XYZ" würde aus einer Konstanten kommen.

Benötigen tue ich diese Erweiterung, da ich einen mehrsprachigen Web-Auftritt betreue. Bei diesem Auftritt gibt es teilweise für einige Sprachen eine eigene Domain, hier benötige ich den Zusatz "XYZ" im HMTL-Link nicht.

Jedoch hat nicht jede Sprache eine eigene Domain, daher benötige ich für diesen Fall die Erweiterung "XYZ", damit das Typo3 weiß, welche Sprache angezeigt werden soll.

Könnt Ihr mir weiterhelfen?

Liebe Grüße

samefa

samefa ·

Dankeschön "just2b", Du hast mir mit dem Link-Verweis gut helfen können.

Folgende Konfiguration benutze ich nun, um die erste und zweite Menüebene anzuzeigen:

# Erste Navigations-Ebene
temp.main_nav.1 = TMENU
temp.main_nav.1 {
  wrap = <ul class="level1"> | </ul>
  NO {
    doNotLinkIt = 1
    doNotShowLink = 1
    before.cObject = TEXT
    before.cObject.field = alias//uid
    before.cObject.dataWrap = <li><a href="{$constant.languageISO}/|/">
    after.cObject = TEXT
    after.cObject.field = title//uid
    after.cObject.dataWrap= |</a></li>
  }
  ACT = 1
  ACT {
    doNotLinkIt = 1
    doNotShowLink = 1
    before.cObject = TEXT
    before.cObject.field = alias//uid
    before.cObject.dataWrap = <li class="act"><a href="{$constant.languageISO}/|/"><span class="blue">
    after.cObject = TEXT
    after.cObject.field = title//uid
    after.cObject.dataWrap= |</span></a></li>
  }
}

# Zweite Navigations-Ebene
temp.main_nav.2 = TMENU
temp.main_nav.2 {
  wrap = <ul class="level2"> | </ul>
  NO {
    doNotLinkIt = 1
    doNotShowLink = 1
    before.cObject = TEXT
    before.cObject.field = alias//uid
    before.cObject.dataWrap = <li><a href="{$constant.languageISO}/|/">
    after.cObject = TEXT
    after.cObject.field = title//uid
    after.cObject.dataWrap= |</a></li>
  }
  ACT = 1
  ACT {
    doNotLinkIt = 1
    doNotShowLink = 1
    before.cObject = TEXT
    before.cObject.field = alias//uid
    before.cObject.dataWrap = <li><a href="{$constant.languageISO}/|/"><span class="blue">
    after.cObject = TEXT
    after.cObject.field = title//uid
    after.cObject.dataWrap= |</span></a></li>
  }
}

Hierbei habe ich jedoch ein HTML-Syntax-Problem (valides HTML), d.h. mein HTML-Validierungs-PlugIn für Firefox (HTML Validator von Tidy) meckert.
Die obere Lösung generiert mir folgendes, grobes HTML-Gerüst (CSS-Klassen, span etc. habe ich rausgelassen):

 <ul>
 <li>1ter Menuepunkt</li>
 <li>2ter Menuepunkt</li>
 <li>3ter Menuepunkt</li>
  <ul>
    <li>3.1 Menuepunkt</li>
    <li>3.2 Menuepunkt</li>
  </ul>
 <li>4ter Menuepunkt</li>
</ul>

Valides HTML müsste beim 3ten Menüpunkt das abschließende li, also "</li>" weglassen und nach dem 2ten abschließenden ul "</ul>" wieder anfügen.
Also folgendermaßen:

 <ul>
 <li>1ter Menuepunkt</li>
 <li>2ter Menuepunkt</li>
 <li>3ter Menuepunkt
  <ul>
    <li>3.1 Menuepunkt</li>
    <li>3.2 Menuepunkt</li>
  </ul>
 </li>
 <li>4ter Menuepunkt</li>
</ul>

Wie kann für dieses HTML-Validierungsproblem das obere TS-Gerüst entsprechend umgebaut werden, damit valides HTML rauskommt?

Vielen lieben Dank für Eure Hilfe!

samefa