Tutorials
Einige nützliche Hilfen und Code-Schnipsel, die ich immer wieder benötige und deshalb hier für alle sammle.
TYPO3: FeLogin (fe_login) um eigene Marker erweitern
Da fe_login immernoch Tripple-Hash Templates (###) verwendet (warum ist mir ein Rätsel), kann man das Template nicht so einfach pflegen wie ein normales Fluid-Template. Es gibt aber die Möglichkeit eigene Marker über einen Hook hinzuzufügen, um so auch eigene Logik unterzubringen. Das Ganze geht wie folgt:
ext_localconf.php
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['felogin']['postProcContent']['deinkey_add_feloginmarker'] = 'AR\ArSiteext\Hooks\FeUserHook->addMarker';
Danach müsst ihr in eurer Extension auch die Klasse anlegen, die ihr in der ext_localconf.php benutzt habt:
FeUserHook
namespace AR\ArSiteext\Hooks;
class FeUserHook {
/**
* Fügt einen Marker in das FeLogin Template ein
* im Stil von: ###MEINMARKER###
*
*/
public function addMarker ( $params, $_this ) {
$marker["###MEINMARKER###"] = 'Ein neuer Marker!';
$content = $cObj->substituteMarkerArrayCached($params['content'], $marker);
return $content;
}
}
Nun muss man nur noch das Template von felogin bearbeiten. Da man dies niemals im Core direkt tun sollte, passen wir die TypoScript Konfiguration an und sagen TYPO3, dass er bei uns in der Extension gucken soll. Dafür muss man auch das originale Template aus typo3/sysext/felogin herauskopieren.
TypoScript Konfiguration
plugin.tx_felogin_pi1 {
// Template-Datei überscheiben
templateFile = EXT:ar_siteext/Resources/Private/Templates/Felogin/FrontendLogin.html
}
Das wars nun auch schon. In eurem Template habt ihr nun den neuen Marker zur Verfügung.
Kommentare
Grüße, Manuel
/**
* Run Fluidparser over the content
*/
public function parseContent($params, $_this)
{
// Create Fluid renderer
$objectManager = GeneralUtility::makeInstance('TYPO3\CMS\Extbase\Object\ObjectManager');
$customView = $objectManager->get('TYPO3\\CMS\\Fluid\\View\\StandaloneView');
// Create Template file
$parsefile = tmpfile();
fwrite($parsefile, $params['content']);
// Render Tremplate
$customView->setTemplatePathAndFilename(stream_get_meta_data($parsefile)['uri']);
$content = $customView->render();
// Returen result + cleanup
fclose($parsefile);
return $content;
}
$_this->cObj->substituteMarkerArrayCached($params['content'], $marker);
Hinterlasse einen Kommentar