TYPO3: eID Mechanismus

von Julian Kleinhans | 1 | 5895 Aufrufe

Anzeige Hier werben

eID steht für Extension ID. Der eID Mechanismus ist der seit der Version 4.x dabei und kann als alternative Rendering Engine betrachtet werden.

Angesprochen wird er über einen GET oder POST Parameter. Sobalt eID als Parameter in der URL vorhanden ist (zB. www.domain.de/?eID=schuesselwort) wird der normaler Rendering Prozess sehr früh abgebrochen und auf ein Script weitergeleitet was wir selber programmieren müssen. Da der normale Rendering Prozess so früh abgebrochen wird kommt es auch noch zu keiner Ausgabe. Es wird nichts gecachet und kein HeaderCode ect generiert. Der eID Mechanismus kann also super im Zusammenhang mit AJAX verwendet werden.

Wollen wir uns einmal die index_ts.php (typo3/sysext/cms/tslib/) Zeile 127 bis 136 ansehen.

 
PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<?php
// *********************
// Look for extension ID which will launch alternative output engine
// *********************
if ($temp_extId = t3lib_div::_GP('eID'))    {
    if ($classPath = t3lib_div::getFileAbsFileName($TYPO3_CONF_VARS['FE']['eID_include'][$temp_extId])) {
        require_once(PATH_tslib.'class.tslib_eidtools.php');
        require($classPath);
    }
    exit;
}
?>

Hier wird überprüft ob der Schlüssel eID als Get/Post Variable vorhanden ist und falls ja, wird der normale Renderingprozess abgebrochen und auf unser Script verwiesen. Doch woher weiss TYPO3 jetzt wo unser Script liegt ?

Das sagen wir Ihm über $TYPO3_CONF_VARS['FE']['eID_include'][$temp_extId].
Wir müssten entweder in die localconf.php oder in eine ext_localconf.php einer Extension folgendes Eintrage

 
PHP
1
2
3
<?php
$TYPO3_CONF_VARS['FE']['eID_include']['schluesselwort'] = 'EXT:meinExtKey/meinScript.php';
?>

Steht jetzt also in der Adresse www.domain.de/?eID=schluesselwort geht er in die erste if Abfrage und sieht das $TYPO3_CONF_VARS['FE']['eID_include'][$temp_extId] vorhanden ist und speichert 'EXT:meinExtKey/meinScript.php' in die Variable $classPath. Danach includiert er die Klasse eidtools und unsere eigene.

Da unser Script noch leer ist bekommen wir eine weiße Seite angezeigt in der auch der komplette Quelltext leer ist.

Um in unserem Script nun ein FEUSER Objekt zu haben und eine aktive DB Verbindung schreiben wir

 
HTML
1
2
3
4
5
6
<?php
$feUserObj = tslib_eidtools::initFeUser(); // Initialize FE user object     
tslib_eidtools::connectDB(); //Connect to database
// ...
// ...
?>

Die erste Zeile initialisiert den FrontentUser und gibt uns diesen als Objekt zurück.
Die 2te Zeile stellt eine Verbindung zur Datenbank her.
Im Weiteren können wir ganz normal auch TYPO3 Funktionalitäten benutzen und unseren eigenen Renderingablauf schreiben.

Achja, um auch z.B. auf alle piBase Funktionen zurückzugreifen können wir uns ganz einfach eine Klasse erstellen die von dieser Erbt

 
PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
<?php
require_once(PATH_tslib.'class.tslib_pibase.php');

class unsereKlasse extends tslib_pibase {
  function main(){
    $feUserObj = tslib_eidtools::initFeUser(); // Initialize FE user object     
    tslib_eidtools::connectDB(); //Connect to database
    // ...
  }
}

$output = t3lib_div::makeInstance('unsereKlasse');
$output->main();
?>

Das war es soweit, wenn Ihr noch fragen dazu habt stellt Sie einfach über die Kommentarfunktion.

Quelle: http://www.typo3-tutorials.org

Über den Autor: Julian Kleinhans
Als TYPO3 Developer und Gründer von www.typo3-tutorials.org versuche ich hier mal mehr über die Materie TYPO3 reinzubringen :-)
Profilseite betrachten