Navigationspfad (Navipath) modifiziert (Multilanguage)

Gesperrt
Supporter
Beiträge: 124
Registriert: Mo 12. Mai 2008, 14:21
Wohnort: In the middle of something...
Kontaktdaten:

Navigationspfad (Navipath) modifiziert (Multilanguage)

Beitrag 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.
Zuletzt geändert von Supporter am Mi 13. Aug 2008, 02:43, insgesamt 1-mal geändert.
Ειμαστε στη μεση απο κατι...
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Re: Navigationspfad (Navipath) modifiziert (Multilanguage)

Beitrag 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...
*** make your own tools (wishlist :: thx)
Nebel
Beiträge: 117
Registriert: Do 14. Jun 2007, 10:08
Kontaktdaten:

Beitrag 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
Supporter
Beiträge: 124
Registriert: Mo 12. Mai 2008, 14:21
Wohnort: In the middle of something...
Kontaktdaten:

Beitrag 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.
Ειμαστε στη μεση απο κατι...
stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Beitrag 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
Supporter
Beiträge: 124
Registriert: Mo 12. Mai 2008, 14:21
Wohnort: In the middle of something...
Kontaktdaten:

Beitrag 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.
Ειμαστε στη μεση απο κατι...
Sam001
Beiträge: 14
Registriert: Do 25. Okt 2007, 10:48
Kontaktdaten:

Frage

Beitrag von Sam001 »

Was muss ich denn machen wenn ich eine zweite Sprache, z. B. englisch, habe?

Vielen Dank für Eure Hilfe
Gesperrt