Zum Inhalt springen

Wrapping für einzelne Elemente abschalten?

Erstellt am 6. Februar 2007 · 3 Antworten · letzte Antwort am 7. Februar 2007

Tags: Inhaltselemente, Frage

novalis ·

Hallo, ich möchte für zwei spezifische HTML-Elemente auf einer Seite den stdWrap abschalten, damit diese nicht von einem <div class="contentElement"> umschlossen werden. Ich habe unten stehendes Stück Typoscript, und habe mittels "11.renderObj.stdWrap.html = |" versucht den vorher eingestellten stdWrap für HTML-Elemente zu überschreiben.

Leider klappt das so nicht... Ich habe auch schon ein paar andere Konstellationen durch, inklusive ausgiebiger Suche bei Google und in diversen Foren. Aber nichts was ich gefunden habe hat den gewünschten Effekt erzielt.

Für einen hilfreichen Tip wäre ich dankbar!

### start content left for banners ###
# recursive look-up
contentleft = COA
contentleft {
	11 < styles.content.getLeft
	11.renderObj.stdWrap.wrap = <div class="contentElement">|</div>
	11.renderObj.textpic.20.maxWInText = 194
	11.renderObj.textpic.20.maxW = 194
	11.renderObj.image.20.maxWInText = 194
	11.renderObj.image.20.maxW = 194
	
	# Entfernt den Wrap um die HTML Elemente
  11.renderObj.stdWrap.html = |

    11.stdWrap.ifEmpty.cObject < styles.content.getLeft
    11.stdWrap.ifEmpty.cObject {
    	stdWrap.ifEmpty.cObject < styles.content.getLeft
     	stdWrap.ifEmpty.cObject {
        	stdWrap.ifEmpty.cObject < styles.content.getLeft
			
			stdWrap.ifEmpty.cObject {
        		stdWrap.ifEmpty.cObject < styles.content.getLeft
				stdWrap.ifEmpty.cObject {
					select.pidInList.data = leveluid:-5
            	}
            	select.pidInList.data = leveluid:-4
            }
            select.pidInList.data = leveluid:-3
		}
     	select.pidInList.data = leveluid:-2
    }
       
    11.stdWrap.ifEmpty.cObject.renderObj < .11.renderObj
    11.stdWrap.ifEmpty.cObject.stdWrap.ifEmpty.cObject.renderObj < .11.renderObj
    11.stdWrap.ifEmpty.cObject.stdWrap.ifEmpty.cObject.stdWrap.ifEmpty.cObject.renderObj < .11.renderObj
	11.stdWrap.ifEmpty.cObject.stdWrap.ifEmpty.cObject.stdWrap.ifEmpty.cObject.stdWrap.ifEmpty.cObject.renderObj < .11.renderObj
}
### end content left for banners ###

Grüße,
Novalis

skorpi ·

Servus Novalis,

eine Frage vorneweg: Möchtest du den Wrap (<div class="contentElement">|</div>) nur in der linken Spalte haben oder in allen Spalten?

Gruß: Irene

novalis ·

Hallo Irene,

der Wrap ist für jede Spalte separat definiert, der TS oben ist nur für die linke Spalte. Und in dieser Spalte sollen die HTML-Elemente _keinen_ Wrap bekommen, alles andere kann so bleiben wie es ist.

Hintergrund ist die Integration einer Lösung für mobile Endgeräte, und ich muss mittels eines speziellen Tags (<div class="wsexclude"> z.B.) die vorhandenen Elemente der linken Spalte umschließen. Dafür habe ich halt zwei HTML-Elemente eingefügt, in denen nichts weiter als der öffnende und schließende <div> Tag steht. Leider kommt dann der Wrap ins Spiel, der nochmal einen DIV um beide Elemente legt, was 1) nicht valide ist und 2) nicht mit der Anwendung für die mobilen Endgeräte harmoniert.

Da ich die Seite nicht pflege, kann ich auch keine großen Sprünge im TS machen. Ich habe allerdings des öfteren gelesen, daß man den stdWrap für HTML-Elemente entsprechend überschreiben kann, was bei mir aber aus irgendwelchen Gründen nicht funktioniert...

LG,
Ingo

skorpi ·

Warum schreibst du den wrap in HTML-Elemente und nicht ins HTML-Template?

Wenn du den wrap so einbindest:

contentleft.11.renderObj.stdWrap.wrap = <div class="contentElement">|</div>

dann wrapst du das "Ergebnis" des CASE-Objektes. Egal, um welche Art von Inhaltselement es sich handelt.

Wenn du den Wrap in Abhängigkeit vom Typ des Inhaltselements gestalten willst, musst du ihm eine Bedingung mitgeben. Mit der Eigenschaft wrap geht das nicht, da sie keinen stdWrap hat. Also nimmst den OuterWrap:

contentleft.11.renderObj.stdWrap.outerWrap.cObject = TEXT
contentleft.11.renderObj.stdWrap.outerWrap.cObject {
  value = <div class="contentElement">|</div>
  if.equals.field = CType
  if.value = html
  if.negate = 1
}