Zum Inhalt springen

Die Anzahl von Submenu-Einträgen in Bezug zum aktuellen Menülevel zählen

Erstellt am 3. November 2015 · 2 Antworten · letzte Antwort am 5. November 2015

Tags: Datenbank, TYPO3 6.x, Frage

sowas_aber_auch ·

Hallo,

in dem Menü, das ich gerade Baue benötige ich bereits im ersten Level die Anzahl an Submenus.
Das ist nötig, da das css eine Klasse in abhängigkeit von der Anzahl an (Sub-)Menüeinträgen hat.

Beispiel: <li class="dropdown mega-menu-X">
wobei X die Anzahl an Submenus ist.

Ich habe schon viel gegooglet und bin auf etwas gestoßen, was nach einer kleinen Anpassung so aussieht:

lib.test = COA
lib.test {

   # Save the output of numRows in the registervalue: "menuNumber"
  10 = LOAD_REGISTER
  10.menuNumber.numRows {
    table = pages
    select.pidInList =  this
  }

  # Retrieve the registervalue and display it.
  20 = TEXT
  20.dataWrap = <div>There are {register:menuNumber} subpages </div>

}

page.30 < lib.test

Wenn ich für "this" eine konkrete Zahl angebe, zu der ich weiß dass diese 3 Unterseiten hat, dann wird im Text auch 3 ausgegeben. Schön und gut, mein Problem ist allerdings, dass ich nicht weiß, wie ich das ganze in mein Menü unterbringen soll.

Mein Menü sieht bisher so aus:

lib.testmenu31 = HMENU
lib.testmenu31 {
	entryLevel = 0
	
	1 = TMENU
	1 {
		expAll = 1
		wrap = <ul class="nav navbar-nav"> | </ul>
		noBlur = 1
		
		NO = 1
		NO {
			wrapItemAndSub = <li> | </li>
			stdWrap.htmlSpecialChars = 1
			ATagTitle.field = title
		}
		
		IFSUB = 1
		IFSUB {
			ATagBeforeWrap = 1
			linkWrap = | <b class="caret"></b>
			
			10 = LOAD_REGISTER
			10.menuNumber.numRows {
				table = pages
				select.pidInList = 84
			}
			
			wrapItemAndSub = <li class="dropdown mega-menu-{register:menuNumber}"> | </li>
			wrapItemAndSub.insertData = 1
			stdWrap.htmlSpecialChars = 1
			ATagTitle.field = title
			ATagParams = class="dropdown-toggle" data-toggle="dropdown" aria-expanded="true"
		}
		
		ACT = 1
		ACT <.NO
		
		ACTIFSUB = 1
		ACTIFSUB <.IFSUB
	}
	
	2 = TMENU
	2 <.1
	2 {
		expAll = 1
		wrap = <ul class="dropdown-menu"> | </ul>
		NO {	
			doNotShowLink = 1
			wrapItemAndSub = <li class="one-column"> | </li>
		}
		IFSUB = 0
		ACTIFSUB = 0
	}
	
	3 = TMENU
	3 <.2
	3 {
		expAll = 1
		wrap = <ul> | </ul>
		NO {
			doNotShowLink = 0
			wrapItemAndSub = <li class="nav-title"> | </li> |*| <li> | </li>
		}
	}
}

Aber es scheint so, als könnte er es nicht richtig verarbeiten. Im Quelltext wird als Ergebnis einfach Nichts eingefügt.

Weiß jemand wie man das hinbekommt, oder eine alternative?

Ich brauch ja eigentlich nur die Anzahl aller pid mit nummer X zum aktuellen uid X indem ich mich gerade befinde.

Vielen Dank für eure Antworten

sowas_aber_auch ·

Vielen Dank für den entscheidenden Tip 🙂

so funktioniert es jetzt:

IFSUB = 1
		IFSUB {
			ATagBeforeWrap = 1
			linkWrap = | <b class="caret"></b>
			
			before.cObject = LOAD_REGISTER
			before.cObject {
				subMenuItems.cObject = TEXT
				subMenuItems.cObject {
					numRows {
						table = pages
						select.pidInList.field = uid
					}
				}
			}

			
			wrapItemAndSub = <li class="dropdown mega-menu-{register:subMenuItems}"> | </li>
			
			wrapItemAndSub.insertData = 1
			stdWrap.htmlSpecialChars = 1
			ATagTitle.field = title
			ATagParams = class="dropdown-toggle" data-toggle="dropdown" aria-expanded="true"
		}
		
		ACT = 1
		ACT <.NO
		
		ACTIFSUB = 1
		ACTIFSUB <.IFSUB
	}