Kategorie: Entwicklung

Einführung in die Welt der TYPO3 Hooks

Der heutige Blogbeitrag widmet sich dem Thema Hooks und deren Verwendung in TYPO3. Manche werden sich nun bestimmt denken, was kann an Hooks so schwer zu verstehen sein? Nun, im Prinzip ist das Konzept das sich hinter dem Begriff Hook verbirgt ein leichtes Konzept. Aber nichtsdestotrotz sind es gerade die simplen Dinge im Leben, die die meiste Zeit in Anspruch nehmen. Aus diesem Grund wird im Folgenden näher auf die Verwendung von Hooks in TYPO3 eingegangen.

TYPO3 CMS 7+ Login Provider API und ’sorting‘

Mit der neuen Login Provider API von TYPO3 7+ ist es relativ einfach ein neues Backend Login Service (z.B. SSO) einzuführen.

Der Login Provider wird über ext_localconf.php registriert:

$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['backend']['loginProviders'][] = array(
   'provider' => \Plan2net\ExampleAuth\LoginProvider\ExampleLoginProvider::class,
   'sorting' => 200,
   'icon-class' => 'fa-example',
   'label' => 'LLL:EXT:example_auth/…/locallang.xlf:login.link'
);

und hier kommt der Fallstrick auf den ich aufmerksam machen möchte:

sorting bezieht sich nicht auf die Sortierung, die ja allgemein bei 0 beginnen würde (als erster Eintrag), sondern ist eine Priorität. Es zählt hier also der höchste Wert, dann der zweithöchste, usw. Will man seinen eigenen Login Provider als Standard eingetragen haben (statt dem üblichen Benutzername und Passwort), setzt man sorting auf einen hohen Wert wie oben im Beispiel.

T3DD16 – plan2net sponsert die Coding Night

T3DD16 - TYPO3 Developer Days 2016
TYPO3 Developer Days 2016

Von 1.-4. September 2016 finden aktuell in Nürnberg (Deutschland) die als „T3DD“ bekannten TYPO3 Developer Days statt.

Es ist die grösste technische Veranstaltung der TYPO3 Community, die alle Aspekte des TYPO3 CMS behandelt: in intensiven Tutorials, Workshops und Sessions tauschen sich hier Developer über neue Entwicklungen aus, werden spannende Produktfeatures und Extension vorgestellt und Lösungsansätze diskutiert. Unter den mehr als 260 Teilnehmern befinden sich heuer auch wieder zwei plan2net ProgrammiererInnen.

Als Highlight gilt seit Jahren die sogenannte „Coding Night“, in der Entwickler aus allen Ländern gemeinsam am Produkt weiterarbeiten. plan2net freut sich sehr, diese heuer mitsponsern zu dürfen.

TYPO3 ViewHelper Tipps

Heute möchte ich euch zwei Tipps zeigen, welche die Geschwindigkeit von TYPO3 ViewHelpers deutlich beeinflussen können.


Tipp1: Caching

Aufpassen muss man bei ViewHelpers die Facets\ChildNodeAccessInterface statt Facets\CompilableInterface nutzen, da sie nicht gecacht werden und sich das Parsen der Seite um Sekunden verzögern kann. Folgende ViewHelper werden nicht gecacht:

  • <f:switch> → stattdessen f:if nutzen, das ist deutlich schneller (TYPO3 Version 6.2)
  • <f:widget.paginate>
  • <f:widget.autocomplete>
  • <f:be.menus.actionMenu>

Diese ViewHelpers also bitte mit Maß und Ziel verwenden ;-)

 

Tipp2: Partials

TCA-Konfiguration und der TYPO3-Cache

Wie man als TYPO3-Extension-Entwickler die Performanz eines Seitenaufrufs ganz leicht verbessern kann.

Seit der Version 6 LTS kann man in einer Extension verschiedene Konfigurationen des $TCA-Arrays, die traditionell in ext_tables.php abgelegt wurden, auslagern. Das sind zum einen Definitionen und Erweiterungen von SQL-Tabellen als auch Konfigurationen von Plugins.

Configuration/TCA/<tabelle>.php

TYPO3 erwartet in diesem Ordner Dateien mit PHP-Code, die ein komplettes $TCA-Array einer Tabelle mittels return zurückliefern. Der Dateiname ist hierbei der Name gleich wie jener der zu definierenden Tabelle.

Configuration/TCA/Overrides/<tabelle>.php

PHP-Dateien im Overrides-Ordner können verschiedene Manipulationen am $TCA-Array vornehmen. Der Name der Dateien ist für TYPO3 nicht von Bedeutung, allerdings ist es sinnvoll auch hier den Namen der Tabellen als Dateiname zu verwenden.

CSS Pseudo-Class :before und :after mit jQuery manipulieren

Das Problem

Frontend-Entwickler nutzen gerne die Pseudo-Klassen :before und :after, um zum Beispiel eine Form mit CSS zu erstellen ohne, dass man dazu ein Hintergrundbild benutzen muss. Beispiel:

.top-header:before {
background: #00589d none repeat scroll 0 0;
height: 61px;
position: absolute;
right: 64px;
top: 0;
transform: skewX(-25deg);
width: 31px;
z-index: 9;
}

Mit diesem Code habe ich ein schräges Rechteck erzeugt. Aufgabe war es, falls sich die Fenstergröße verändert, dann soll sich auch die Position ‚right‘ verschieben. Der neue Wert wird durch jQuery berechnet und in eine Variable gespeichert. Jetzt hatte ich ein Problem, weil man in jQuery keine Pseudoklassen manipulieren kann. Folgendes funktioniert NICHT:

Können und Wollen sind nicht genug.

Können und Wollen als Grundvoraussetzungen für jede erfolgreiche Aktivität ist soweit seit tausenden Jahren klar. Diese zwei Voraussetzungen wurden hinreichend gelehrt und sogar zu einer „Können-Wollen-Matrix“ verarbeitet.

Aber diese Zwei sind nicht genug.
Es fehlt die Freiheit auch entscheiden zu dürfen Wann (Zeitpunkt) und Wenn (erkannte Notwendigkeit) man etwas mit seinem Können und Wollen darf.

Das klingt anfänglich vielleicht verwirrend erschliesst sich aber recht schnell sobald man verstanden hat, dass die freie Entscheidung das Richtige zum richtigen Zeitpunkt tun zu können das Gesamt-Ergebnis massiv verbessert.

Kurzum:

„Wenn ich nur darf, wenn ich soll,
aber nie kann, wenn ich will,
dann mag ich auch nicht, wenn ich muss.

TYPO3 Core Team stellt in Wien die Weichen für Version 8

2016-01 TYPO3 Code Sprint Vienna 01Für den ersten Code Sprint des Jahres hat das TYPO3 CMS Core Team mit Wien eine neue, spannende Location gefunden. 9 erfahrene EntwicklerInnen aus 3 Ländern haben hier vom 14.-17. Jänner 2016 intensiv an der Weiterentwicklung des erfolgreichen Enterprise Content Management Systems gearbeitet.

Ziel dieses Sprints war die effiziente Unterstützung zukünftiger Systemmigrationen. Dass dabei TYPO3 Version 8, die im Frühling 2017 publiziert wird, im Fokus der Entwickler lag, überrascht nicht.

Das Sprintteam, das aus 4 aktiven Core Developers, 3 Senior- und 2 Junior-Entwicklern bestand, hatte nicht nur jede Menge Spaß sondern wies diesmal einen außerordentlich hohen Grad an Effizienz und Produktivität auf: neben 90 Patches für Version 8 wurden auch jede Menge Lösungen für die im Markt befindlichen LTS (Long Term Support) Versionen 7.6 und 6.2 erarbeitet.

PHP The Right Way.

PHP: Der richtige Weg.

Kein religiöser Diskurs, welche Sprache besser ist – das überlassen wir gerne anderen. (Hinweis: Die Antwort ist: ‚Die beste für die jeweilige Aufgabe.‘)

Wir bleiben hier bei PHP und das aus einem wirklich guten Grund:
PHP wurde von 3.* bis 5.* massiv weiterentwickelt und ist damit zu einer richtigen objekt-orientierten und vielfach nutzbaren Programmiersprache gewachsen. (… und 7.* wird wirklich revolutionär)

Nun geht es aber darum, dass alle, die jemals ein .php (oder .php3/4/5) File gesehen / bearbeitet haben über viele historische Missverständnisse aufzuklären und bewusst zu machen wie PHP heute funktioniert – nämlich anders und besser.

Wie man ein git submodule wirklich loswird

Hier ein Beispiel wie man ein git submodule wirklich loswird (um danach z.B. im gleichen Pfad aus einem anderen Repository wieder ein neues anzulegen).

git submodule deinit typo3conf/ext/mysubmodule
git rm -rf typo3conf/ext/mysubmodule
rm -rf .git/modules/typo3conf/ext/mysubmodule
[1]
git commit -m "removed submodule mysubmodule"

[1] ohne diesem Schritt kann es zu folgender Fehlermeldung kommen, wenn man dann versucht wieder ein neues submodule im gleichen Pfad anzulegen:
A git directory for 'typo3conf/ext/mysubmodule' is found locally with remote(s):
origin https://github.com/old/mysubmodule.git
If you want to reuse this local git directory instead of cloning again from https://github.com/new/mysubmodule.git use the '--force' option. If the local git directory is not the correct repo or you are unsure what this means choose another name with the '--name' option.

Anfrage