Zum Inhalt springen

TMENU und CSS classen nummerieren.

Erstellt am 25. September 2006 · 15 Antworten · letzte Antwort am 12. November 2008

Tags: Frage

MEller ·

Ich habe schon einiges hier im Forum gesucht und versucht es umzusetzten.

Leider finde ich zu den HMENU_MENUOBJ oder auch zu den count_ registern sehr wenig. AUch zu LOAD_REGISTER. 😢

Hat da vielleicht jemand ein Tipp/Link für mich?

Ich möchte jedem <li> eine Klasse geben, dabei sollen diese durchnummeriert werden. <li class="nr1">, <li class="nr2">, <li class="nr3">...

Eines meiner Versuche:

    NAVMID = HMENU
    NAVMID.special = directory
    NAVMID.special.value = 25
    NAVMID.entryLevel = 1
    NAVMID {
       1 = TMENU
       1 {
          wrap = <div class="navmid"><ul class="level1">|</ul></div>
          expAll = 1
          noBlur = 1
          NO = 1
          NO.allWrap = <li class="{register:count_HMENU_MENUOBJ}">|</li>
          NO {
             before.cObject = COA
             before.cObject {
               10 = TEXT
               10.data = register:count_HMENU_MENUOBJ
               10.wrap = | 
             }   
          }
       }
       2 < .1 
       2.wrap = <ul class="level2">|</ul> 
    }

Was da nicht gut ist, dass der Code nicht valide ist. Das <ul class="level2" muß ja innerhalb des entsprechendem <li> stehen!

Bislang habe ich das mit dem "wrapItemAndSub" valide T-Menüs aufbauen können.

Es gibt hier auch einen eigenen Counter. #496301

Den könnte man integieren, jedoch das gleiche Problem, nicht valider Code.

Wie kann man eigentlich das wrapItemAndSub selber bauen? Ich denke da an doNotShowLink und before.

Für Tips bin ich sehr dankbar!!

😢

typowasser ·

Hi,
suche auch so etwas änhliches, jedoch ist die sache bei mir einfacher
ich will einfachn nur dass das erste elment die classe navi1, das 2. navi2 usw bekommt.

Aber im moment klappts das nicht so ganz und die o.g. Beispiele helfen mir leider auch nicht sehr viel weiter :/

Noch besser wäre es für mich wenn das ganze bis zu einer Zahl (hier 9) zählen würde, also so

<!--3Elemente -->
<li class="navi7"><a ...></li>
<li class="navi8"><a ...></li>
<li class="navi9"><a ...></li>


<!-- 5Elemente -->
<li class="navi5"><a ...></li>
<li class="navi6"><a ...></li>
<li class="navi7"><a ...></li>
<li class="navi8"><a ...></li>
<li class="navi9"><a ...></li>

Ist das überhaupt möglich? - wenn ja wie?

Danke,
Typowasser

MEller ·

Ich werde das gelich mal nach dem Kochen ausprobieren. Ich habe immer nach durchnummerieren gesucht. :o

Die Suche ist doch ganz hilfreichen. Vielen lieben Dank für die schnelle Antwort.

Werde dann ein Beispiel posten. Danke!

typowasser ·

Hi,

danke, ihr beiden 🙂
Eure Codes funktionieren zwar, aber ich habe leider das Problem, dass die erste Menüebene mitgezählt wird.
Ich brauche jedoch eine Nummerierung nur ab dem 2.Level
-->wie 'resette' ich den counter?
und bekomme ich das mit dem runterzählen auch irgendwie hin?
mir geht es halt v.a darum, dass das letzte element immer eine feste Zahl hat (und nicht das erste)
also wäre

<li class="navi3"><a ...></li>
<li class="navi2"><a ...></li>
<li class="navi1"><a ...></li>

natürlich auch möglich?

Habt ihr dafür auch eine Lösung?

Danke schonmal

MEller ·
typowasser schrieb

Noch besser wäre es für mich wenn das ganze bis zu einer Zahl (hier 9) zählen würde, also so

<!--3Elemente -->
<li class="navi7"><a></li>
<li class="navi8"><a></li>
<li class="navi9"><a></li>

Ist das überhaupt möglich? - wenn ja wie?

Das liegt nicht im Sinn der Sache. Du kannst/soltest nie eine maximale Anzahl von Menüs vorschreiben. Die Navigation ist der Zentrale Punkt eine Seite.

Was machst Du mit dem Menü 10 oder 13? Ich finde da liegt ein Fehler im Konzept vor. 🙂

typowasser ·

Hi,
@MEller: ja da hast du recht, deshalb lieber die 2. variante, wo das unterste Element mit 1 beginnt und das erste mit der Anzahl Menüpunkten, so dass quasi von "Anzahl Der Menüpunkte" bis auf 1 heruntergezählt wird.
( ..., 5,4,3,2,1)

Wofür ich das ganze brauche ist einfach:
Ich möchte ein Menü machen wo die untersten 5 Elemente verschiedene Hintergrund Grafiken haben, und bei einem Rollover diese ausgetauscht wird.
Alle anderen bekommen dasselbe Hintergrundbild.

Warum die untersten fünf? - Weil sich unterhalb des Menüs noch eine Grafik befindet die das Hintergrund Muster des Menüs weiterführt.

🙂

MEller ·

So. Es sieht schon mal relativ gut aus. Es hat jedoch zwei Fehlerchen. Es fängt nicht bei eins an und es werden die 2=TMENU mitgezählt.

        1 = TMENU
        1 {
           noBlur = 1
           expAll = 1
           wrap = <div><ul class="level1">|</ul></div>
           NO {
              wrapItemAndSub = <li>|</li>
              stdWrap.cObject = COA
              stdWrap.cObject {
                  5 = TEXT
                  5.field = title
                  5.wrap = |
                  10 = TEXT
                  10.dataWrap ={register:count_MENUOBJ}
              }
     	   IFSUB=1
           IFSUB < .NO
           IFSUB.wrapItemAndSub = <li class="ifsub">|</li>
           CURIFSUB=1 
           CURIFSUB < .NO
           CURIFSUB.wrapItemAndSub = <li class="ifsub">|</li>
           }
        }
        2 < .1
        2.wrap = <ul class="level2">|</ul>

Es ist logisch es wird ausgegeben:

# Allgemein16

* Über uns17
* Warum bei uns?18
* Warum xyz ?19

# Club20

* EC 1 KWL21
* EC 2 KWL22
* EC 3 KWL23

# Test24
# Test125
# Test326

Es werden alle Menüs gezählt, auch die Untermenüs.

Es sollte aber sein:

# Allgemein1

* Über uns
* Warum bei uns?
* Warum xyz ?

# Club2

* EC 1
* EC 2
* EC 3

# Test3
# Test4
# Test5

Also nur die li der ersten Eben von eins ab hochzählen. Ich stehe auf dem Schlauch. Kann man das Register einfach zurücksetzen? Wenn ja wie, wo kann man lesen. Ich möchte mir das auch mit ein paar TIps selber erarbeiten.

Wenn ich das so nicht gehößt bekommen müßte ich die TMenuLayer einsetzen - und das wäre $%&/(W"§. 😢

Für Hilfe bin ich dankbar.

typowasser ·

kitsunet: stimmt , du hast recht 🙂 - ich kenne mich eben mir ts leider noch nicht ganz so gut aus. - Danke für den Tipp

Ich habe nur ein Problem, die Priorität lautet doch last, first, middle, aber bei folgendem TS (splittet zur besseren Übersicht)

NO.allWrap = <li class="li_navi">|</li>|*|
<li class="li_navi1">|</li>||
<li class="li_navi2">|</li>||
<li class="li_navi3">|</li>||
<li class="li_navi4">|</li>||
<li class="li_navi5">|</li>

Erzeugt mir folgenden Code:

<ul class="uli">
     <li class="li_navi"><a href="index.php?id=22" onfocus="blurLink(this);">Level 2 Test a 1</a></li>
     <li class="li_navi1"><a href="index.php?id=21" onfocus="blurLink(this);">Level 2 Test a 2</a></li>

     <li class="li_navi2"><a href="index.php?id=20" onfocus="blurLink(this);">Level 2 Test a 3</a></li>
</ul>

Aber ich bräuchte folgendes

<ul class="uli">
     <li class="li_navi3"><a href="index.php?id=22" onfocus="blurLink(this);">Level 2 Test a 1</a></li>
     <li class="li_navi4"><a href="index.php?id=21" onfocus="blurLink(this);">Level 2 Test a 2</a></li>

     <li class="li_navi5"><a href="index.php?id=20" onfocus="blurLink(this);">Level 2 Test a 3</a></li>
</ul>

Wie muss ich da das optionsplit umschreiben?

MEller ·

@typowasser:

first |*| middle |*| last mit

davor | danach

und mit || als Trenner.

NO.allWrap = |*| |*| |*| <li class="li_navi1">|</li> || <li class="li_navi2">|</li>||<li class="li_navi3">|</li>||<li class="li_navi4">|</li>||<li class="li_navi5">|</li>

Hilft es?

Vielleicht kann man es auch ganz einfach dynamisch mit Transparenzen regeln? Die letzten fünf sinde nie die letzten fünf. Vergrößer mal die Schrift im IE oder im Firefox. Wäre schade, wenn es alles zerschießt.

Leider kann bei mir kein Optionsplit funktionieren. Ich möchte ja wie gesagt die ersten li der ersten Ebene zählen von eins angefangen und unabhänig von den Status CUR IFSUB uns CURIFSUB.

typowasser ·

@meller da war zwar noch ein|*| zuviel drin, aber jetzt funktioniert es einwandfrei - DANKE! - ich wünsche dir noch viel Glück für dein Problem und hoffe dass du bald eine Lösung findest.
danke

MEller ·

Ein anderes Beispiel, aber es geht.... ;-)

NAVTOP = HMENU
    NAVTOP {
      special = directory
      special.value = 1
      1 = TMENU
      1 {
    #   wrap = |
        expAll = 1
        noBlur = 1
        NO {
          doNotLinkIt = 1
          stdWrap.cObject = COA
          stdWrap.cObject {
            150 = TEXT
            150.field = uid
            150.wrap = <a href="|/" style="
 	    200 = TEXT       
            200.dataWrap = {register:count_MENUOBJ}
            300 = TEXT 
            300.value = ">
            400 = TEXT
            400.field = title
          }
        }
      }
    }
mariohaehni ·

Hallo zusammen

Mit interesse habe ich gerade diesen Post gelesen. Ich versuche etwas ähnliches zu machen.

Wie kann ich nun aber {register:count_MENUOBJ} auf die erste Menüebene beschränken? bei mir werden allfällige Subnavipunkte auch mitgezaählt. So entstehen immer andere Nummerierungen.

Besten Dank und Gruss
Mario