Seite 1 von 1

Navigationspfad (Navipath) modifiziert (Multilanguage)

Verfasst: Sa 2. Aug 2008, 05:11
von Supporter
Hallo zusammen

Zwar hab ich keine Heldentat vollbracht, aber dachte mir die Anfänger können es gebrauchen (ich erinnere mich an meine Anfänge).

Das Modul Navigationspfad (Navipath) habe ich dahingehend geändert, dass Mehrsprachig ist und die letzte Ausgabe mit CSS formatiert wird. Wenn das Modul angelegt wird ist stets die Übersetzung zu machen. Ein Beispiel für die CSS formatierung liegt ebenfalls nachstehend bei.

Modul Output

Code: Alles auswählen

<?php

/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   :    Navigationpath
* Author(s)   :    Andreas Lindner
* Copyright   :    Contenido - four for business, Andreas Lindner
* Created     :    05-08-2005
* Modified    :    02-08-2008, Supporter
*                  Supports multilanguage, getting path
*                  from root and formating last output with css
************************************************/

#Settings
$separator = '>';
$max_length = 64;

#Get path to root
$dummy = conCreateLocationString($idcat, ' '.$separator.' ', $retval, true, "navipath", 0);

$multidesc = mi18n("Sie sind hier:");

if ($retval=='') {
    $retval='&nbsp;';   
} else {
    $pattern = "'>.*?<'";
    
    preg_match_all($pattern, $retval, $matches);
    $matches = $matches[0];
    
    #Get effective text length
    $length = 0;
    foreach ($matches as $value) {
        $length += strlen($value) - 2;
    }
    
    #Get shorten factor
    if ($length > $max_length * 4) {
        $shorten = 5;
    }
    elseif ($length > $max_length * 3) {
        $shorten = 4;
    }
    elseif ($length > $max_length * 2) {
        $shorten = 3;
    }
    elseif ($length > $max_length) {
        $shorten = 2;
    } else {
        $shorten = 1;
    }
    
    #Shorten items
    if ($length > $max_length) {
        foreach ($matches as $value) {
            if (strpos($value, $separator) === FALSE) {
                $text = substr($value, 1, strlen($value) - 2);
                $len = strlen($text);
                if (strpos($text, ' ') === FALSE) {
                    $text_new = $text;
                } else {
                    $text_new = capiStrTrimAfterWord($text, intval($len / $shorten));
                }
    
                if (strlen($text) != strlen($text_new)) {
                    $text_new .= '...';
                }
    
                $text_new = '>'.$text_new.'<';
                $retval = str_replace('>'.$text.'<', $text_new, $retval);
            }
        }
    }
    $retval = str_replace('"/index.html"', '"Home/index.html"', $retval);
    $setcss = explode('<a ', $retval);
    $setcss[count($setcss)-1] = 'class="last" '.$setcss[count($setcss)-1];
    $retval = implode('<a ', $setcss);
}

echo "<p class=\"path\">$multidesc $retval </p>";

?>
Übrigens, wer nicht möchte dass die erste Kategorie ausgegeben wird, der ändert

Code: Alles auswählen

#Get path to root
$dummy = conCreateLocationString($idcat, ' '.$separator.' ', $retval, true, "navipath", 0);
in

Code: Alles auswählen

#Get path to root
$dummy = conCreateLocationString($idcat, ' '.$separator.' ', $retval, true, "navipath", 1);
ab.

Hier der Style

Code: Alles auswählen

.path       { font-size:0.8em; line-height:32px; margin:16px 0 0 0; }
.path .last         { font-weight:bold; }
Damit sollte es nun einen vollumfänglichen Navigationspfad geben.

Re: Navigationspfad (Navipath) modifiziert (Multilanguage)

Verfasst: Sa 9. Aug 2008, 17:15
von emergence
Supporter hat geschrieben:Ein Beispiel für die CSS formatierung liegt ebenfalls nachstehend bei.
ähm wo ?

nicht das ich es benötigen würde... aber wenn du schon so schön darauf hinweist...

Verfasst: Di 12. Aug 2008, 17:32
von Nebel
Hi,

ist es möglich dem Navigationspfad noch die aktuelle Seite anzufügen, wenn nicht der Startartikel der jeweiligen Kategorie aufgelistet ist?

Also in Unterkategorie 1 von Kategorie I habe ich folgende Artikel:
X (Startartikel)
Y
Z

Wenn ich jetzt Artikel Z aufrufe möchte ich folgendes als Navigationspfad:
1>I>Z

Wenn ich X aufrufen nur
1>I

Geht das?

Schöne Grüße
Nebel

Verfasst: Mi 13. Aug 2008, 02:45
von Supporter
Der Navigationspfad gibt grundsätzlich nur Kategorien und keine Artikel aus. Das war schon immer so und ich wüsste auch nicht, dass es ein Modul gibt welches Artikel berücksichtigt.

Verfasst: Di 26. Aug 2008, 21:46
von stefkey
Hallo,

ja, den Artikel in der Pfadangabe wäre toll!
Es ist einfach praktischer wenn ich nicht für jeden Artikel vorher eine Kategorie anlegen muss!

Oder man müsste ein extra Modul für den Artikeltitel hintendran setzten...


Vielleicht gibts ja doch die Möglichkeit.


Grüße,
stefkey

Verfasst: Mi 27. Aug 2008, 02:55
von Supporter
Ich muss zugeben, dass ich ein solches Modul auch ziemlich nett finden würde. Praktisch ist es ja auch möglich und wenn ich dazu mal Zeit finde, klemme ich mich dahinter.

Frage

Verfasst: Do 11. Dez 2008, 16:30
von Sam001
Was muss ich denn machen wenn ich eine zweite Sprache, z. B. englisch, habe?

Vielen Dank für Eure Hilfe