Typo3 Filelinks – PDF Icon anpassen bzw. Icons ergänzen

Im Typo3 Standard-Contentelement Filelinks (Deutsch: Dateilinks) werden nicht alle Standard-Icons angezeigt.

Um hier z.B. ein PDF-Icon anzuzeigen muss in folgender Datei:

 

In folgender Abfrage diese Zeile ergänzt werden:

In meinem Fall habe ich natürlich nicht das Original-Template angepasst sondern das in meinem Override-Ordner.

Obige Code-Klasse funktioniert natürlich auch nur, wenn der Fontawesome Icon-Font eingebunden ist, er soll nur als Beispiel dienen.

DCE: Select field (manuelle Liste) mit if in Fluid abfragen

An dieser simplen Aufgabe bin ich einige Zeit gesessen. Wenn man z.B. im DCE für die Backend-Fields die Möglichkeit braucht mehrere Optionen auszuwählen.

Die Aufgabenstellung bei mir war:

Für eine Gruppe von Autohäusern stehen drei Automarken zu Verfügung. Für jeden Standort sollten die angebotenen Marken am Standort gewählt werden können.

Ich habe das Content Element mit der Extension DCE, die ich wirklich gerne verwende, erstellt. Als Feld habe ich ein Select-Feld verwendet, definiert als manuelle Liste mit drei Einträgen:

 

Im Fluidtemplate wollte ich die Abfrage mittels einem IF-Konstrukt lösen:

Das klappte aber nicht – hat die manuelle Liste des Elementes mehr als zwei Optionen lässt sie sich mittels Fluid IF so nicht mehr abfragen. (Bei zwei Optionen kann auf wahr/falsch abgefragt werden.)

Und das klappte deswegen nicht, da ein Fluid-Debug zeigte, dass die Variable kein Array ist, sondern ein String:

Die Lösung:

Um diesen String nun umzuwandeln hilft dce:explode (danke an die Hilfe von Armin und Erik im #dce-Channel von Slack):

 

Namespace nicht vergessen: 
{namespace dce=ArminVieweg\Dce\ViewHelpers}

Typo3 9.5 LTS – Die Neuerungen

Lange haben wir darauf gewartet – nun ist sie endlich verfügbar: Die neue LTS Version von Typo3 in der Version 9.5.

Sprechende URLs (Speaking Urls)

Typo3 9 LTS kommt mit ein paar wirklich nützlichen Features. Als wichtigste Neuerung ist wohl die Funktion „Speaking Urls“ hervorzuheben. Es ist nun ohne zusätzliche Plugins (wie z.B. RealURL) möglich, schöne Urls zu generieren – diese Funktion wurde nämlich mit Typo3 9.5 endlich in den Typo3 Core integriert.

Suchmaschinenoptimierung (SEO)

Neben der schönen Generierung von Urls, das ja für Suchmaschinenoptimierung auch wichtig ist sind auch weitere Maßnahmen in dieser Richtung umgesetzt worden.

Es wurde den Seiteneigenschaften ein eigener Reiter für dieses Thema spendiert – dieser vereint schon vorhandene Felder mit neuen. Es gibt eine neue Meta-Tag-API sowie eine Seitentitel-API, ebenso können XML-Sitemaps generiert werden.

Site Management

Im neuen Modul „Sites“ können Einstellungen für Sprachen, Einstiegspunkte, Redirects u.v.m. für einzelne Sites innerhalb der Typo3 Installation definiert werden.

Systemwartung

Das „Install Tool“ wurde nun komplett in das Typo3 Backend integriert – und in 4 neue Module aufgeteilt:

  • Maintenance
  • Settings
  • Upgrade
  • Environment

Fazit

Alles in allem finde ich, dass die neue LTS Version Typo3 9.5 ein sehr gelungenes Update ist. Es wartet mit ein paar echten Verbesserungen auf – ich werde wohl mit demnächst mit passenden Projekten die ersten Upgrades von Typo3 8.x auf die Typo3 9.5 LTS angehen.

Cookie Consent in Typo3

Der eine oder andere dürfte es vielleicht noch nicht umgesetzt haben und ist auf der Suche nach einer einfachen Integration des Cookie Consent bzw. einer Cookie Bar in Typo3 um die DSGVO zu erfüllen.

Sehr schön habe ich folgende Lösung von https://cookieconsent.insites.com gefunden. Und diese ist leicht mittels Typoscript zu integrieren:

Die externen JS und CSS müssten  um die DSGVO zu erfüllen lokal gespeichert werden.

Das ganze funktioniert auch mit mehreren Sprachen – dann einfach obigen Code nochmal reinkopieren, Texte in andere Sprache ändern und folgende Typoscript-Condition um den Code einfügen:

 

Noch nicht final geklärt ist ja die Frage, ob ein reines Informieren der User über die Cookies ausreicht, oder ob diese erst gesetzt werden dürfen, wenn der User aktiv anklickt, dass Cookies erlaubt sind.

Auch das wäre mit Cookie Consent möglich – es gibt eine Opt-in und Opt-out Funktion.

Fluid in Typo3: Override Templates hat sich geändert

Der Typoscript Code um Templates zu überschreiben (override templates) hat sich geändert. Ich musste dies bei mir in Typo3 8.x ändern – und hab die Lösung erst nach einigem Suchen gefunden.

Die Typoscript lib hat sich geändert von lib.contentElement zu lib.fluidContent.

Richtig heisst der Typoscript-Code also um Templates in Fluid zu überschreiben:

 

Typo3 Fluid: if Viewhelper (if – then – elseif – else)


Deprecated: pathinfo(): Passing null to parameter #1 ($path) of type string is deprecated in /html/typo3.andreas-huber.at/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 84

Deprecated: pathinfo(): Passing null to parameter #1 ($path) of type string is deprecated in /html/typo3.andreas-huber.at/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 84

Mit Typo3 8 wurde Fluid als Standalone Plugin weiterentwickelt und einigen Änderungen und Erweiterungen unterzogen. Da die Frage immer wieder mal auftaucht – hier eine kurze Übersicht die der if Viewhelper in Typo3 Fluid aufgebaut ist. Einmal in Typo3 7 und früher, einmal in Typo3 ab Version 8.

Fluid if Viewhelper in Typo3 7 und früher

Hier gab es das elseif-Konstrukt noch nicht, und man musste die if-Conditions in der Regel verschachteln:

Eine Ausnahme gab es, um ohne die if-Verschachtelung auszukommen – man konnte via Arrays die logische UND-Verknüpfung (&&) wie folgt nachbauen, und sich somit das Verschachteln der if-Anweisungen sparen:

 

Fluid if-Viewhelper in Typo3 8 und höher

Möglich ist auch, diese Abfragen mit logischen UND bzw. ODER in kürzerer Schreibweise zu schreiben:

Weitere Beispiele:

Ist wahr, wenn eine der beiden Variablen gesetzt ist.

 

Inline Schreibweise von if-Conditions:

If – Abfragen können auch inline geschrieben werden. Das ist z.B. sinnvoll, wenn in Fluid-Templates je nach gesetzten Variablen oder bei bestimmten Varialben-Werten bestimmte CSS-Klassen ausgegeben werden sollen.

 

Beispielsweise wenn im Backend bei Inhaltselementen im Reiter „Erscheinungsbild“ bestimmte Layouts, Frames oder Abstände ausgewählt werden.

Hier die generelle Schreibweise:

 

Bootstrap 3 Spaltenelemente in Typo3

Ich setze bei meinen Projekten ganz gerne auf die Lösung von  Stefan Schäfer / merec.org, um Spaltenelemente basierend auf Bootstrap 3 Klassen zu realisieren.

Aufgrund der Anforderung, dass die Redakteure das Aussehen der Inhalte, im speziellen Fall auch der Bootstrap Spalten, anpassen sollen, habe ich das Typoscript Setup von Stefan noch etwas erweitert bzw. geändert.

Die prinzipielle Struktur die ich gerne wollte war:

Folgende Dinge soll der Redakteur beeinflussen können:

  • Ob die Zeile 100% der Seitenbreite einnimmt oder die vordefinierte Inhaltsbreite (aus dem Reiter „Erscheinungsbild“ -> Frame)
  • Abstand davor und Abstand danach (aus dem Reiter „Erscheinungsbild“ -> Space Before / Space After)
  • Hintergrundfarbe der Zeile (aus dem Reiter „Erscheinungsbild“ -> Layout)

 

Ich habe also beim Typoscript Code von Stefan folgendes ergänzt (heller hinterlegte Zeilen):

 

Umstellung einer Domain auf SSL / https in Typo3

Die Umstellung einer Domain auf SSL (also von http:// auf https:// ) ist normalerweise kein großes Problem. Ein paar Dinge gibt es doch zu beachten.

Gerade in einer Multi-Domain Installation von Typo3 müssen ein paar Dinge beachtet werden. Einige der Tipps, die man im Web so findet passen da nicht. Zum Beispiel werden oft .htaccess Snippets genannt die alle Domains innerhalb des Typo3 zum Beispiel von http:// auf https:// weiterleiten.

Zuallerst muss das SSL-Zertifikat bestellt und eingerichtet werden – nicht vergessen, den A-Record der Domain auf die neue IP zu mappen bei den DNS-Einstellungen.

In meinem Fall habe ich aber folgendes gebraucht:

  • Weiterleitung von http://domain.com auf https://www.domain.com
  • Weiterleitung von https://domain.com auf https://www.domain.com
  • Weiterleitung von http://www.domain.com auf https://www.domain.com

Anmerkung:

Gerade die Weiterleitung von non-www auf https://www. sollte aus SEO-Gründen nicht verkettet passieren (also keine Weiterleitung von http://domain.com nach http://www.domain.com und dann nach https://www.domain.com) sondern in einem Rutsch.

Folgender Code bewerkstelligt diese Anforderungen:

 

Aber besser noch dieses Snippet: (danke an Gerald)

 

Zusätzliche Einstellungen für Typo3:

Damit das Ganze auch richtig funktioniert, müssen in Typo auch noch ein paar Einstellungen gemacht werden:

  1. Bei den Seiteneinstellungen muss unter „Behaviour“ das Protokoll der jeweiligen Seite auf https:// umgestellt werden.

    (Leider muss das für jede einzelne Seite gemacht werden – hier hilft es, in der List Ansicht mittels Plus-Symbol den Wert „Enforce Protocol“ in die Listansicht zu holen. So kann man wenigstens alle Seiten einer Ebene in einem Rutsch abarbeiten.)Typo3 SSL https Umstellung
  2. Bei den Seiteneinstellungen kann man unter „Resources“ auf der Startseite der Domain gleich unter Page TS Config folgendes eintragen:

    Das sorgt dafür, dass neu angelegte Seiten gleich den Wert „https://“ als Protokoll bekommen.
  3. Im Typoscript Template folgendes eintragen:

    Sollten noch config.baseURL-Einträge vorhanden sein können diese mit absRefPrefix ersetzt werden (sofern Typo3 >= 6.2). Bei der Domain nun als Protokoll ebenso https:// einsetzen.

Das wars :-).

Neue Features von FLUID in Typo3 8 LTS (Typo3 8.7)


Deprecated: pathinfo(): Passing null to parameter #1 ($path) of type string is deprecated in /html/typo3.andreas-huber.at/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 84

Deprecated: pathinfo(): Passing null to parameter #1 ($path) of type string is deprecated in /html/typo3.andreas-huber.at/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 84

Deprecated: pathinfo(): Passing null to parameter #1 ($path) of type string is deprecated in /html/typo3.andreas-huber.at/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 84

Mit FLUID kann man nun komplexe, verschachtelte und gruppierte  Abfragen durchführen, wie zum Beispiel:

Es gibt nun die Möglichkeit, bei IF-Abfragen auch elseif-Schleifen abzufragen:

Neuer ViewHelper: f:or

Damit kann man verkettete Abfragen schnell durchführen – die erste Variable die nicht leer ist wird ausgegeben:

 

 

 

 

Typo3 8 LTS – Die Neuerungen

Typo3 8 LTS

Endlich – viele von uns haben schon auf die neue LTS Version von Typo3 gewartet – nun ist sie, 18 Monate nach der Typo3 7 LTS Version, erschienen. Und sie wartet mit ein paar wirklich tollen Neuerungen auf, hier die für mich persönlich wichtigsten Neuerungen:

  • Responsive Backend:
    Es wurde weiter an dem Responsive Design im Backend gearbeitet – und man kann sagen, dass dieses nun komplett umgesetzt wurde.
  • Performance:
    Die neue Typo3 8 LTS hat als Mindestanforderung PHP Version ab 7. Das hat zur Folge, dass das Typo3 Backend nun gefühlt sehr viel schneller ist. Fluid wurde komplett ausgelagert, was zudem zu einem schnelleren Backend führt.
  • Bildbearbeitung:
    Auch hier hat man einige neue Features integriert und vorhandenes optimiert. Es ist nun möglich, das Seitenverhältnis zu definieren, ausserdem für Tablet und Smartphone-Varianten des Bildes Fokusbereiche zu definieren. Fazit: Sehr praktisch!
  • Rich Text Editor: CKEditor integriert
    Der in die Jahre gekommene Editor HTMLArea wurde von CKEditor abgelöst – CKEditor ist sehr einfach zu integrieren und konfigurieren und hat ein paar tolle Features – unter anderem einen „Frontend-Editing“ – Modus, welcher in zukünftigen Versionen von Typo3 integriert werden soll.
  • FLUID
    Auch bei der Sprache FLUID hat sich einiges getan – so hat man FLUID nun aus dem Typo3 Core entkoppelt und es gibt einige neue Features.

Eine Liste von allen Neuerungen kann man hier finden oder bei dem PDF „What’s New Slides“ (111 Seiten).