---
title: "Frage zu einer Sitemap Extension"
url: "https://www.typo3.net/d/28710-frage-zu-einer-sitemap-extension"
source: "typo3.net"
tags: ["TYPO3","Menüs","Frage","PHP"]
created: "2005-08-15"
last_reply: "2005-08-15"
replies: 2
solved: false
page: 1
pages: 1
lang: "de"
---

# Frage zu einer Sitemap Extension

TYPO3 › Menüs · 2 Antworten · gestartet 2005-08-15

## Eröffnungsbeitrag

**jujitsu** · 2005-08-15 · [Beitrag #1](https://www.typo3.net/d/28710-frage-zu-einer-sitemap-extension/1)

Hallo,

ich habe vor eine eigene Sitemap zu bauen. So hab ich mir nun mit der Kickstarter Extension eine neue Extension entsprechend vorbereitet.

Vorgeschlagen war die Funktion

```php
$menuItems_level1 = $GLOBALS['TSFE']->sys_page->getMenu($id);
```

Damit bekomme ich aber nur die Seiten IDs unterhalb, der angegeben ID. Nun habe ich mich weiter mit der Klasse tslib_menu beschäftigt und dort neben den Funktionen start(...) und makeMenu() auch die Funktion isSubMenu näher angeschaut.

So hab ich mir überlegt mit den Funktionen isSubMenu und getMenu rekursiv eine Funktion zu schreiben, die mir ein Array mit allen IDs, incl den Sub-IDs, aufbaut.

Ich quäle mich jetzt aber mit dieser rekursiven Funktion herrum und dachte auch dass, das ja irgendwo schon stehen muss und ich auch viel einfacher irgendwie zu allen Seiten IDs mit den verschiedenen Ebenen, die ich brauche, kommen könnte. Aber nur wie?

Viele Gürße Ju.

## Antworten

### [#2](https://www.typo3.net/d/28710-frage-zu-einer-sitemap-extension/2) · jenses · 2005-08-15

Schau Dir mal die tt_news an, da findets Du einen Beispiel-Code,
um an die PID der Unterseiten zu kommen.

jenses

### [#3](https://www.typo3.net/d/28710-frage-zu-einer-sitemap-extension/3) · jujitsu · 2005-08-15

THX jenses,

das hat mich ja schon viel weiter gebracht. Zwar bin ich nicht ganz mit dem Code von tt_news durchgestiegen und ich denke die Anwendung dort ist schon anders als bei einer Sitemap. Jedenfalls wird die Funktion getTreeList verwendet, die ich nun auch verwendet hab, um alle ID zu bekommen.

Nur jetzt stehe ich vor dem Problem, wie ich die entryLevel Info zu den Seiten bekomme. Mittels der pid kann ich ja die übergeordnete Seite herrausfinden, aber nicht in welchem Level ich mich befinde. Leider bin ich auch nicht ganz schlau geworden, wie das in der tslib_menu funktioniert, bzw in der tt_news wird das gar nicht gebraucht?!

Könnt' ihr mir da noch ein paar Tips geben?!

Viele Grüße Ju.

PS: Ach, ja genau, ein anderes Problem, was ich noch mit der Lösung mit getTreeList habe, ist das ich auch die Seiten bekomme, die unterhalb von sysFoldern gelistet sind und ja in der Sitemap nicht auftauchen sollten. Wenn ich es jedoch hinkriege, komplette Verzeichnissbäume aus meinem Array zu löschen, dann könnte ich dies lösen.

Hier mal mein anfänglicher Code der main Funktion:

```php
    function main($content, $conf)
    {
        $this->conf = $conf;
        $startingPoint = intval($this->cObj->data['pages'] ? $this->cObj->data['pages'] : $GLOBALS['TSFE']->id);

        $this->menuObj = t3lib_div::makeInstance('tslib_tmenu');
        $this->menuObj->start($GLOBALS['TSFE']->tmpl, $GLOBALS['TSFE']->sys_page, $startingPoint, $this->conf["sm_conf."], 1);

        $menuIDs = explode(',', tslib_cObj::getTreeList($startingPoint, 100));

        $c = 0;
	$banUidArray = array();
        $menuItemsArr = array();

        foreach ($menuIDs as $id) {
            $page[$id] = $GLOBALS['TSFE']->sys_page->getPage($id);

            $spacer = (t3lib_div::inList($this->menuObj->spacerIDList, $page[$id]['doktype']) || !strcmp($page[$id]['ITEM_STATE'], 'SPC')) ? 1 : 0;

            if ($this->menuObj->filterMenuPages($page[$id], $banUidArray, $spacer) && $page[$id]) {
                $menuItemsArr[$c] = $page[$id];
                $menuItemsArr[$c]['isSpacer'] = $spacer;
                $c++;
            } 
        } 

//      t3lib_div::debug($menuItemsArr);
//...
}
```

---

Quelle: „Frage zu einer Sitemap Extension“, typo3.net, https://www.typo3.net/d/28710-frage-zu-einer-sitemap-extension
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
