Wenn man mit Extbase ein Backend Modul erstellt, sind im Controller die Settings auf die man in einem Frontend Controller mit $this->settings direkt zugreifen kann, nicht verfügbar. Weiterlesen
Kategorie-Archiv: Web
Extbase Backend Modul als Hauptmodul integrieren
Bisher ist es bei Extbase Erweiterungen nur möglich, mittels Tx_Extbase_Utility_Extension::registerModule() seine eigenen Backend Module in vorhandene Module einzuklinken, sprich in web, file, user, tools usw.
Über die traditionelle Methode t3lib_extmGm::addModule() kann man sich jedoch ein Dummy-Hauptmodul erstellen, in das man die neuen Module dann als Submodule einklinken kann.
ext_localconf.php
if (TYPO3_MODE === 'BE') { $mainModuleName = str_replace('_', '', $_EXTKEY) . 'M1'; // Hack damit das Modul direkt nach dem Web Modul erscheint // die Angabe der $position in addModule() funktioniert hier leider nicht if (!isset($TBE_MODULES[$mainModuleName])) { $temp_TBE_MODULES = array(); foreach($TBE_MODULES as $key => $val) { if($key == 'web') { $temp_TBE_MODULES[$key] = $val; $temp_TBE_MODULES[$mainModuleName] = ''; } else { $temp_TBE_MODULES[$key] = $val; } } $TBE_MODULES = $temp_TBE_MODULES; } // Hauptmodul erstellen t3lib_extMgm::addModule($mainModuleName, '', '', t3lib_extMgm::extPath($_EXTKEY).'Configuration/BackendModule/'); // Erstes richtiges Backend Modul der Extension Tx_Extbase_Utility_Extension::registerModule( $_EXTKEY, $mainModuleName, 'subModuleName', '', array( // ... ), array( // ... ) ); } |
Unter Configuration/BackendModule/ (das Verzeichnis kann natürlich beliebig gewählt werden) erstellen wir noch eine conf.php:
< ?php /** * Dummy Konfiguration fürs Haupt Backend Modul */ define('TYPO3_MOD_PATH', '../typo3conf/ext/ext_key/Configuration/BackendModule/'); $MCONF['name'] = 'txextkeyM1'; $MCONF['script'] = '_DISPATCH'; $MCONF['access'] = 'user,group'; $MLANG['default']['tabs_images']['tab'] = 'moduleicon.gif'; $MLANG['default']['ll_ref'] = 'LLL:EXT:ext_key/Resources/Private/Language/locallang_mod_main.xml'; ?> |
Somit kann TYPO3 unser „Dummy“ Hauptmodul ordnungsgemäß erstellen und die eigentlichen Module werden als Kind-Module hinzugefügt.
Das Ganze sieht dann so aus:
Extbase Plugins mit TypoScript einbinden
TYPO3 Erweiterungen im bisherigen pi_base-Stil kann man ganz einfach mit
lib.foo < plugin.tx_extensionkey_pluginname |
in ein beliebiges TypoScript Objekt einfügen.
Mit neueren Erweiterungen die man mit Extbase und Fluid erstellt, gestaltet sich das (noch) etwas schwieriger. Hier muss man einen Umweg über eine userFunc mit dem Extbase Bootstrapper gehen.
Bei dem Beispiel handelt es sich um eine kleine Webshop Erweiterung die ich für ein Projekt geschrieben habe. Ziel ist es, eine Warenkorb Übersicht in der Sidebar auszugeben:
lib.sidebar = COA lib.sidebar { # [...] 10 = USER 10 { userFunc = tx_extbase_core_bootstrap->run # TYPO3 6.0 / Namespaces Kompatibilität vendorName = Foo pluginName = Pi2 extensionName = ExtensionKey controller = Cart action = sidebar switchableControllerActions { Cart { 1 = sidebar } } settings =< plugin.tx_extensionkey.settings persistence =< plugin.tx_extensionkey.persistence view =< plugin.tx_extensionkey.view } } |
Jetzt muss nur noch im Cart Controller (wie im TS angegeben) die sidebarAction implementiert werden, in der unsere gewünschte Ausgabe generiert wird. Das erfolgt üblicherweise mit einem Fluid Template – dazu wiederum das entsprechende Template sidebar.html im Templates/Cart Verzeichnis anlegen, in der sidebarAction mit $this->view->assign() die Templatevariablen zuweisen und schließlich die fertige Ausgabe mit return $this->view->render(); zurückgeben. Das return Statement bitte nicht vergessen denn sonst passiert gar nichts 😉
Typoscript XML Sitemap
Man kann sich mit Typoscript eine wunderbare XML Sitemap basteln, ohne dazu extra eine der vielen erhältlichen Extensions verwenden zu müssen.
In diesem Beispiel wird der komplette Seitenbaum abgebildet, plus zusätzlich die Einträge einer Extensiontabelle. Wenn man z.B. eine Auflistung von Newsartikeln inkl. einer Detailansicht zum jeweiligen Artikel hat, kann man diese Detailseiten ebenfalls hier hinzufügen. (ab 20 = CONTENT…)
TYPO3 Extension: ad_rtepasteplain
Mit dieser Erweiterung wird beim Einfügen von Texten aus der Zwischenablage in den Rich Text Editor (zur Zeit noch rtehtmlarea, dieser wird wohl irgend wann gegen den CKEditor ausgetauscht werden) jegliche Formatierung entfernt, sodass Redakteure die Website nicht mit HTML Code oder Word Formatierungen verunstalten können.
Das Ganze funktioniert derzeit nur mittels Strg+V, auf die Einfügen Buttons im Editor hat diese Erweiterung keinen Einfluss. Das werde ich aber bei Gelegenheit evtl. noch einbauen.
Auszug aus dem Manual:
This extension forces htmlArea RTE to automatically paste the clipboard content as plain text.It basically adds an event handler that fires when something is going to be pasted.If the clipboard content cannot be retrieved by the script (e.g. because of the browser’s security settings or if the browser does not support direct access to the clipboard contents), a layer containing a textarea will be opened. After pasting to this textarea the text is being inserted at the current caret position.
Link: http://typo3.org/extensions/repository/view/ad_rtepasteplain/current/