05.03.2018 | TYPO3, TYPO3 Schnipsel
Typo3 8.x – Um eigene Funkionen erweitern
Was mit usr und usr_int unter Typo3 7 dank der compatibility 6 kein Problem war, ist mit Typo3 8 nicht mehr möglich. Einige werden jetzt sagen – selbst schuld, man sollte immer eine eigene Extension schreiben um externen Code einzubinden oder die Funktionalität von Typo3 zu erweitern. Stimmt! – Aber trotzdem war es eine einfache und schnelle Möglichkeit die es eben genau jetzt nicht mehr gibt. Allerdings lässt sich das mit einer einfachen Extension einfach nachbilden und erzielt den gewünschten Effekt. Etwa um externe Datenbanken abzufragen oder externe Inhalte einzubinden.
Was brauchen wir dazu?
Die Extension mit der richtigen Ordnerstruktur und den minimal notwendigen Dateien. Abgelegt wird die Extension im Ordner „typo3conf/ext/“.
Die Ordnerstruktur:
EXT\NAME_DER_EXTENSION
EXT\NAME_DER_EXTENSION\Classes
EXT\NAME_DER_EXTENSION\Classes\Controller
EXT\NAME_DER_EXTENSION\Classes\Domain
EXT\NAME_DER_EXTENSION\Classes\extension.php (Eigentliche Klasse der Extension)
EXT\NAME_DER_EXTENSION\Resources
EXT\NAME_DER_EXTENSION\Resources\Private
EXT\NAME_DER_EXTENSION\ext_emconf.php
EXT\NAME_DER_EXTENSION\ext_icon.gif
Inhalt der ext_emconf.php:
<?php $EM_CONF[$_EXTKEY] = array( 'title' => 'Extension Titel', 'description' => 'Beschreibung der Extension', 'category' => 'fe', 'author' => 'Dein Name', 'author_email' => '[email protected]', 'state' => 'alpha', //beta stable ... 'author_company' => 'Dein Name', 'version' => '1', 'constraints' => array( 'depends' => array( ), 'conflicts' => array( ), 'suggests' => array( ), ), );
Mehr braucht es an dieser Stelle erstmal nicht.
Inhalt der extension.php:
<?php namespace extname\events; class Events { public function overview($content, $conf) { // $conf['userFunc.']['calendar'] - aus Typoscript übergeben // $conf['userFunc.']['calendarID'] - aus Typoscript übergeben $servername = "localhost"; $username = "DBUSERNAME"; $password = "DBPASSWORT"; $database = "DB"; $port = "3306"; $html = "<h1>Meine Ausgabeseite</h1>"; $html .= "Kalender " .$conf['userFunc.']['calendar']; // liefert "deinKalender" zurück $conn = mysqli_connect($servername, $username, $password, $database, $port); ... return $html; } }
Erstellen der Variablen in Typoscript für die Ausgabe im Frontend:
kalender = USER_INT kalender { userFunc = extname\events\Events->overview userFunc.calendar = deinKalender // wird als Variable an die Extension übergeben f.f. userFunc.calenderID = 1 }