Seite 1 von 1

Navigation - Auswahl hervorheben

Verfasst: 07.10.2007 13:39
von TomW
Hallo,

Ich verwende das Framework YAML in Verbindung mit phpbb, jetzt möchte ich in der Navigation die Auswahl entsprechend hervorheben. Meine Navigation sieht so aus.

Code: Alles auswählen

<div id="nav_main">
  <ul>
    <li><a href="layout.php">Home</a></li>
    <li id="current"><a href="index.php">Forum</a></li>
    <li><a href="vor-ort.html">Vor-Ort</a></li>
    <li><a href="online.html">Online-Sitzung</a></li>
    <li><a href="lexikon.php">Lexikon</a></li>
    <li><a href="downloads.php">Downloads</a></li>
    <li><a href="boardregeln.php">Regeln</a></li>
    <li><a href="team.php">Team</a></li>
  </ul>
</div>
Die Auswahl wird hier mit "id="current"" hervorgehoben, jetzt steht dieser Code aber in der overall_header, und wie schaffe ichs da dass wenn ich z.B. auf Team klicke das "id="currend"" nach " <li><a href="team.php">Team</a></li>" wandert?

TomW

Verfasst: 07.10.2007 14:37
von mad-manne
Hallo Tom,
dazu sind mehrere Schritte notwendig, die ich hier mal exemplarisch skizziere ...
  • 1. Aktives Modul "bekannt" machen ...
    Zunächst einmal musst du in jedem "Hauptmodul" eine Variable setzen. Dazu suchst du in jedem Modul den Aufruf der includes/page_header.php, der meist inetwa so aussehen sollte:

    Code: Alles auswählen

    //
    // Generate page
    //
    $page_title = 'foo';
    include($phpbb_root_path . 'includes/page_header.'.$phpEx);
    
    Nun fügst du vor der Zeile mit der $page_title-Zuweisung folgendes ein:

    Code: Alles auswählen

    $nav_current = 'modul1';
    Dadurch kannst du der includes/page_header.php aus jedem Modul "mitteilen", welches gerade aktiv ist.
  • 2. Aktives Modul erkennen ...
    Dies musst du dann logischerweise in der includes/page_header.php prüfen und entsprechend den nächsten Schritt vorbereiten. Dazu öffnest du die includes/page_header.php und suchst eine geeignete Stelle um diese Abfrage einzufügen. Denkbar wäre z.b. der Bereich direkt vor der Übergabe der Variablen an die Template-Engine. Dazu suchst du folgende Stelle:

    Code: Alles auswählen

    $template->assign_vars(array(
    	'SITENAME' => $board_config['sitename'],
    
    Davor kannst du dann folgendes einfügen:

    Code: Alles auswählen

    // Aktives Modul in Navigation hervorheben
    // Zunächst alle Modul-Indikatoren löschen ...
    $nav_indicator_index = '';
    $nav_indicator_modul1 = '';
    $nav_indicator_modul2 = '';
    $nav_indicator_modul3 = '';
    
    // jetzt aktives Modul "markieren" ...
    switch ($nav_current)
    {
    	case 'modul1':
    		$nav_indicator_modul1 = 'id="current"';
    		break;
    		
    	case 'modul2':
    		$nav_indicator_modul2 = 'id="current"';
    		break;
    
    	case 'modul3':
    		$nav_indicator_modul3 = 'id="current"';
    		break;
    
    	default:
    		$nav_indicator_index = 'id="current"';
    }
    
  • 3. Markierung ans Template übergeben
    Nun etwas weiter unten in der includes/page_header.php z.B. vor

    Code: Alles auswählen

    'PRIVMSG_IMG' => $icon_pm,
    folgendes einfügen:

    Code: Alles auswählen

    	// NAVIGATIONS-HERVORHEBUNG
    	'NAV_INDICATOR_INDEX' => $nav_indicator_index,
    	'NAV_INDICATOR_MODUL1' => $nav_indicator_modul1,
    	'NAV_INDICATOR_MODUL2' => $nav_indicator_modul2,
    	'NAV_INDICATOR_MODUL3' => $nav_indicator_modul3,
    
  • 4. Markierung im Template anwenden
    Nun musst du nur noch in der templates/DEIN_TEMPLATE/overall_header.tpl etwas in der Art einbauen ...

    Code: Alles auswählen

    <div id="nav_main">
      <ul>
        <li {NAV_INDICATOR_INDEX}><a href="index.php">Home</a></li>
        <li {NAV_INDICATOR_MODUL1}><a href="modul_1.php">Modul 1</a></li>
        <li {NAV_INDICATOR_MODUL2}><a href="modul_2.php">Modul 2</a></li>
        <li {NAV_INDICATOR_MODUL3}><a href="modul_3.php">Modul 3</a></li>
      </ul>
    </div> 
    
Viel Spass und Erfolg bei der konkreten Umsetzung :wink:
Manne

Verfasst: 07.10.2007 14:45
von TomW
Danke werde das mal probieren

TomW

Verfasst: 07.10.2007 14:58
von TomW
GENIAL!!!

Danke!!!

TomW