---
title: "userfunction bei Menü"
url: "https://www.typo3.net/d/77799-userfunction-bei-menue"
source: "typo3.net"
tags: ["TYPO3","Menüs","Frage"]
created: "2008-05-28"
last_reply: "2008-05-30"
replies: 1
solved: false
page: 1
pages: 1
lang: "de"
---

# userfunction bei Menü

TYPO3 › Menüs · 1 Antwort · gestartet 2008-05-28

## Eröffnungsbeitrag

**McGregor** · 2008-05-28 · [Beitrag #1](https://www.typo3.net/d/77799-userfunction-bei-menue/1)

Hallo Forum!

Ich will hier ein Menü bauen, das zufällig im Seitenbaum beginnt und dann die Reihenfolge des Baumes beibehält und am Ende der Liste wieder am Anfang die restlichen anhängt.
Also zum Beispiel:

```php
Seitenbaum              Webpage
nav                 
 |- Seite 1              |- Seite 3
 |- Seite 2              |- Seite 4
 |- Seite 3              |- Seite 5
 |- Seite 4              |- Seite 6
 |- Seite 5              |- Seite 1
 |- Seite 6              |- Seite 2
```

Per Session speichere ich diesen Zustand, so daß der aktuelle User dieses Menü angezeigt bekommt, bis er das nächste mal die Seite aufruft. Danach wird wieder ein "neuer" Menüaum berechnet.

Da ich mir schwer vorstellen kann, dieses mit TS umzusetzen, muss ich wohl ein Menü selbst basteln.
In der TSREF sieht das relativ einfach aus, aber leider hapert es bei mir bei der technischen Umsetzung.

Was ich von Euch bräuchte wäre eine Snippet eines _funktionierenden_ Userfunction-Menüs, also den Part im TS und ein PHP-File.

Ich bekomme es nämlich einfach nicht hin, dass mein Script angesprochen wird. Und dann bin ich mir nicht sicher, ob dieser Testeintrag ausreicht?

```typoscript
page.includeLibs.usermenu = fileadmin/misc/menu1.php

temp.splitmenu = HMENU
temp.splitmenu.special = userfunction
temp.splitmenu.special.userFunc = user_menuFunc->makeMenuArray

# ...

page = PAGE
page {
 includeCSS {
   file1 = fileadmin/misc/example.css
   file1.media = all
   file2 = fileadmin/misc/style.css
   file2.media = all
 } 
 10 = TEMPLATE
 10.workOnSubpart = START
 10.template = FILE
 10.template.file = fileadmin/misc/template.htm
 10.marks {
  MENU < temp.tmenu
  MENU2 < temp.splitmenu
# ...
 }
}
```

```php
<?php
class user_menuFunc {
  function makeMenuArray($content,$conf) {
    return array(array('title'=>'ABC','uid'=>'23'),array('title'=>'17','uid'=>'17'));
  }
}
?>
```

Wäre super, wenn mir da jemand unter die Arme greifen könnte ...

Grüße
McGregor

## Antworten

### [#2](https://www.typo3.net/d/77799-userfunction-bei-menue/2) · McGregor · 2008-05-30

Hi!

Da hab ich mal wieder die Antwort schneller selbst gefunden  :D

Folgendes TS:

```typoscript
temp.splitmenu2 = COA
temp.splitmenu2 {
 5 = TEXT
 5.value = <table cellpadding="0" cellspacing="0" border="0"><tr><td valign="top">
 10 = HMENU
 10 {
  special = userfunction
  special.userFunc = user_menuFunc->makeMenuArray
  special.userFunc.entryID = 30
  begin = 0
  maxItems = 5
  1 = TMENU
  1 {
   wrap = <div class="menu-header">2-Zi.-App.</div>|
   NO.allWrap = <div id="menu-zwei">|</div>
   ACT = 1
   ACT.allWrap = <div id="menu-zweiactive">|</div>
  }
 }
 15 = TEXT
 15.value = </td><td valign="top">
 20 < .10
 20.begin = 6
 20.1.wrap = <div class="menu-header">&nbsp;</div>|
 25 = TEXT
 25.value = </td><td valign="top">
 30 < .10
 30.begin = 11
 30.1.wrap = <div class="menu-header">&nbsp;</div>|
 35 = TEXT
 35.value = </td><td valign="top">
 40 < .10
 40.begin = 16
 40.1.wrap = <div class="menu-header">&nbsp;</div>|
 45 = TEXT
 45.value = </td><td valign="top">
 50 < .10
 50.begin = 21
 50.1.wrap = <div class="menu-header">&nbsp;</div>|
 55 = TEXT
 55.value = </td><td valign"top">
 60 < .10
 60.begin = 26
 60.1.wrap = <div class="menu-header">&nbsp;</div>|
 65 = TEXT
 65.value = </td></tr></table>
}

# ----- snip ------

page.10.marks.MENU < temp.splitmenu2
```

und hier mein PHP-File:

```php
<?php
class user_menuFunc {
 var $cObj;
 function makeMenuArray($content,$conf) {  	  
  $GLOBALS["TSFE"]->set_no_cache();
  $lConf = $conf["userFunc."];
  unset($menu1);
  $menu1 = $GLOBALS["TSFE"]->fe_user->getKey('ses', 'order'.$lConf['entryID']);
  if (!is_array($menu1)) {
   unset($menuArr);
   $menuArr = array();
   $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*','pages','hidden=0 AND deleted=0 AND pid = '.$lConf['entryID'],'','sorting','');
   while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) $menuArr[] = $row;
   // Jetzt neue Reihenfolge bestimmen ...
   $start = rand(0,count($menuArr));
   unset($neues_menu_array);
   $neues_menu_array = array();
   for ($i=$start; $i<count($menuArr); $i++) $neues_menu_array[] = $menuArr[$i];
   // und jetzt noch den Anfang dran hängen
   for ($i=0; $i<$start; $i++) $neues_menu_array[] = $menuArr[$i];
   $GLOBALS["TSFE"]->fe_user->setKey('ses', 'order'.$lConf['entryID'], $neues_menu_array);
  } else $neues_menu_array = $menu1;
  return $neues_menu_array;
 }
}
?>
```

Ich dachte nicht, dass ich im TS noch den normalen Code für die Menügenerierung reinpacken muss. Ist aber logisch...

Grüße
McGregor

---

Quelle: „userfunction bei Menü“, typo3.net, https://www.typo3.net/d/77799-userfunction-bei-menue
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
