[PHP] class="active" - Navigation | Variable setzen

Dieses Thema im Forum "Webentwicklung" wurde erstellt von thug-life, 9. August 2010 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 9. August 2010
    class="active" - Navigation | Variable setzen

    Hallo ihr lieben,
    ich möchte in meine kleine Navigation den Effekt einbauen, dass der
    Aktive Bereich hervorgehoben wird.
    Dies passiert mit dem Attribut: class=active in einer CSS, was auch funktioniert.
    Die Startseite wird hevorgehoben, jedoch weiß ich nun nicht genau wie ich
    das nun vollende, sodass wenn man den Link anklickt und in neuem Bereich ist,
    dieser hervorgehoben wird.

    Ich habe folgendes in der navi.php stehen bis jetzt, nur wie erwähnt hebt er nur
    Standort hervor.

    Code:
    <?php $current = "Startseite" ?>
    
    <li><a href='index.php' <?php if($current=='Startseite') echo 'class="active"'; ?>>Startseite</a></li>
    <li><a href='standort.php' <?php if($current=='Standort') echo 'class="active'; $current="Standort" ?>>Standort</a></li>
    <li><a href='preise.php' <?php if($current=='Ausbildung') echo 'class="active"'; $current="Preise" ?>>Preise</a></li>
    Ich hoffe ihr könnt mir da helfen.

    grezzes: thug-life
     
  2. 9. August 2010
    AW: class="active" - Navigation | Variable setzen

    Prüf doch mit

    PHP:
    if( strstr ( $_SERVER [ 'PHP_SELF' ],  'standort.php' )) { ... }
    ob standort.php (bsp.) aufgerufen wurde und setz dann entsprechend die active-Klasse.
     
  3. 9. August 2010
    AW: class="active" - Navigation | Variable setzen


    Das er nur die Startseite als Aktiv makiert ist ja klar. Du definierst $current ja mit 'Startseite'

    Ich würd es ähnlich wie furious1 machen nur würde ich mir in $current den Seitennamen schreiben lassen, dann hast du nicht tausendmal die lange if-Abfrage.

    Also:



    Spoiler
    Code:
    <?php $current = basename($_SERVER['PHP_SELF']);?>
    
    <li><a href='index.php' <?php if($current=='Startseite') echo 'class="active"'; ?>>Startseite</a></li>
    <li><a href='standort.php' <?php if($current=='Standort') echo 'class="active'; $current="Standort" ?>>Standort</a></li>
    <li><a href='preise.php' <?php if($current=='Ausbildung') echo 'class="active"'; $current="Preise" ?>>Preise</a></li>

    Entweder du machst jetzt eine switchabfrage. Sprich wenn die Seite index.php lautet, definierst du $current und sagst das ist 'Startseite' oder du änderst deine if Abfrage um.
     
  4. 9. August 2010
    AW: class="active" - Navigation | Variable setzen

    Du kannst natürlich auch davon ausgehen, dass die User JavaScript aktiviert haben und dann aus der URL die aufgerufene Seite auslesen lassen und das passende Menü-Item die active Klasse verpassen..

    Ansonste musst du das halt so machen wie hacker5 schon sagte..
    Du definierst $current in jeder Datei neu..
    Sprich in contact.php schreibst du contact rein, in preise.php preise etc.

    Dann funktioniert auch deine Abfrage..
     
  5. 9. August 2010
    AW: class="active" - Navigation | Variable setzen

    packe die ganzen navilinks in ein array und verarbeite diese:
    PHP:
    <? php
    // daten array
    $navi  = array(
    'index.php'  =>  'Startseite' ,
    'standort.php'  =>  'Standort' ,
    'preise.php'  =>  'Ausbildung'
    );
    // aktuelle datei
    $datei  basename ( $_SERVER [ 'PHP_SELF' ]);
    // navi ausgeben
    foreach( $navi  as  $file  =>  $name )
    {
    $class  = ( $file  ===  $datei )? 'aktiv' : 'normal' ;
    echo 
    '<a href="' . $file . '" class="' . $class . '">' . $name . '</a>' ;
    }
    ?>
    müsste soweit funktionieren, und man spart sich die ganzen ifs
     
  6. 10. August 2010
    AW: class="active" - Navigation | Variable setzen

    Leider klappt es nicht, er gibt die Navi ohne Hervorgebungen aus.
    Habe per google solche Lösung gefunden, welche jedoch auch nicht funktioniert.

    PHP:
    <li><a href="index.php?current=Startseite <?php $current  $_GET [ 'Startseite' ];  ?> <?php  if( $current == 'Startseite' ) echo  'class="active"' ?> ">Startseite</a></li>
    wenn ich ein:
    PHP:
    <? php  echo  " $current " ?>
    mache spuckt er auch nichts raus, hat da jemand noch eine Idee ?
    - Danke.

    greezes: thug-life
     
  7. 10. August 2010
    AW: class="active" - Navigation | Variable setzen

    du mußt mit $_GET die variable abfragen

    PHP:
    <? php  echo  $_GET [ 'current' ];  ?> 
     
  8. 10. August 2010
    AW: class="active" - Navigation | Variable setzen

    Ah, thx, nun gibt er mir die übergebene "Variable" im Link aus, ist schon mal nen Schritt nach
    vorne, mal schaun, ob ich nun noch den Fehler, warum er:

    class="active"

    nicht setzt, da es immer noch nicht hervorgehoben wird.

    greezes: thug-life
     
  9. 10. August 2010
    AW: class="active" - Navigation | Variable setzen

    PHP:

    $navi 
    = array(
    'Startseite'  =>  'index.php'
    'Standort' 
    =>  'standort.php'
    );

    echo 
    $navi [ $_GET [ 'current' ]];

    foreach(
    $navi  as  $name  =>  $file ) {
    $class  = ( $name  ===  $_GET [ 'current' ])? 'aktiv' : 'normal' ;
    echo 
    '<a href="' . $file . '" class="' . $class . '">' . $name . '</a>' ;
    }

    ungetestet
     
  10. 10. August 2010
    AW: class="active" - Navigation | Variable setzen

    Leider auch nicht, hebt immer noch nicht vor ...
    Habe noch die "kommas" am Ende von: 'Startseite'=> 'index.php' gesetzt.
    Aber daran lag es nicht.

    Hm, warum nimmt der nicht das class="active" nicht an ?

    greezes: thug-life
     
  11. 10. August 2010
    AW: class="active" - Navigation | Variable setzen

    woher soll er wissen was $_GET['current'] sein soll?

    das fehlt in der foreach-schleife nämlich.

    PHP:
    <? php

    $navi 
    = array(
        
    'Startseite'  =>  'index.php' ,
        
    'Standort'    =>  'standort.php'
    );

    echo 
    $navi [ $_GET [ 'current' ]];

    foreach(
    $navi  as  $name  =>  $file ) {
        
    $class  = empty( $_GET [ 'current' ]) 
            ? (
    $file  ===  'index.php'  'aktiv'  'normal' )
            : (
    $_GET [ 'current' ] ==  $name  'aktiv'  'normal' );
            
        echo 
    '<a href="' . $file . '?current='  $name  '" class="' . $class . '">' . $name . '</a>' ;
    }  
     
  12. 10. August 2010
    AW: class="active" - Navigation | Variable setzen

    PHP:
    $navi  = array(
        
    'Startseite'  =>  'index.php' ,
        
    'Standort'    =>  'standort.php'
    );

    echo 
    $navi [ $_GET [ 'current' ]];

    foreach(
    $navi  as  $name  =>  $file ) {
        
    $class  = empty( $_GET [ 'current' ]) 
            ? (
    $file  ===  'index.php'  'active'  'prop' )
            : (
    $_GET [ 'current' ] ==  $name  'active'  'prop' );
            
        echo 
    '<li><a href="' . $file . '?current='  $name  '" class="' . $class . '">' . $name . '</a></li>' ;

    ?>
    Leider verschwinden nun die ganze Navi einfach ... sprich er kommt garnicht bis zur Zeile:

    echo '<li><a href="'.$file.'?current=' . $name . '" class="'.$class.'">'.$name.'</a></li>';

    Jedoch blicke ich da nicht mehr so richtig durch, wäre nett wenn einer von euch nochmals
    drüber gucken würde, vielen Danke !

    greezes: thug-life
     
  13. 10. August 2010
    AW: class="active" - Navigation | Variable setzen

    es funktioniert nicht weil du es nicht richtig anwendest. Ersten beitrag kopieren und unter navi.php abspeichern. Dannach in jeder datei also index.php, preise.php ganz oben mit include navi.php einbinden. Entscheide dich für eine lösug. Entweder mit basename(phpself) oder per $_get.
     
  14. 10. August 2010
    AW: class="active" - Navigation | Variable setzen

    Hatte nen kleinen Fehler in der Syntax nun funktioniert es wie es, murdoc geschrieben hat,
    - vielen Danke !

    grezzes: thug-life

    //close
    // bewertungen verteilt
     
  15. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.