


Der HMENU Typ "special=updated" funktioniert bis auf einer Ausnahme gut: Es zeigt auch Seiten an, die Unterseiten von versteckten Seiten sind.
Z.B.
- A --> visible
- B --> hidden
-- B.1 --> visible
-C --> visible
-- C.1 --> visible
Also wird B.1 im Menü angezeigt, obwohl B versteckt ist. Um das zu umgehen kann man folgende kleine userFunc benutzen:
Wenn man "itemArrayProcFunc.limit = 5" setzt bekommt man eine ähnliche funktion wie wenn man "limit=5" auf ein HMENU Objekt setzt.
NOTIZ: Wenn man die Zeile
if ($row['hidden']) { - ERROR: Line 2: A multiline value section is not ended with a parenthesis!;Line 6: A multiline value section is not ended with a parenthesis!
in folgende Zeile ändert.
if ($row['hidden'] || $row['nav_hide'] || $row['doktype']==5) { - ERROR: Line 2: A multiline value section is not ended with a parenthesis!;Line 6: A multiline value section is not ended with a parenthesis!
So wird das menuitem auch nicht angezeigt, wenn die "Hide in menu" checkbox ausgewählt ist, oder wenn die Seite vom Typ "Not in menu" ist.
Das PHP Script: (Speichern als "fileadmin/menuFunc.inc")
-- cut --
<?php
class user_menuFunc {
function hideHiddenSubs($menuArr ,$conf) {
$this->pObj = $conf['parentObj'];
$limit = t3lib_div::intval_positive($conf['limit']);
$limit = $limit ? $limit : 9999;
$new_menuArr = array();
foreach ($menuArr as $pageFields) {
if (!$this->ishidden($pageFields['uid'])) {
$new_menuArr[] = $pageFields;
if (count($new_menuArr)==$limit) {
return $new_menuArr;
}
}
}
return $new_menuArr;
}
function ishidden($uid) {
$row['pid'] = $uid;
while ($row['pid']!=0 && $row['pid']!=$this->pObj->id) {
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*','pages','uid='.$row['pid']);
$row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);
if ($row['hidden']) {
return true;
}
}
return false;
}
}
?>
-- cut --
Typoscript für das Testmenü Objekt:
-- cut -- - ERROR: Line 1: Object Name String, "--" was not preceded by any operator, =<>({;Line 39: Object Name String, "--" was not preceded by any operator, =<>({ page.includeLibs.newpages = fileadmin/menuFunc.inc lib.newpages = COA lib.newpages { wrap = <div style="border: 1px solid black;"> | </div> 10 = TEXT 10.value = New Pages 10.wrap = <div> | </div> 20 = HMENU 20.special = updated 20.special.value = 52 20.special { #mode = lastUpdated mode = tstamp depth = 99 maxAge = 3600*24*7*8 #limit = 5 } 20.1 = TMENU 20.1 { wrap = <ul> | </ul> expAll = 1 minItems = 1 maxItems = 5 itemArrayProcFunc = user_menuFunc->hideHiddenSubs itemArrayProcFunc.limit = 5 NO { allWrap = <li> | </li> } } } page.44 < lib.newpages -- cut -- - ERROR: Line 35: Object Name String, "--" was not preceded by any operator, =<>({;Line 73: Object Name String, "--" was not preceded by any operator, =<>({
Dieses Snippet wurde von Peter Klein eingesendet.


Kommentare (0)