Kategorie-Archiv: TYPO3

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: