---
title: "Rootline-Navigation kürzen?"
url: "https://www.typo3.net/d/67076-rootline-navigation-kuerzen"
source: "typo3.net"
tags: ["TYPO3","Menüs","Frage"]
created: "2007-08-21"
last_reply: "2007-09-04"
replies: 1
solved: false
page: 1
pages: 1
lang: "de"
---

# Rootline-Navigation kürzen?

TYPO3 › Menüs · 1 Antwort · gestartet 2007-08-21

## Eröffnungsbeitrag

**irisia3** · 2007-08-21 · [Beitrag #1](https://www.typo3.net/d/67076-rootline-navigation-kuerzen/1)

Hallo zusammen,

Ich versuche seit einiger Zeit auf meine Seite die Rootline zu kürzen, weil Ich will nicht, das die auf zwei Zeilen umgebrochen wird wenn sie zu lang wird. Stattdessen sollte die Länge der Menüeinträge zusammengezählt werden und wenn das größer als eine eingegebene Zahl ist, sollte die verkürtzt werden, also so etwas:
ebene1 > ... > ebene5 > ebene6 > ebene7

Also Ich habe in irgendeinem Forum gelesen, das die **crop** Methode der stdWrap innerhalb von HTML-Tags abschneidet und deswegen nicht an der Stelle zu gebrauchen ist. Als Vorschlag gab es da eine php-Methode, was aber genau dafür geignet ist - **cropHTML**:

```php
//parse given html
$doc = domxml_xmltree('<body>' . $content . '</body>');
$body = $doc->get_elements_by_tagname('body');
$length = 0;
$content = cropHTML($body[0], $length, 40);


echo $content;


function cropHTML(&$node, &$length, $maxLength = 200, $replaceString = '...') {
    $st = "";
    if ($length >= $maxLength)
        return $st;
    foreach ($node->child_nodes() as $cnode){
        if ($cnode->node_type() == XML_TEXT_NODE) {
            $text = $cnode->node_value();
            if (strlen($text) + $length < $maxLength) {
                $st .= $text;
                $length += strlen($text);
            } else if ($length < $maxLength) {
                $st .= substr($text, 0, $maxLength - $length) . $replaceString;
                $length = $maxLength+1;
                return $st;
            }
        } else {
            if ($cnode->node_type() == XML_ELEMENT_NODE) {
                $st .= "<" . $cnode->node_name();
                if ($attribnodes = $cnode->attributes()) {
                    $st .= " ";
                    foreach ($attribnodes as $anode) {
                        $st .= $anode->node_name() . "='" .$anode->node_value() . "'";
                    }
                }
                $nodeText = cropHTML($cnode, $length, $maxLength, $replaceString);
                if (empty ($nodeText) && !$attribnodes)
                    $st .= " />"; // unary
                else
                    $st .= ">" . $nodeText . "</" . $cnode->node_name() . ">";
            }
        }
        if($length >= $maxLength) break;
    }
    return $st;
}
```

Also habe Ich mir das runtergeladen und in dem typo3 folgendes ausprobiert:

```typoscript
page.includeLibs.some_random_id_string = fileadmin/php/cropHTML.inc

lib.rootline.20 = USER 
lib.rootline.20 {
	userFunc = user_functions->cropHTML
	minLength = 20
	replaceString = ....
}
```

...aber leider ohne Erfolg  #paralyzed#

Hat sich jemand vielleicht schon damit auseinandergesetzt? Ich wäre sehr dankbar für jede Hilfe.

Viele Grüße
Irisia

## Antworten

### [#2](https://www.typo3.net/d/67076-rootline-navigation-kuerzen/2) · irisia3 · 2007-09-04

Hallo Leute endlich habe Ich es hinbekommen und das wonach Ich gesucht habe war natürlich ganz einfach  #paralyzed#
Hier auch die Lösungsvorschlag dazu:

```typoscript
lib.rootline = HMENU
lib.rootline.special = rootline
lib.rootline.includeNotInMenu = 0         #aktivieren (1), wenn auch versteckte Seite angezeigt werden sollen
lib.rootline.special.targets.8 = page
lib.rootline.1 = TMENU
lib.rootline.1.target = _top

[treeLevel = 0,1,2,3,4,5]		  #Diese Bedingung sort dafür, dass die Rootline ab 6 Ebene verkürzt wird
lib.rootline.special.range = 0|-1
lib.rootline.1.NO {
     allWrap = <div class="bluebox"></div> | &nbsp; > &nbsp; |*| | &nbsp; > &nbsp; |*| | 
}
[ELSE]
lib.rootline.special.range = -5|-1
lib.rootline.1.NO {
     allWrap = {$rootLine} | &nbsp; > &nbsp; |*| | &nbsp; > &nbsp; |*| | 
}
[END]
```

```typoscript
lib.rootline.special.range = -5|-1
```

sorgt nähmlich dafür, dass Rootline   relativ zu aktueller Ebene neu berechnet wird und zwar z.B mit -5 fängt die Rootline bei der fünftletzte Ebene an.

{$rootLine} in Zeile 16 ist eine Konstante in der Ich dann die 0-te Ebene (root) plus '...' statisch reincodiert habe und es sieht so aus:

```typoscript
rootLine = <a href=index.php?id=1>Home</a> &nbsp;> &nbsp;... &nbsp;>&nbsp;
```

Und somit sieht meine fertige Rootline-Navigation wenn in tiefer in den Baumstruktur reingehe so aus:

Home > ... > Ebene 4 > Ebene 5 > Ebene 6 > Ebene 7 > Ebene 8

Viele Grüße
Irisia

---

Quelle: „Rootline-Navigation kürzen?“, typo3.net, https://www.typo3.net/d/67076-rootline-navigation-kuerzen
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
