UserFunc um ein Problem mit HMENU Typ "special=updated" zu umgehen

Submitting your vote...
Rating: 1.0 of 5. 1 vote(s).
Click the rating bar to rate this item.

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']!=&& $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.


Top 10 Updates

Typoscript Eigenschaften mit stdWrap erweitern geändert am  13-Jun-2008 14:16:12
Anderes Feld für GMENU alt Text geändert am  13-Jun-2008 13:55:51
Lightbox ohne Extension einbinden geändert am  13-Jun-2008 13:46:21
Menü erstellen mit Daten aus anderen Tabellen als pages V2 geändert am  24-Mär-2008 13:02:25
Login geändert am  17-Mär-2008 12:18:29
Forum geändert am  17-Mär-2008 10:07:40
Wer sind wir? geändert am  26-Dez-2007 16:06:55
Menu als unnested lists (iphone navigation) geändert am  29-Okt-2007 15:05:47
If Bedingungen mit UND und ODER Operator... geändert am  16-Okt-2007 19:04:17
UserFunc um ein Problem mit HMENU Typ "special=updated" zu umgehen geändert am  16-Okt-2007 18:58:28
English
Suche: