Bei einem Projekt machte es wirklich Sinn direkt die Extension Records in der 2. Ebene des Hauptmenüs auszugeben anstatt für jeden einzelnen Eintrag eine eigene Seite zu erstellen.
Diese Anleitung hier setzt voraus dass das Menü mit einem HMENU/TMENU generiert wird. Als Extension nehmen wir für dieses Beispiel foo (Exension Key).
Eingefügt werden die Records über die itemArrayProcFunc des HMENUs.
Schritt 1) erstellen der userFunc EXT:foo/class.user_menuItemArrayProcFunc.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
<?php class user_menuItemArrayProcFunc { public function process($menuArr, $conf) { $pObj = $conf['parentObj']; $parentPageId = $pObj->id; // Unterhalb dieser Seite sollen die Records eingefügt werden if ($conf['parentPageId'] == $parentPageId) { $detailPageRow = $GLOBALS['TSFE']->sys_page->getPage($conf['detailPageId']); if (is_array($detailPageRow)) { $getVars = t3lib_div::_GET(); $table = 'tx_foo_domain_model_entry'; $cObj = t3lib_div::makeInstance('tslib_cObj'); $entries = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows('title,uid,pid', $table, 'sys_language_uid=0 AND deleted=0 AND hidden=0'); foreach ($entries as $entry) { // record overlay für Übersetzungen $entry = $GLOBALS['TSFE']->sys_page->getRecordOverlay($table, $entry, $GLOBALS['TSFE']->sys_language_uid); $item = $detailPageRow; $item['title'] = $entry['title']; // Link zur Detailansicht des Records generieren $url = $cObj->typoLink_URL(array( 'parameter' => $conf['detailPageId'], 'additionalParams' => '&' . http_build_query(array( 'tx_foo_plugin' => array( 'entry' => $entry['uid'], 'action' => 'show', 'controller' => 'Entry' ) )) )); $item['_OVERRIDE_HREF'] = $url; $item['ITEM_STATE'] = 'NO'; if ($entry['uid'] == $getVars['tx_foo_plugin']['entry']) $item['ITEM_STATE'] = 'ACT'; $menuArr[] = $item; } } } return $menuArr; } } ?> |
Tabellen, Link Generierung usw. müssen natürlich angepasst werden.
2) einfügen der userFunc in das HMENU
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# proc func für foo records includeLibs.user_menuItemArrayProcFunc = EXT:foo/class.user_menuItemArrayProcFunc.php lib.mainNav = HMENU lib.mainNav { special = directory special.value = 1 wrap = <ul>|</ul> # 1. Ebene 1 = TMENU 1 { expAll = 1 NO { ATagTitle.field = nav_title//title wrapItemAndSub = <li>|</li> } } # 2. Ebene - Submenü 2 < .1 2 { wrap = <ul>|</ul> # unsere itemArrayProcFunc itemArrayProcFunc = user_menuItemArrayProcFunc->process # parentPageId - unterhalb dieser Seite werden die Records eingefügt itemArrayProcFunc.parentPageId = 3 # detailPageId - Seite mit der Detailansicht des Records itemArrayProcFunc.detailPageId = 46 } } |
Besten Dank, genau das was ich gesucht habe!
Hat mir viel Zeit gespart 🙂
Das ist cool, werde ich mal bookmarken für alle Fälle 😉
Ich benötige das Feature auch gerade. Leider klappt es unter TYPO 3 7.6. nicht mehr, da die Einbindung der Userfunc anders läuft. Vllt. hat jemand ein Update für TYPO 7.6 ?