Zum Inhalt springen

"Wer" generiert/rendert eigentlich die folgenden Elemente?

Erstellt am 18. Mai 2010 · 15 Antworten · letzte Antwort am 20. Mai 2010

Tags: Frage

lizbet ·

Hi Montharon,
also, ich habe eine etwas andere Ausganssituation, daher kannst du das nicht 1:1 übernehmen, aber wenn du einen Moment draufschaust, siehst du, wo du ansetzen musst.

Hier die Umsetzung für eine Lupe unter JEDEM Bild, mit Link.

Wichtig wird es bei IMG_RESSOURCE...

tt_content.image.20 {
  caption {
    1 {
      required >
      prepend = IMAGE
      prepend {
        if.isTrue.field = image_zoom
        wrap = <span class="picClickEnlarge">|</span>
        file = fileadmin/templates/image-click.png
        imageLinkWrap = 1
        imageLinkWrap {
          enable = 1
          typolink {
            parameter.cObject = COA
            parameter.cObject {
              10 = IMG_RESOURCE
              10.file {
                 import = uploads/pics/
                 import.field = image
                 import.listNum.stdWrap {
                    data = register:IMAGE_NUM
                 }
              }
            }
            # Add the "rel" attribute needed to activate the lightbox effect.
            ATagParams = rel="lightbox"
            ATagParams.override = rel="lightbox[sb{field:uid}]"
            ATagParams.insertData = 1
            ATagParams.if.isTrue.field = image_zoom
          }
        }
      }
    }
  }
}

Das funktioniert jetzt (auch wenn bei zwei Reihen Bildern, die Reihenfolge lustig wird).

Sag mal, ob dir das hilft, bzw. falls ja: bitte post des TS. Merci.

Grüße
Liz

montharon ·

Hallo und guten Morgen Liz!

Also, erst einmal VIELEN herzlichen Dank für deine Antwort!
Ich habe dein Script-Schnipsel als Ausgangspunkt verwendet und bin zu folgendem Code gekommen:

tt_content.image.20 {
  caption {
    1 {
      required = 1
      override.if.isTrue.field = image_zoom
      typolink {
        parameter.listNum.stdWrap.if.isTrue.field = image_link
        parameter.override {
          cObject = IMG_RESOURCE
          cObject.file {
            import = uploads/pics/
            import.field = image
            import.listNum.stdWrap {
              data = register:IMAGE_NUM
            }
            maxW = {$plugin.perfectlightbox.lightBoxMaxW}
            maxH = {$plugin.perfectlightbox.lightBoxMaxH}
          }
          if.isTrue.field = image_zoom
          if.isFalse.field = image_link
        }
        ATagParams = rel="lightbox"
        ATagParams.override = rel="lightbox[sb{field:uid}]"
        ATagParams.insertData = 1
        ATagParams.if.isTrue.field = image_zoom
      }
    }
  }
}

Das funktioniert auch prächtig, ausser dass die Captiom IMMER angezeigt wird,
also auch wenn gar keine beim Bild hinterlegt ist!
Jetzt habe ich aber ehrlich gesagt grosse Verständnisprobleme mit den ganzen override's
und required's usw., deshalb würde ich den Code gerne Zeile für Zeile besprechen?!
Ich weiss, da fehlt's bei mir schon bei den Grundlagen 🙁

tt_content.image.20 {
  caption {
    1 {
      required = 1

Required würde in dem Falle bedeuten, dass wenn die Caption leer ist, alle darauf
folgenden Befehle ignoriert/abgebrochen werden, oder wie ist das?

override.if.isTrue.field = image_zoom

Überschreibe was?, wenn das Feld image_zoom in der Datenbank gesetzt wurde

typolink {
        parameter.listNum.stdWrap.if.isTrue.field = image_link
        parameter.override {

Spätestens jetzt steig ich aus. Erstens kann ich mir der Beschreibung in der TSRef
nix anfangen und zweitens was hat das da mit dem typolink zu tun?
Und was bitte macht eigentlich das override GENAU?

          cObject = IMG_RESOURCE
          cObject.file {
            import = uploads/pics/
            import.field = image
            import.listNum.stdWrap {
              data = register:IMAGE_NUM
            }
            maxW = {$plugin.perfectlightbox.lightBoxMaxW}
            maxH = {$plugin.perfectlightbox.lightBoxMaxH}
          }
          if.isTrue.field = image_zoom
          if.isFalse.field = image_link
        }
        ATagParams = rel="lightbox"
        ATagParams.override = rel="lightbox[sb{field:uid}]"
        ATagParams.insertData = 1
        ATagParams.if.isTrue.field = image_zoom

Das ist mir eigentlich klar, bis auf if.isTrue.field = image_zoom und
if.isFalse.field = image_link Werden dann die die davor stehenen Befehle
ignoriert, oder wird da ein Feld gesetzt? Und dann wäre da noch das insertData
Was macht das? Heisst das, dass {field:uid} eingesetzt wird?

Witzig - ich bin seit 13 Jahren hauptberuflich in der Softwareentwicklung tätig
und habe schon mehrere Programmiersprachen gelernt, aber Typo3 stellt mich
von der Syntax her immer noch mächtig auf die Probe. Irgendwas will mir da nicht einleuchten 😉

Danke
montharon

lizbet ·

Hi montharon,
also, ich habe dein TS mal bei mir eingesetzt und das funktioniert, wie es soll: Ist eine Caption da, dann wird diese auch Lightbox-verlinkt, ist keine da, dann ist auch kein Lightbox-Link unterhalb des Bildes da. Der Link vom Bild auf die Lightbox ist natürlich noch aktiv, mit dem haben wir hier nix gemacht - ist das das Prob?

:o

??

Grüße
Liz

montharon ·

Hi Liz,

nein, bei mir funktioniert's eben nicht?! Die Caption ist IMMER da und heisst dann irgendwie
/uploads/pic/....

So funktioniert's dann auch bei mir witzigerweise:

tt_content.image.20 {
  imageStdWrap.dataWrap = <div class="csc-textpic-imagewrap">|</div>
  imageStdWrapNoWidth.wrap = <div class="csc-textpic-imagewrap">|</div>
  imageColumnStdWrap.dataWrap = <div class="csc-textpic-imagecolumn">|</div>

  caption {
    1.override.if.isTrue.field = image_zoom
    typolink {
      parameter.listNum.stdWrap.if.isTrue.field = image_link
      parameter.override {
        cObject = IMG_RESOURCE
        cObject.file {
          import = uploads/pics/
          import.field = image
          import.listNum.stdWrap.data = register:IMAGE_NUM
          maxW = {$plugin.perfectlightbox.lightBoxMaxW}
          maxH = {$plugin.perfectlightbox.lightBoxMaxH}  
        }
        if {
          isTrue.field = image_zoom
          isFalse.field = image_link
        }
      }
      ATagParams = rel="lightbox"
      #tx_perfectlightbox_imageset
      #tx_perfectlightbox_presentation
      ATagParams.override = rel="lightbox[sb{field:uid}]"
      ATagParams.insertData = 1
      ATagParams.if.isTrue.field = image_zoom
    }
  }
  
  rendering {
    dl {
      imageRowStdWrap.dataWrap = <div class="csc-textpic-imagerow">|</div>
      noRowsStdWrap.wrap =
      oneImageStdWrap.dataWrap = <dl class="csc-textpic-image###CLASSES###">|</dl>
      imgTagStdWrap.wrap = <dt>|</dt>
      editIconsStdWrap.wrap = <dd>|</dd>
      
      caption {
        required = 1
        wrap = <dd class="csc-textpic-caption">|</dd>
      }
    }
  }
}

Wenn ich so schreibe, funktioniert's NICHT...

tt_content.image.20 {
  imageStdWrap.dataWrap = <div class="csc-textpic-imagewrap">|</div>
  imageStdWrapNoWidth.wrap = <div class="csc-textpic-imagewrap">|</div>
  imageColumnStdWrap.dataWrap = <div class="csc-textpic-imagecolumn">|</div>

  caption {
    1 {
      override.if.isTrue.field = image_zoom
      typolink {
        parameter.listNum.stdWrap.if.isTrue.field = image_link
        parameter.override {
          cObject = IMG_RESOURCE
          cObject.file {
            import = uploads/pics/
            import.field = image
            import.listNum.stdWrap.data = register:IMAGE_NUM
            maxW = {$plugin.perfectlightbox.lightBoxMaxW}
            maxH = {$plugin.perfectlightbox.lightBoxMaxH}
          }
          if {
            isTrue.field = image_zoom
            isFalse.field = image_link
          }
        }
        ATagParams = rel="lightbox"
        #tx_perfectlightbox_imageset
        #tx_perfectlightbox_presentation
        ATagParams.override = rel="lightbox[sb{field:uid}]"
        ATagParams.insertData = 1
        ATagParams.if.isTrue.field = image_zoom
      }
    }
  }

  rendering {
    dl {
      imageRowStdWrap.dataWrap = <div class="csc-textpic-imagerow">|</div>
      noRowsStdWrap.wrap =
      oneImageStdWrap.dataWrap = <dl class="csc-textpic-image###CLASSES###">|</dl>
      imgTagStdWrap.wrap = <dt>|</dt>
      editIconsStdWrap.wrap = <dd>|</dd>

      caption {
        required = 1
        wrap = <dd class="csc-textpic-caption">|</dd>
      }
    }
  }
}

Man beachte das
caption {
1 {
...
...

Komisch?!

Danke
montharon

lizbet ·

Hi Montharon,

Dass bei fehlender Caption, dann der Bildname+Link gezeigt wird, das ist hier auch so, aber nur, wenn ich die Caption nicht auf require=1 habe.

Noch mal zu Deinen Beispielen, da war ich zu schnell mit "das ist komisch" Denn, das hier:

...
  caption {
    1.override.if.isTrue.field = image_zoom
    typolink {
      parameter.listNum.stdWrap.if.isTrue.field = image_link
      parameter.override {
...

ist was anderes als das da:

...
  caption {
    1 {
      override.if.isTrue.field = image_zoom
      typolink {
        parameter.listNum.stdWrap.if.isTrue.field = image_link
        parameter.override {
...

im zweiten Beispiel klammerst du alles in die 1. Also auch den typolink etc. Klärt sich damit der Nebel?

Ansonsten müsst ich mal gucken...

Grüße
Liz

montharon ·

Hallo Liz,

also du hast ja geschrieben, dass du mein Typoscript getestet und die Caption nicht immer angezeigt bekommen hast? Sehe ich das richtig?

Ich habe sämtliche Versuche unternommen die Caption zu unterdrücken und habe an den unterschiedlichsten Stellen das require = 1 eingebaut - ohne Erfolg, z.B.:

  caption {
    required = 1
    1 {
      required = 1
      override.if.isTrue.field = image_zoom
      typolink {
        parameter.listNum.stdWrap.if.isTrue.field = image_link
        parameter.override {
          cObject = IMG_RESOURCE
          cObject.file {
            import = uploads/pics/
            import.field = image
            import.listNum.stdWrap.data = register:IMAGE_NUM
            maxW = {$plugin.perfectlightbox.lightBoxMaxW}
            maxH = {$plugin.perfectlightbox.lightBoxMaxH}
          }
          if {
            isTrue.field = image_zoom
            isFalse.field = image_link
          }
        }
        ATagParams = rel="lightbox"
        #tx_perfectlightbox_imageset
        #tx_perfectlightbox_presentation
        ATagParams.override = rel="lightbox[sb{field:uid}]"
        ATagParams.insertData = 1
        ATagParams.if.isTrue.field = image_zoom
      }
    }
  }

Mir ist schon klar, dass es ein Unterschied ist ob ich alles in die 1 klammere oder nicht.
Mein Problem ist nur, dass ich nicht weiss, was richtig ist?
Ich dachte es wäre logisch alles in das 1 zu klammern, aber anscheinend liege ich da falsch?!
Wie ist es nun richtig?
Und WOHIN muss ich das required setzen?

Und dann habe ich noch folgendes Problem?
Lightbox Parameter

Irgendwie muss ich das noch schaffen, dann funktioniert alles perfekt und nach meinen Vorstellungen!

VIELEN DANK Liz!
montharon

lizbet ·

Hi Montharon,
zur Hölle mit dem required.#evil#
Ich habe gerade folgendes getestet:

TYPO3 4.3.1:
tt_content.image.20.caption.1.required = 1
funkt, an aus wiedewillst

TYPO3 4.3.2:
tt_content.image.20.caption.1.required = 1
funkt, an aus wiedewillst

TYPO3 4.3.3:
tt_content.image.20.caption.1.required = 1
funkt nicht, ist immer 0
wasndasfürnbug!?!?

Bitte gib mal Info, mit was Du da arbeitest - Merci.
Falls sonst noch jemand mit liest: kann man das bestätigen?
Grüße Liz

montharon ·

Hi Liz,

ich arbeite hier mit 4.3.3
Strange was du da schreibst....

Zurück zum Problem:
Was wäre denn nun richtig? Du weisst schon, das Ding mit dem 1 unde den Klammern...

Kannst du mir bei der anderen Sache auch noch Tipps geben?
Rel Paramter

VIELEN LIEBEN DANK!
montharon

lizbet ·

Hi Montharon,
shit happens... Das Script von dir, das ich eingefügt hatte und wo ich dich fragte, was denn los sei - gehtdoch, das ist richtig. Also:

...
tt_content.image.20.caption.1.required = 1
...

ISSOKE. Geht halt grad net in 4.3.3...

Das mit den Lightbox-Parametern würd ich spontan mal so versuchen:

# anstatt
...
ATagParams.override = rel="lightbox[lb{field:uid}]"
# sowas wie
ATagParams.override = rel="lightbox[presentlb{field:uid}]"
...

tell me if that works - merci

Grüße Liz

montharon ·

Hallo Liz,

ATagParams.override = rel="lightbox[presentlb{field:uid}]"

Das ist schon richtig, nur setzt du da für JEDEN Link ja das "presentlb....." und das ist nicht richtig
Man muss da unterscheiden denke ich, also so:
Siehe einfach meinen anderen Beitrag unten...
Params

Danke
montharon