Navigation - Auswahl hervorheben

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
TomW
Mitglied
Beiträge: 351
Registriert: 02.05.2002 22:55
Wohnort: Eichelsee
Kontaktdaten:

Navigation - Auswahl hervorheben

Beitrag 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
Computerprobleme??? -> http://www.weber-computerhilfe.de
Benutzeravatar
mad-manne
Ehemaliges Teammitglied
Beiträge: 5403
Registriert: 18.03.2005 10:00
Wohnort: Marl im Ruhrgebiet

Beitrag 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
Try not. Do or do not. There is no try. (YODA)
Supportanfragen via E-Mail oder PN werden ignoriert
TomW
Mitglied
Beiträge: 351
Registriert: 02.05.2002 22:55
Wohnort: Eichelsee
Kontaktdaten:

Beitrag von TomW »

Danke werde das mal probieren

TomW
Computerprobleme??? -> http://www.weber-computerhilfe.de
TomW
Mitglied
Beiträge: 351
Registriert: 02.05.2002 22:55
Wohnort: Eichelsee
Kontaktdaten:

Beitrag von TomW »

GENIAL!!!

Danke!!!

TomW
Computerprobleme??? -> http://www.weber-computerhilfe.de
Antworten

Zurück zu „Coding & Technik“