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

Submitting your vote...
Rating: 3.0 of 5. 4 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']) {

 

in folgende Zeile ändert.

 

if ($row['hidden'] || $row['nav_hide'] || $row['doktype']==5) {

 

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 --
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 --

 

Dieses Snippet wurde von Peter Klein eingesendet.



Comments


No comments

Add comment

* - required field

*



*
*

Top 10 Updates

Login geändert am  09-Sep-2010 11:31:35
Schöne Schriften mit Google Font API geändert am  20-May-2010 16:36:59
TS basierte Searchbox für Indexed Search geändert am  18-May-2010 18:26:54
TYPO3 SEO geändert am  30-Apr-2010 09:43:20
Suchmaschinenfreundliche grafische Überschriften in TYPO3 geändert am  30-Apr-2010 09:33:56
Erstellen eines einfachen Infocenters mit TYPO3  geändert am  17-Nov-2009 12:11:22
Funktionierendes Section Menu mit TemplaVoila geändert am  05-May-2009 12:42:40
"Nicht im Menü" in Sitemap anzeigen geändert am  05-May-2009 12:12:24
Implementation des DHTML Menüs von brainjar.com  geändert am  01-Feb-2009 14:01:36
Beispiel DHTML Menü geändert am  01-Feb-2009 13:47:38

Latest comments

18-Jan-2012 11:03:20
cjjgeb cjjgeb schrieb: qUWC8M <a href="http://yviwfgyvopxz.com/">yviwfgyvopxz</a>
Typolink
18-Jan-2012 05:39:25
Melia Melia schrieb: Stands back from the kybeoard in amazement! Thanks!
Typolink
02-Jan-2012 22:48:33
Dietmar schrieb: Doch, genau das soll es doch sein. Sonst könntest Du ja die Seiten in der Vorschau nicht...
Eigenes vhost für das TYPO3 Backend
English
Suche: