Schnellnavigation:

Kategorien

« Oktober 2017»
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 31        

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 ... 

Zur Zeit wird gefiltert nach: Developer
Filter zurücksetzen

Dieses Jahr findet das TYPO3-Camp auch erstmals in Berin statt – eine gute Gelegenheit, mal wieder nach Berlin zu fahren und das Angenehme mit dem Angenehmen&Nützlichen zu verbinden :-) 

Die Orgnanisatoren sind mächtig aktiv und die Sessionliste ist schon ziemlich umfangreich. Also: auf nach Berlin!

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  Kommentare 0

Damit meine ich ein recht gängiges Problem: per E-Mail oder per Lesezeichen wird ein Link aufgerufen, der auf eine zugangsbeschränkte Seite verweist. Das übliche Verhalten von TYPO3 ist, dass die zugangsbeschränkte Seite dann leer gezeigt wird und sich der Besucher zuerst zum Login durchklicken und danach dann seine Seite wieder suchen muss. Irgendwie uncool. 

Ein paar Lösungen, die ich im Internet gefunden habe: 

  • Nicht die Seiten zugangsbeschränken, sondern nur die Inhalte. Ausserdem auf jede Seite eine Login-Box. Damit tauchen nach dem Login die Inhalte auf. 
  • Die zugangsbeschränkten Seiten in den Zweig unterhalb der Login-Seite positionieren. Damit wird zumindest erreicht, dass nicht die leere Seite gezeigt wird, sondern die Login-Seite. 

Das sind keine wirklichen Lösungen, es sind bestenfalls Workarounds. Es gibt aber eine Lösung, die nicht mal besonders schwierig ist. 

Schritt 1

In der localconf wird ein Eintrag für die Fehler-404-Seite eingefügt, z. B.: 

  1. $TYPO3_CONF_VARS['FE']['pageNotFound_handling'] = '/index.php?id=xyz'

Dabei wird entweder direkt die Login-Seite angegeben, oder es wird eine eigene Fehlerseite im Backend angelegt, die zusätzlich das Login-Formular enthält (so habe ich es hier gelöst). Ich bevorzuge letzteres: wenn man ein zweites Login-Formular auf der Fehlerseite einrichtet, können die regulären »Weiterleitungen nach Login« nicht in die Quere kommen. 

Schritt 2

Im Plugin »felogin« muss eine referrer-Weiterleitung eingestellt werden:
Redirect-Options – Defined by Referrer. 

Das wars, ab sofort werden alle Links auf zugangsbeschränkte Seiten auf die neue Login-Seite weitergeleitet und ein Referrer übergeben. Der wird dann von felogin benutzt, um die beabsichtigte Seite anzuspringen. 

Getestet in TYPO3 4.4.6 – sollte aber in 4.5 auch funktionieren. 

Kategorien: Extensions  Kommentare 2
Tags: felogin, redirect

Die neue Version ist jetzt fast eine Woche alt. Meine bisherigen Tests sind sehr positiv verlaufen, insgesamt ist das Update sehr gelungen und bringt auch wenig neue Fehler mit :-P. Kleinere Fehler sind meiner Meinung nach unvermeidlich bei einem so riesigen Programm, wie es TYPO3 mittlerweile ist. Es ist klar, dass nicht alle Kunden-Accounts automatisch upgedatet werden, sondern dass wir erst mal abzuwarten, was sich so an Fehler zeigt. Erfreulicherweise hat der TYPO3-Provider Mittwald die wichtigsten Probleme in einem kurzen Blogartikel zusammengefasst: 

  • im IE 6 gibt es Probleme mit dem Seitenbaum
  • Bilder, die im RTE in einem <p>-Tag platziert wurden, werden nicht mehr im Frontend gezeigt 
  • das Standardmailformular wirft beim Versenden einen Fehler (der komplette Mailversand wurde für 4.5 überarbeitet)
  • Nach den Anfragen im Forum zu urteilen, haben auch Extensions, die auf das alte Mailsystem setzen, etwas Probleme mit dem Mailversand. 

Dass Probleme im IE 6 auftauchen ist nicht überraschend – mich überrascht eher, dass IE 6 überhaupt noch unterstützt wird, ich würde ihn für das Backend allmählich weglassen. Die anderen Fehler sind natürlich ein Problem, allerdings gibt es dafür bereits Patches, die in das neue Release 4.5.1 einfließen werden, das am 9. März erscheinen soll. Bis dahin werden auch die wichtigsten Extensions in neuen Versionen vorliegen. 

Ich werde so lange nur einzelne Installationen updaten und für diese die Patches manuell einspielen. Die allgemeinen Updates laufen erst im März. 

[Update] 

Wie im Kommentar unten erwähnt (besten Dank an Falko), wurde das 4.5.1 Update vorgezogen und soll am 23. Februar erscheinen. Für alle, die Ihre Pakete selbst updaten: auf typo3.org ist übrigens die Installations- und Upgrade-Beschreibung erneuert worden. 

Update: 

Der Artikel ist mittlerweile etwas älter geworden. Für die TYPO3-Versionen des Viererzweigs stimmt er noch, aber nicht mehr für TYPO3 6.x. Hier ist es deutlich einfacher geworden, da irgendwann seit Version 4.6 oder 4.7 der Core prinzipiell Lightboxen vorsieht. Ich habe einen kleinen Artikel verfasst, der beschreibt  wie man eine Lightbox anlegen kann, ganz ohne Extension, und diese auch im RTE freischaltet: Lightbox im RTE (rtehtmlarea) ohne Extension

----

Prinzipiell ist es möglich, mit Hife der Extension rtelightbox eine Lightbox im RTE umzusetzen – in der Regel reicht es einfach, eine gängige Lightbox zu installieren und danach im Template folgende statische Typoscript-Templates einzubinden: 

  • das Template der jeweiligen Lightbox
  • Clickenlarge Rendering (rtehtmlarea)
  • RTE Lightbox (rtelightbox)

und zwar muss das Template von RTE Lightbox an letzter Stelle stehen. 

Leider hat die Extension aber einen kleinen Fehler: sie bindet das unbearbeitete Originalbild in die Lightbox ein, heisst, man erhält unter Umständen ein viel zu großes Bild in der Lightbox. 


[mehr]
Besuchen Sie mich auf Google+