Mein Problem bisher bei der Dokumentation war, dass das hinterlegte Skript einen Menüpunkt *unter* einer Kategorie erstellt-
PHP-Code:
$contentNode = $tree->getChild('content');
Wenn man die Zeile weglässt, dann wird eine Kategorie angelegt- so einfach kann es sein...
Also: Der minimalste Weg scheint zu sein eine "BackendMenuListener.php" unter "/src/Eventlistener" zu erstellen mit dem Inhalt:
PHP-Code:
<?php
namespace App\EventListener;
use App\Controller\BackendController;
use Contao\CoreBundle\Event\ContaoCoreEvents;
use Contao\CoreBundle\Event\MenuEvent;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\EventDispatcher\Attribute\AsEventListener;
#[AsEventListener]
class BackendMenuListener
{
public function __construct(private readonly RequestStack $requestStack)
{
}
public function __invoke(MenuEvent $event): void
{
$tree = $event->getTree();
$factory = $event->getFactory();
if ('mainMenu' !== $tree->getName()) {
return;
}
$node = $factory
->createItem('meine_kategorie')
->setLabel('meine_kategorie')
->setLinkAttribute('title', 'meine_kategorie')
->setLinkAttribute('class', 'group-meine_kategorie')
->setExtra('is_group', true)
->setExtra('order', PHP_INT_MAX);
$tree->addChild($node);
}
}
Allerdings erscheint meine Kategorie dann als span- also:
PHP-Code:
->createItem('meine_kategorie', ['uri' => '/contao?mtg=meine_kategorie'])
Dann kommt nur die Startseite von Contao- ich möchte eigentlich keine Seite hinterlegen, nur, dass die Überschrift zusammenklappbar ist, wie alle anderen Punkte. Ich dachte dafür ist
PHP-Code:
->setExtra('is_group', true)
gedacht? Übersehe ich etwas?