Zum Inhalt springen

Verlinkung im HMENU: Text als Upper, href als Lower

Erstellt am 20. Dezember 2016 · 6 Antworten · letzte Antwort am 22. Dezember 2016

Tags: TYPO3 7, Frage

getit ·

Ich möchte als Verlinkung den Text einmal als UPPER und einmal als LOWER.

Also sowas: <a href="#abc">ABC</a>

Also im href LOWER und im Titel als UPPER.

Ich bekomme das mit folgendem Script hin, das der Titel UPPER ist, bekomme es aber nicht hin das im href nochmal als LOWER hinzuschreiben

lib.tabbox = HMENU
lib.tabbox {
  special = directory
  special.value = 135

  1 = TMENU
  1 {
    wrap = <div id="tabbox" class="hidden-xs">|</div>
    stdWrap {
      innerWrap = <ul class="nav nav-tabs" role="tablist">|</ul>
      innerWrap2 = <div class="row">|</div>
      wrap = <div class="container">|</div>
      stdWrap.wrap = |<div class="tab-content"></div>
    }

    NO = 1
    NO {
      wrapItemAndSub   = <li class="slick-slide" role="presentation">|</li>
      ATagParams = role="tab" data-toggle="tab"
      stdWrap.case = upper
      doNotLinkIt = 1
      stdWrap.field = title
      allWrap = <a href="#|">|</a>
    }
  }
}

Bisher siehts so aus:
<a href="#">SOFTWARE</a>

Und ich brauche das so:
<a href="#software">SOFTWARE</a>

Geht das?

jenses ·

Mit deiner Anweisung doNotLinkIt=1 unterbindest du ja komplett die standardmäßige Verlinkung der Menüeinträge.
Wenn das so gewollt ist, mußt du das Verlinken selbst übernehmen,
sinnvollerweise mit Hilfe der Funktion typolink

getit ·

Mit deiner Anweisung doNotLinkIt=1 unterbindest du ja komplett die standardmäßige Verlinkung der Menüeinträge.

Das habe ich so gemacht, da es mir sonst nicht gelungen ist das href-Attribut zu beinflussen.
Wenn du eine Möglichkeit hast das mit der Standardmäßigen Verlinkung hinzubekommen, wäre ich dankbar wenn du mir zeigst wie.

Außerdem bleibt dann immer noch das Problem mit der Groß- und Kleinschreibung.

Julian.​Hofmann ·

Wenn Du eh die Verlinkung schonr ausnimmst, dann wäre es vermutlich der schnellste Weg, den gesamten (neuen) Menüeintrag selbst zu bauen:

doNotLinkIt = 1
stdWrap.cObject = COA

Da kannst Du Link-Tag und Linktext separat voneinander beliebig bauen.

Weitere Idee, um es zu vereinfachen wäre (zumindest für den Text) noch CSS:
text-transform: uppercase;

getit ·

Gute Idee!
Hab das jetzt so:

NO = 1
NO {
  doNotLinkIt = 1
  stdWrap.cObject = COA
  stdWrap.cObject {
    10 = TEXT
    10.value = <li class="slick-slide" role="presentation"><a href="#

    20 = TEXT
    20.stdWrap.case = lower
    20.stdWrap.field = title
   
    30 = TEXT
    30.value = ">

    40 = TEXT
    40.stdWrap.case = upper
    40.stdWrap.field = title

    50 = TEXT
    50.value = </a></li>
  }
}

Das resultierende Markup ist zu Mindest wie gewünscht.

Ist das okay - wie gehts besser?

Julian.​Hofmann ·

Okay ist, was funktioniert 😉

Ist manchmal etwas Geschmackssache, manchmal eine Frage, wie extrem Du Performance berücksichtigen musst (wenn's gecacht wird, ist aber eh wieder fast egal).

Persönlich würde ich versuchen öffnende und schließende Tags zusammenzufassen an eine Stelle (<li></li>).
Deine Texte solltest Du auch ohne zustätzlichen stdWrap bekommen, da TEXT bereits direkt stdWrap-Eigenschaften hat.
Und zu guter letzt ließen sich 10, 20, 30 zusammenfassen, indem Du einen wrap benutzt.

NO = 1
NO {
  doNotLinkIt = 1
  stdWrap.cObject = COA
  stdWrap.cObject {
    wrap = <li class="slick-slide" role="presentation">|</li>
    
    10 = TEXT
    10.case = lower
    10.field = title
    10.wrap = <a href="# | ">

    20 = TEXT
    20.case = upper
    20.field = title

    30 = TEXT
    30.value = </a>
  }
}