Zum Inhalt springen

CE-wrapping abgängig von Seiteneigenschaft

Erstellt am 3. Juli 2007 · Noch keine Antworten

Tags: Inhaltselemente, Frage

grande ·

Hallo Zusammen.

Ich habe eine Extension geschrieben, die die Tabellen tt_content und pages um jeweils ein Attribut (tx_jrgrid_width bzw. tx_jrgrid_usegrid) erweitert. Die neue Eigenschaft von tt_content wird verwendet, um dem Content-element eine festgelegte Breite zu geben. Auf der Seite wird dann ein Grid-Layout dargestellt, in dem mittels javascript die CE's ihre richtige Höhe bekommen. Dies geschieht mit einem statischen Typoscript.

Das wrapping und das javascript funtionieren (eigentlich) wunderbar. Nur soll man jetzt das Grid ein- bzw. ausschalten können. D.h. es gibt eine Eigenschaft der Seite, die das wrapping der CE's steuert.

Ich kriege es allerdings nicht hin, dass es läuft 🙁. Habe schon mit diversen if's und CASE-Abfragen probiert. Bin jetzt auf den LOAD_REGISTER gestossen... und hoffe auf eure Hilfe.

Bisher habe ich folgendes:

checkgrid = CASE
checkgrid {
    key.field = tx_jrgrid_usegrid
    default.10 = LOAD_REGISTER
    default.10.usegrid = 0
    0.10 = LOAD_REGISTER
    0.10.usegrid = 0
    1.10 = LOAD_REGISTER
    1.10.usegrid = 1
}

gridwrappedelement = CASE
gridwrappedelement {
    key.field = tx_jrgrid_width
    default < tt_content.text
    if.isTrue.data = register:usegrid
    0 < .default
    0.wrap = <div class="{$contentelement_cssclass} width0">|</div>
    1 < .default
    1.wrap = <div class="{$contentelement_cssclass} width1">|</div>
    2 < .default
    2.wrap = <div class="{$contentelement_cssclass} width2">|</div>
    3 < .default
    3.wrap = <div class="{$contentelement_cssclass} width3">|</div>
}

# Überschreiben des wrap's
gridwrappedelement {
    if.isFalse.data = register:usegrid
    wrap = <div class="{$contentelement_cssclass}_nogrid">|</div>
}

tt_content.text >
tt_content.text < gridwrappedelement

grid = COA
grid {
    10 < styles.content.get
    10.wrap =  | <script language="javascript" type="text/javascript">var allElements = document.getElementsByTagName('div'); for (var i=0; i<allElements.length; i++) { var curr = allElements[i]; if (/^{$contentelement_cssclass}/.test(curr.className)) { curr.style.height = ((Math.ceil(curr.offsetHeight / {$row_height}) * ({$row_height})) + ((Math.ceil(curr.offsetHeight / {$row_height}) - 1) * 8-) ) + "px"; } } </script>
}

Könnt ihr mir da weiterhelfen?

fnord