wt_directory: mehrere Felder im Loop (Marker SPECIAL_ALL) mit div wrappen/gruppieren?

  • frankbi frankbi
    Padawan
    0 x
    57 Beiträge
    0 Hilfreiche Beiträge
    11. 02. 2013, 11:01

    Ich möchte die Ausgabe von Adressdaten mit tt_address über wt_directory teilweise zweispaltig gestalten. Dazu benötige ich ein wrap/ein div um aufeinanderfolgende Felder. Ist dies auch mit Nutzung des Markers ###WTDIRECTORY_SPECIAL_ALL### möglich?

    Unter Umgehung von SPECIAL_ALL kann ich einfach wrappen, in dem ich einige Felder für die erste Spalte im wt-directory-Template tmpl_detail.html (oder im Listen-Template bzw. meinen Kopien davon) über/unter ###WTDIRECTORY_SPECIAL_ALL### fest notiere, ein div einsetze und in den Plugin-Einstellungen die Anzeige der "hardcodierten" Felder abschalte, so dass diese im Loop von SPECIAL_ALL nicht nochmal auftauchen:

    1. <div class="test">
    2. ###WTDIRECTORY_TITLE###
    3. ###WTDIRECTORY_FIRST_NAME###
    4. ###WTDIRECTORY_MIDDLE_NAME###
    5. ###WTDIRECTORY_LAST_NAME###
    6. ###WTDIRECTORY_IMAGE###</div>
    7. ###WTDIRECTORY_SPECIAL_ALL###

    Gibt es eine Möglichkeit Felder innerhalb des Loops (festgelegt in tmpl_markerall.html, s. u.) zu wrappen, so dass der Redakteur die Felder weiterhin im Plugin selber auswählen kann? Mit TypoScript kann ich nur innerhalb der Definition (<dd>…</dd> ) wrappen, in den Loop kann ich ja nicht eingreifen:

    1. <dl class="wtdirectory_all wtdirectory_all_detail">
    2. <!-- ###CONTENT### --><!-- ###ITEM### -->
    3. <dt class="wtdirectory_all wtdirectory_all_###ALTERNATE### wtdirectory_all_###WTDIRECTORY_KEY###"><b>###WTDIRECTORY_LABEL###</b></dt>
    4. <dd class="wtdirectory_all wtdirectory_all_###ALTERNATE### wtdirectory_all_###WTDIRECTORY_KEY###">###WTDIRECTORY_VALUE###</dd>
    5. <!-- ###ITEM### --><!-- ###CONTENT### -->
    6. </dl>

    Ideen?


  • 1
  • frankbi frankbi
    Padawan
    0 x
    57 Beiträge
    0 Hilfreiche Beiträge
    26. 02. 2013, 23:10

    Ich bin das Problem jetzt mit einem Workaround umgangen. Die zweispaltige Ansicht konnte ich über CSS lösen, Problem war jedoch eine Bedingung: Wenn kein Bild in der Detailansicht, keine zweite Spalte.

    Ich fürchte, dass ich zu kompliziert gedacht habe. Wer also noch einen einfacheren Ansatz hat …:

    1. zwei im Backend unsichtbare neue tt_address-Felder, die im Detail-Template von wt_directory über Marker ausgegeben werden.
    2. Diese Marker geben ein öffnendes DIV und ein schließendes DIV aus, um im CSS eine Klasse als Schalter zu haben.
    3. Die Ausgabe des DIVs mit der Klasse darf jedoch nur geschehen, wenn das Feld "Bild" leer ist.

    Problem war für mich v. a. die UID des jeweiligen Adressdatensatzes auszulesen. Ich wollte es über page.bodyTagAdd lösen, um dem Body-Tag einfach eine Klasse zuzuweisen. Doch in dem Kontext konnte ich die UID des Adressdatensatzes nicht auslesen (wäre noch über den globalen Parameter, GP, in der URL zu holen gewesen, aber mir kam keine Idee, wie ich den hätte weitergeben können, COA evtl.?).

    geht nicht:

    1. page.bodyTagAdd = class="wtdirectory_noimg"
    2. page.bodyTagAdd.if.isFalse.data = DB:tt_address:{field:uid}:image

    geht:

    1. plugin.tx_wtdirectory_pi1.detail.field.tx_myextkey_fieldif1 = TEXT
    2. plugin.tx_wtdirectory_pi1.detail.field.tx_myextkey_fieldif1 {
    3. data.dataWrap = DB:tt_address:{field:uid}:image
    4. wrap = |
    5. ifEmpty = <div class="wtdirectory_if">
    6. if.value = <div class="wtdirectory_if">
    7. if.equals < plugin.tx_wtdirectory_pi1.detail.field.tx_myextkey_fieldif1
    8. }
    9. plugin.tx_wtdirectory_pi1.detail.field.tx_myextkey_fieldif2 = TEXT
    10. plugin.tx_wtdirectory_pi1.detail.field.tx_myextkey_fieldif2 {
    11. data.dataWrap = DB:tt_address:{field:uid}:image
    12. wrap = |
    13. ifEmpty = </div>
    14. if.value = </div>
    15. if.equals < plugin.tx_wtdirectory_pi1.detail.field.tx_myextkey_fieldif2
    16. }

    Vielleicht nützt es jemandem.

  • 1