• Hallo Zusammen,

    ich versuche gerade in meinen Menü ein class=active einzusetzen.

    PHP
    <div class="span7 navigation">            <div class="navbar hidden-phone">            <ul class="nav">            <li <?php if (substr($_SERVER['REQUEST_URI'],0,-1) == 'http://localhost/site2/index') { echo ("class="active""); } ?> ><a href="./index">Startseite </a></li>           <li <?php if (substr($_SERVER['REQUEST_URI'],0,15) == 'site2/ueber-uns') { echo ("class="active""); } ?> ><a href="./ueber-uns">Über Uns</a></li>            <li <?php if (preg_match("#/leistungen#", $_SERVER['REQUEST_URI']) ) { echo $_SERVER['REQUEST_URI']; } ?> class="dropdown">               <a class="dropdown-toggle" data-toggle="dropdown" onclick="self.location.href='./leistungen'" style="cursor: pointer;">Leistungen<b class="caret"></b></a>                <ul class="dropdown-menu">                    <li><a href="./leistungen/krankengymnastik">Krankengymnastik</a></li>                    <li><a href="./leistungen/manuelle-therapie">Manuelle Therapie</a></li>                    <li><a href="./leistungen/bobath">Therapie nach Bobath</a></li>                    <li><a href="./leistungen/manuelle-lymphdrainage">Manuelle Lymphdrainage</a></li>                    <li><a href="./leistungen/sportphysiotherapie">Sportphysiotherapie</a></li>                    <li><a href="./leistungen/massage">Massage</a></li>                    <li><a href="./leistungen/wellness">Wellness</a></li>                    <li><a href="./leistungen/hausbesuche">Hausbesuche</a></li>                </ul>            </li>             <li <?php if (preg_match("#./unsere-praxis#", $_SERVER['REQUEST_URI']) ) { echo ("class="active""); } ?> ><a href="./unsere-praxis">Unsere Praxis </a></li>             <li class="dropdown" <?php if (preg_match("#./unser-team#", $_SERVER['REQUEST_URI']) ) { echo ("class="active""); } ?> >                <a class="dropdown-toggle" data-toggle="dropdown" onclick="self.location.href='./unser-team'" style="cursor: pointer;">Unser Team <b class="caret"></b></a>                <ul class="dropdown-menu">                    <li <?php if (preg_match("#./unser-team/sebastien-fournereau#", $_SERVER['REQUEST_URI']) ) { echo ("class="active""); } ?> ><a href="./unser-team/sebastien-fournereau">Sébastien Fournereau</a></li>                    <li><a href="./unser-team/fikreta-crnkic">Fikreta Crnkic'</a></li>                </ul>             </li>             <li <?php if (preg_match("#./kontakt#", $_SERVER['REQUEST_URI']) ) { echo ("class="active""); } ?> ><a href="./kontakt">Kontakt</a></li>            </ul>            </div>


    Ich habe es mit preg_match gut inbekommen aber ich habe gelesen das es mit substr($_SERVER['REQUEST_URI'],0,-1 besser wäre, leider bekomme ich es nicht hin...
    Ich habe es auch nicht hinbekommen das meine class=active auf Leistungen kommt wenn mann auf der Seite Massage geht (z.B.)

    Kann mir jemanden weiterhelfen?

    Vielen Dank.

  • was konkret verstehste denn nicht?
    soweit ich weiß gibt der request_uri nur die url ohne protokoll und ohne domain.
    also müsste die abfrage so aussehen: (ungetestet)

    PHP
    <?php
         echo '<li'.(substr($_SERVER['REQUEST_URI'],0,-1) == '/site2/index' ? : ' class="active"' : null).'><a href="#">meinnavipunkt</a></li>';
    ?>
  • Das Problem ist das meinen Class nicht active wird.

    Ich habe es mal deinen versuch probiert, bekomme aber folgende antwort:

    Parse error: syntax error, unexpected ':' in C:\xampp\htdocs\site2\header.inc.php on line 18

  • Habs gemacht (ganz oben) aber die class active reagiert nicht...

  • dann haste irgendwo nen anderen knackser drin..
    wenn ich deinen code hernehme wird mir bei dem ersten LI die class active gesetzt.
    schieb ma nen link rüber wo es nicht geht..

  • ja wenn du es net uploadest wirds helfen zu ner raterunde..

    wie sieht deine url aus, mit der du das script aufrufst?
    woran machst du fest, dass deine li nich die class active bekommen?
    biste sicher, dass die li des active brauchen und nicht etwa die links?

    mach doch mal nen print_r(substr($_SERVER['REQUEST_URI'],0,-1)) oder nen var_dump(substr($_SERVER['REQUEST_URI'],0,-1)) auf die werte, die du da vergleichen willst.

    oder ohne das substr und erstma nur auf $_SERVER['REQUEST_URI']

  • na da is ja noch n bissi was im argen..
    zum einen nimm mal die script-tags aus deiner map.js.... in einer js-datei brauchste kein script-tag mehr.
    und viel wichtiger als das mit dem js...
    haste mal die debugausgaben gemacht?
    mach mal bitte unter die navi oder im content jeder seite den output von dieser anweisung hier:

    PHP
    print_r(substr($_SERVER['REQUEST_URI'],0,-1)) .'<br >';
    print_r($_SERVER['REQUEST_URI']);


    oder ohne das substr und erstma nur auf

  • siehste und da haben wir doch schon den übel-täter :)

    PHP
    print_r(substr($_SERVER['REQUEST_URI'],0,-1))


    ergibt : /ueber-uns.ph

    PHP
    print_r($_SERVER['REQUEST_URI']);


    ergibt: /ueber-uns.php

    also kannst du daraus folgern, dass du bei funktionierender htaccess aus dem über-uns ein über-un machst.
    des mit dem substring brauchste nur machen, wenn du einen slash am ende der adresse hast. (was aber bei dir nicht der fall ist soweit ich mich erinnere.
    mit der htaccess kannste aber auch erwirken, dass ein slash am ende einfach nen rewrite macht ohne slash und da kannste dann wieder abfragen auf $_SERVER['REQUEST_URI'] == 'dein pfad'

  • Ich habe es jetzt so gemacht.
    Geht leider trotzdem nicht...
    Und ich habe noch nicht verstanden wie ich es mit meine Dropdown machen kann...

  • Wenn es statische Seiten sind, dann könnte es doch ausreichen, wenn du auf jeder Seite im head-Bereich eine CSS-Anweisung schreibst.

    Code
    <style>
    /* Beispiel für Home */
    #navi li:nth-child(1) a {
     background:#09c;
    }
    </style>

    Oder eben doch mit preg_match
    http://www.gipspferd.de/css/anleitung/a4/a4.php
    Hier noch eine Variante mit PHP ohne preg_match.
    http://www.gipspferd.de/forumhilfe/include-navigation-2/

    @edit Die CSS-Variante ist mit nth-child ist für eine verschachtelte Liste doch sehr aufwendig..

    7 Mal editiert, zuletzt von djheke (21. Mai 2015 um 11:02)

  • Was meinst Du? Ach, ja deine Klassen kannst du benennen wie du willst.

    Wenn es dir nur um den aktuellen Link geht, musst du nicht jedes Listelement abfragen. Zur Not geht es auch mit CSS(Nachfahr Selektor).

    2 Mal editiert, zuletzt von djheke (22. Mai 2015 um 20:47)