Schnellnavigation:

Kategorien

« April 2011»
S M T W T F S
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Kopieren Sie diesen Link in Ihren RSS-Reader

RSS 0.91Nachrichten
RSS 2.0Nachrichten

In eigener Sache

Peter Linzenkirchner, Lisardo EDV Beratung in Augsburg. Freelance und Partner für Design- und Webagenturen in Augsburg und München. Pixelgenaue Templates, valides HTML, barrierearm. TYPO3-Projekte, Extension-Programmierung und mehr ... 

IF-Konstrutionen in Typoscript sind reichlich verzinkt und kosten viel Hirnschmalz, vor allem wenn mehrere Bedingungen miteinander verknüpft werden sollen. Mein Problem: 

Ein neu erstelltes Inhaltselement soll es ermöglichen, bequem und schnell einen Downloadlink mit einem Vorschau-Bild zu erstellen. Es soll folgende Features haben: 

  • die Vorschau-Bilder sollen nebeneinander floaten
  • die Vorschaubilder sollen unabhängig vom Frontend-User-Login zwar immer erscheinen, bei bei fehlendem Login oder falscher Benutzergruppe abgedimmt werden. 
  • die Download-Links auf den Vorschaubildern sollen nur erscheinen, wenn der Besucher in einer bestimmten Frontend-Usergruppe ist
  • zusätzlich soll der Redakteur mit einer Checkbox bestimmen können, dass ausnahmsweise der Downloadlink auch dann gezeigt wird, wenn der Besucher nicht eingeloggt ist. 

Das kann alles noch über Typoscript gelöst werden. Die Schritte: 

  1. Extension erstellen, die tt_content um mehrere Felder erweitert
  2. Die extTables.php so anpassen, dass im Backend die richtigen Felder gezeigt werden 
  3. die Extension um ein Typoscript-Setup erweitern, das den Output vornimmt. 

Und darin ist die oben erwähnte IF-Konstruktion erforderlich: der Link wird gerendert, wenn der Besucher in der Usergruppe 10 ist ODER wenn eine Checkbox durch den Redakteur angeklickt wurde. 

Der wesentliche Teil des Typoscripts sieht so aus:

  1. 10 = COA
  2. 10 {
  3.   10 = IMAGE
  4.   10.file {
  5.       import = uploads/myExt/
  6.       import.field = preview
  7.       import.listNum = 0
  8.       maxW = 224
  9.       maxH = 209
  10.   }
  11.   # Link aus einem Feld holen.
  12.   stdWrap.typolink.parameter = uploads/myExt/{field:myLink}
  13.   stdWrap.typolink.parameter.insertData = 1
  14.  
  15.   # ODER-Verknüpfungen gehen am einfachsten über cObject.
  16.   stdWrap.typolink.parameter.if {
  17.       isTrue.cObject = COA
  18.       isTrue.cObject {
  19.         10 = TEXT
  20.         10.data= TSFE:fe_user|user|usergroup
  21.         10.if {
  22.             # Prüfen, ob in einer bestimmten User-Gruppe
  23.             value.data = TSFE:fe_user|user|usergroup
  24.             isInList = 10
  25.         }
  26.        
  27.         20 = TEXT
  28.         20.field = checkbox
  29.       }
  30.   }
  31. }

Eine OR-Verknüpfung geht am einfachsten über ein cObject. Das Ergebnis des gesamten cObjects wird true, wenn eine Zeile true wird. Man kann also auf diese Art beliebig viele Fehler mit OR verbinden. Etwas kniffliger ist es, wenn man auf einen bestimmten Wert prüfen will und nicht nur auf true oder false, weil in diesem Fall eine weitere IF-Konstruktion eingeschachtelt werden muss. 

Ganz am Schluss darf natürlich nicht vergessen werden, mit Hilfe der Extension naw_securedl und einer .htaccess-Datei im Uploads-Ordner der Extension die Downloads gegen Deeplinks abzusichern.  

Kategorien: Typoscript  
Links:
Trackback-Link  (Bitte kopieren)
 
| Mehr
  •  
  • Kommentare
  •  

Mein Kommentar

Benachrichtige mich, wenn jemand einen Kommentar zu dieser Nachricht schreibt.

Besuchen Sie mich auf Google+