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