Tutorials

Einige nützliche Hilfen und Code-Schnipsel, die ich immer wieder benötige und deshalb hier für alle sammle.

Zurück zur Übersicht

TYPO3: FeLogin (fe_login) um eigene Marker erweitern

#Tutorials#TYPO3

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

  • Manuel Rotschkar
    Habe mir gerade bei Euch abgeguckt, wie das ungefähr geht, aber dann direkt einen Fluid Parser eingebaut :-)
    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;
    }
    Antworten
  • Crawfish
    Vielen Dank für das Tutorial! :-) Wie würde ich einen neuen Marker bei mehrsprachigen Websites einsetze via Typoscript bzw. in der felogin-Konfiguration über _LOCAL_LANG ansprechen? Danke für Deine Hilfe!
    Antworten
  • Typo3 Fan
    Danke für das Tutorial! Sehr hilfreich!
    Antworten
    • Andre Rinas
      Freut mich, dass ich dir weiterhelfen konnte!
      Antworten
  • Alexander Wahl
    In deinem Beispiel ist ein kleiner Fehler drin. Es muss heissen:

    $_this->cObj->substituteMarkerArrayCached($params['content'], $marker);
    Antworten
  • Alexander Wahl
    Top! Danke für die Anleitung!
    Antworten

Hinterlasse einen Kommentar

Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Kommentar wird gespeichert
Danke für deinen Kommentar! Sobald er freigegeben wurde erscheint er hier.