Update 12/2022: Für TYPO3 11 haben wir einen neuen Beitrag erstellt, da sich die TYPO3-API und das List-View-Module geändert hat: TYPO3 Tipps und Tricks: TYPO3 11 - Custom Backend Module mit List-Module.
Wir verwenden Backend-Module oft um den Benutzern direkt zur Listenansicht der Extbase-Objekte weiterzuleiten.

Um ein Backend-Modul zu registrieren, ist folgender TYPO3-Core-Aufruf in der ext_tables.php der TYPO3-Extension notwendig:
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerModule(
$extensionName,
$mainModuleName,
'tx_typo3_site_mod_school',
'',
[
\Various\TYPO3\Site\Controller\BackendController::class => 'schools',
],
[
'access' => 'user,group',
'icon' => 'EXT:va_ooe_vrs_site/Resources/Public/Icons/Modules/Schools.svg',
'labels' => 'LLL:EXT:va_ooe_vrs_site/Resources/Private/Language/locallang_mod_schools.xlf',
]
);
Hier ist der Backend-Controller, in welchem der Redirect zur List-PID vornehmen:
class BackendController extends ActionController
{
protected $siteConfig;
public function __construct()
{
$this->siteConfig = SiteConfiguration::get()->getConfiguration();
}
/**
* schools - All
*
* @return void
*/
public function schoolsAction()
{
$uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
$uri = $uriBuilder->buildUriFromRoute('web_list', [
'id' => intval($this->siteConfig['school_pid']),
'table' => 'tx_typo3_site_mod_school'
]);
$this->redirectToUri($uri);
}
}
Wie im Code-Snippet oben ersichtlich ist, speichern wir die PID in den Einstellungen der Seitenkonfiguration - die Dokumentation dazu findet man hier.

Dies führt nun allerdings in einer Multi-Site Umgebung der TYPO3-Website zu Problemen, da ein Backend-Benutzer ja Zugriff auf mehrere Teilbäume haben kann. Wir als Digitalagentur haben uns damit Abhilfe geschafft, indem wir die zugeordneten Mount-Points des Backend Benutzers auslesen (Option A). Oder zusätzlich den Page-Tree anzeigen, damit der Benutzer den Ordner auswählen muss, bevor die Listenansicht geöffnet wird (eben wie beim Listenmodul) - Option B.
TYPO3 Mount-Points auslesen
Hier zeigen wir, wie man die verknüpften TYPO3-Websites eines Backend-Benutzers auslesen kann. Anschließend ladet man diese Seitenkonfiguration und lädt die anzuzeigende PID aus den Seiteneigenschaften. Dieses Modul wird dann so konfiguriert, dass es nur den Benutzern zugewiesen ist, die genau einen Seitenbaum verwalten dürfen.
public function schoolsAction()
{
$id = (int)GeneralUtility::_GP('id');
if ($this->request->hasArgument('id')) {
$id = (int)$this->request->getArgument('id');
}
$context = GeneralUtility::makeInstance(Context::class);
$backendUserId = $context->getPropertyFromAspect('backend.user', 'id');
$backendUserAdmin = $context->getPropertyFromAspect('backend.user', 'isAdmin');
if (!$backendUserAdmin) {
//show schools based on assigned db mounts
$beUserRepository = GeneralUtility::makeInstance(BackendUserRepository::class);
$beUser = $beUserRepository->findByUid($backendUserId);
if (strpos($beUser->getDbMountPoints(), ',') === false) {
$mountPoint = intval($beUser->getDbMountPoints());
$siteConfig = SiteConfiguration::get("", $mountPoint)->getConfiguration();
$id = intval($siteConfig['school_pid']);
}
}
$uriBuilder = GeneralUtility::makeInstance(UriBuilder::class);
$uri = $uriBuilder->buildUriFromRoute('web_list', [
'id' => $id,
'table' => 'tx_typo3_site_mod_school'
]);
$this->redirectToUri($uri);
}
TYPO3 Backend-Modul Page-Tree anzeigen
Man kann ein TYPO3-Backend-Modul bei der Registrierung so konfigurieren, dass es beim Öffnen auch automatisch das TYPO3-Page-Tree-Component anzeigt. Dazu wird diese Configuration hinzugefügt: 'navigationComponentId' => 'TYPO3/CMS/Backend/PageTree/PageTreeElement'
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerModule(
$extensionName,
$mainModuleName,
'PersonWithPageTree',
'',
[
\Various\TYPO3\Site\Controller\BackendController::class => 'people',
],
[
'access' => 'user,group',
'icon' => 'EXT:va_site/Resources/Public/Icons/module-people.svg',
'labels' => 'LLL:EXT:va_site/Resources/Private/Language/locallang_mod_people_all.xlf',
'navigationComponentId' => 'TYPO3/CMS/Backend/PageTree/PageTreeElement'
]
);
Danach wird beim Öffnen mittels Klick auf das Backend Module der TYPO3-Page-Tree angezeigt und der Backend-Benutzer bzw. Redakteur kann den gewünschten Ordner auswählen. Auf welche Ordner der Benutzer zugriff hat, wird über die Berechtigungen (Modul Zugriff) gesteuert:

Wir bei Various Interactive setzen auch immer einen hohen Anspruch an das konfigurierte TYPO3-Backend. Das Backend soll leicht bedienbar sein und eine gute Userexperience für die Redakteure bieten. Damit soll auch die Akzeptanz von TYPO3 erhöht werden und die Benutzer auch gerne damit arbeiten. Zahlreiche Website-Redakteure oder Kundenservice-Mitarbeiter arbeiten täglich mit unserem TYPO3-Backend und uns als Digitalagentur liegen auch die Redakteure am Herzen und versuchen das Backend leicht bedienbar zu gestalten.
Aus der Reihe TYPO3 Tipps und Tricks
-
TYPO3 Tipps und Tricks: (Custom) Sitemap entwickeln mittels ext:seo
-
Microsoft SQL Server (MSSQL) und TYPO3 in einem Docker-Container
-
Manueller/Programmatischer Login in Controller-Action (TYPO3 9)
Weitere interessante Beiträge zum Thema TYPO3 findest du hier.

Wir entwickeln digitale Lösungen mit Leidenschaft
Warum wir das tun? Weil die Verwirklichung Ihrer Vision unser größter Anspruch und die schönste Anerkennung ist. Deshalb nehmen wir uns gerne ausreichend Zeit für die Realisierung Ihres digitalen Projekts.
Kontaktieren Sie uns, wir sind gerne für Ihre Fragen da: