Zum Inhalt springen

Jedes vierte Element anders wrappen

Erstellt am 5. Oktober 2011 · 2 Antworten · letzte Antwort am 25. Oktober 2011

Tags: Inhaltselemente, Frage

donillo ·

Moin,

ich brauche die Möglichkeit jedem vierten Element einer Seite eine andere CSS-Klasse mitzugeben.
Nach einigem suchen habe ich etwas gefunden, das auch prinzipiell funktioniert:

    FLEX = CONTENT
    FLEX  {
      table = tt_content
      select.orderBy = sorting
      select.where = colPos = 1
      select.languageField=sys_language_uid
      #renderObj < tt_content
      renderObj = COA
      renderObj {
        
        30 = LOAD_REGISTER
        30 {
          contentCounter.data = register:contentCounter
          contentCounter.stdWrap.wrap = |+1
          contentCounter.prioriCalc = 1
        }
        
        # Wrap around each content item
        stdWrap.wrap = <div class="flex">|</div>
        stdWrap.wrap.override = <div class="flexLast">|</div>
        stdWrap.wrap.override.if {
          equals.data = register:contentCounter
          equals.stdWrap.wrap = |%4
          equals.prioriCalc = 1
          value = 0
        }
    
      }
      #renderObj.stdWrap.wrap = <div class="flex">|</div>
      
    }

Es wird mir die Struktur der divs richtig ausgegeben, nur ist mein Inhalt leer/weg. Wo habe ich denn da einen Denkfehler?

Irgendwie war mein Beitrag jetzt weg, deswegen noch einmal.

sktypo3 ·

Ich glaube, weil du ein COA erstellst, hast du nicht mehr dein Element unter |.
Eine Lösung wäre, kein COA zu erstellen, den stdWrap direkt auf renderObj und den Counter als stdWrap.prepend beim renderObj einfügen.
Eine andere wäre, die fields im COA anzugeben, aber ich denke, dass du den Aufwand nicht haben möchtest.

Beispiel:

#renderObj = COA
renderObj {
	stdWrap.prepend = LOAD_REGISTER
	stdWrap.prepend {
		contentCounter.data = register:contentCounter
		contentCounter.stdWrap.wrap = |+1
		contentCounter.prioriCalc = 1
	}

	# Wrap around each content item
	stdWrap.wrap = <div class="flex">|</div>
	stdWrap.wrap.override = <div class="flexLast">|</div>
	stdWrap.wrap.override.if {
		equals.data = register:contentCounter
		equals.stdWrap.wrap = |%4
		equals.prioriCalc = 1
		value = 0
	}
}