MyBB.de Forum

Normale Version: Navigation duplizieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

Ich hab nun eine Menge Posts über die Navigation gefunden, aber keine die mir weiterhelfen würde.
Ich möchte zusätzlich zur normalen Navigation in einem Menü links eine zweite Navigation einfügen. Das Problem dabei ist aber, dass ich diese zweite Navigation anders formatieren müsste(Absätze, keine Trennstriche usw.) als die normale. Ich hab nun nach der Stelle gesucht, an der <navigation> definiert wird, um dort das Ganze einfach zu duplizieren (z.B. navigation2) und die Templates entsprechend anzupassen, aber ich habe nichts dergleichen gefunden. Gibts da ne Möglichkeit?

So nebenbei gefragt: Wieso wird das Ganze denn durch <>-Symbole implementiert und nicht php-typisch mit geschweiften Klammern? (Habe so gut wie keine Ahnung von php). Wurde da ein html-Tag "erfunden", welches php ersetzt?
Der Tag <navigation> wird einfach per PHP durch die Navigation ersetzt. Was genau hast du denn vor? Kannst du vielleicht auch einen Screenshot anhängen auf dem deutlich wird, wie das Ganze aussehen soll?
Hab nen Screenshot mal angehängt. Man sieht das Willkommenspanel schon eingefügt(nocht nicht final). Und genau darunter soll nun noch die Navigation dazu, allerdings ohne Trennstriche und pro Ebene ein Absatz. Die Leiste links bleibt ständig auf gleicher Höher, sodass man schnell auf höhere Ebenen wechseln kann.

Leiste für Navigation
Probiere das:
Ersetze in der inc/functions.php:
PHP-Code:
/**
 * Parses the contents of a page before outputting it.
 *
 * @param string The contents of the page.
 * @return string The parsed page.
 */
function parse_page($contents)
{
    global 
$db$lang$theme$mybb$htmldoctype$loadpmpopup$archive_url;

    
$contents str_replace('<navigation>'build_breadcrumb(1), $contents); 
durch:
PHP-Code:
/**
 * Build the breadcrumb navigation trail from the specified items
 *
 * @return The formatted breadcrumb navigation trail
 */
function build_breadcrumb2()
{
    global 
$nav$navbits$templates$theme$lang;

    eval(
"\$navsep = \"".$templates->get("nav2_sep")."\";");

    if(
is_array($navbits))
    {
        
reset($navbits);
        foreach(
$navbits as $key => $navbit)
        {
            if(isset(
$navbits[$key+1]))
            {
                if(isset(
$navbits[$key+2])) { $sep $navsep; } else { $sep ""; }
                eval(
"\$nav .= \"".$templates->get("nav2_bit")."\";");
            }
        }
    }
    
$navsize count($navbits);
    
$navbit $navbits[$navsize-1];
    if(
$nav)
    {
        eval(
"\$activesep = \"".$templates->get("nav2_sep_active")."\";");
    }
    eval(
"\$activebit = \"".$templates->get("nav2_bit_active")."\";");
    eval(
"\$donenav = \"".$templates->get("nav2")."\";");
    return 
$donenav;
}

/**
 * Parses the contents of a page before outputting it.
 *
 * @param string The contents of the page.
 * @return string The parsed page.
 */
function parse_page($contents)
{
    global 
$db$lang$theme$mybb$htmldoctype$loadpmpopup$archive_url;

    
$contents str_replace('<navigation>'build_breadcrumb(1), $contents);
    
$contents str_replace('<navigation2>'build_breadcrumb2(1), $contents); 
Dann musst du nur noch im gewünschten Template das einfügen...
Code:
<navigation2>
...und alle Templates, die mit "nav" anfangen, kopieren und "nav2..." nennen. Diese werden dann dort verwendet.
Vielen vielen Dank. Das funktioniert wunderbar.
Einzige Anpassung, die ich machen musste: Die Variable $nav in der Funktion build_breadcrumb2 habe ich in $nav2 umgetauft. Dementsprechend auch im Template. Ohne die Änderung bekomme ich nämlich zwei Navigationen untereinander und zwar je nachdem welche in parse_page zuerst aufgerufen wird(Ori-Navigation zuerst -> Ori Navigation über 2. Navigation und umgekehrt).
Vielleicht hätt man sie auch einfach in der zweiten Funktion zuerst leeren können, da ich mich aber mit php seit Jahren nicht mehr befasst habe, war die Möglichkeit fix erledigt.