TYPO3-Backend Module

Für die Verwaltung von TYPO3-Websites gibt es Backend Module, die sehr nützlich sind um Redakteuren eine saubere, aufgeräumte und intuitive Verwaltungsoberfläche anzubieten. Diese wollen wir in diesem Blogbeitrag vorstellen und auch die Verwendung in Multisites zeigen.

Digital Agentur TYPO3 Website

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.

TYPO-Website Backend
TYPO-Website Backend

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.

Webdesign-Wels TYPO3 Seitenverwaltung
TYPO3 Backend Seitenverwaltung

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:

TYPO3 Digitalagentur
TYPO3-Website Backend Module mit PageTree

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

Weitere interessante Beiträge zum Thema TYPO3 findest du hier.

Digital Agentur und Webentwicklung

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:

Passend zu diesem Thema:

TYPO3 Tipps und Tricks: Cache für einzelne Extbase-Objekte leeren

TYPO3 Tipps und Tricks: Cache für einzelne Extbase-Objekte leeren

Kürzlich bin ich bei einem Projekt vor folgendem Problem gestanden: Per Plugin werden Extbase-Objekte auf einer Seite ausgegeben und diese auch gecach…

TYPO3 Tipps und Tricks: Manueller/Programmatischer Login in Controller-Action (TYPO3 9)

TYPO3 Tipps und Tricks: Manueller/Programmatischer Login in Controller-Action (T…

Manchmal gibt es bei Web-Projekten die Notwendigkeit einen Login programmatisch (manuell, im PHP-Code) durchzuführen. Ein Kunde hat vor kurzem folgend…

TYPO3 Tipps und Tricks: Microsoft SQL Server (MSSQL) und TYPO3 in einem Docker-Container

TYPO3 Tipps und Tricks: Microsoft SQL Server (MSSQL) und TYPO3 in einem Docker-C…

In diesem Blogbeitrag zeigen wir, wie man eine Microsoft SQL-Server (MSSQL) Datenbank in einem Docker-Container mit ddev laufen lässt. Zusätzlich werd…