Menü für eigene Tabellen
Menü für selbst entwickelte Extensions
Um Menüs für eigene Tabellen (z.B. in selbst entwickelten Extensions) zu erzeugen definiert man zunächst das Typoskript für das Menü und setzt special.userFunc auf eine eigene Funktion Menu->makeMenuArray (siehe weiter unten):
lib.TEST = HMENU
lib.TEST{
special = userfunction
special.userFunc = RSYS\RsystemplateBootstrap\UserFunctions\Phpcode->main
special.userFunc.table = tx_myextension_mytable
special.userFunc.reverseOrder = 0
1 = TMENU
1.wrap = <ul class="level-1">|</ul>
1.NO = 1
1.NO {
wrapItemAndSub = <li>|</li>
}
2 = TMENU
2.wrap = <ul class="level-2">|</ul>
2.NO = 1
2.NO {
wrapItemAndSub = <li>|</li>
}
3 = TMENU
3.wrap = <ul class="level-3">|</ul>
3.NO = 1
3.NO {
wrapItemAndSub = <li>|</li>
}
}
Die Parameter table und reverseOrder sind in diesem Fall Parameter, die der userFunc übergeben werden, das ist hier nur ein Beispiel, real werden wohl mehrere Parameter benötigt.
Die Funktion, welche das Menü letztlich erzeugt liegt in RSYS\RsystemplateBootstrap\UserFunctions\Menu.php und sieht folgendermassen aus:
final class Menu{
public function makeMenuArray(string $content, array $conf): array {
$connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($conf['userFunc.']['table']);
$result = $connection->select(
['header'],
$conf['userFunc.']['table'],
['pid' => (int)$GLOBALS['TSFE']->id],
[],
['sorting' => $conf['reverseOrder'] ? 'DESC' : 'ASC']
);
$output = [];
foreach ($result as $row) {
$output[] = [ 'title' => $row['header'], '_OVERRIDE_HREF' => 'index.php?id=10&record=' . $row['uid', ];
}
return $output;
}
}