Navigation mit PHP

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von alexkiener, 16.06.2005.

  1. alexkiener

    alexkiener Thread Starter MacUser Mitglied

    Beiträge:
    21
    Zustimmungen:
    0
    MacUser seit:
    18.05.2005
    Hi Leute,

    hab folgendes Problem.

    Ich habe eine Navigation mit 7 Kategorien, die CSS basiert sind.
    Das heisst, jede kategorie hat ein BG image, und wenn man mit der Maus drüber fährt ändert sich das IMG. Das hab ich mit klassen in der css so definiert. Nun möchte ich aber ein active zustand definieren, der wieder ein anderes Bild in den Hintergrund legt... geht mit CSS ja nicht wie ich in einem Thread gelesen habe.

    Da man aber seine css datei auch als php speichern kann.. zb. style.css wird zu style.php und er interpretiert die anweisungen genau so... hat aber den entscheidenden vorteil, das ich nun auch eine php abfrage in die style.php schreiben kann womit ich dann den einzelnen kategorien per php abfrage den active zustand geben kann mit nem anderen Image.

    Nun die Frage: Wie geht das ? :)

    wie muss so eine PHP abfrage aussehen...

    gruß und Danke,

    Alex
     
  2. dms

    dms Gast

    In der CSS-Datei macht eine Abfrage eigentlich keinen Sinn, wenn ich Dich richtig verstanden habe. Ausserdem würde damit ein grosser Vorteil von CSS verloren gehen, nämlich dass das komplette Design nur einmal geladen werden muss. Wenn die Style-Definitionen sich bei jedem Seitenaufruf ändern muss die Datei auch jedesmal angefordert werden.

    Die einfachste Möglichkeit ist es das Menü dynamisch zu machen und je nach Zustand eine andere Klasse zuzuweisen.

    So in der Art:
    Code:
    if($this->href==$url)
       $this->class="active";
    else
       $this->class="normal";
     
  3. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.045
    Zustimmungen:
    1.318
    MacUser seit:
    13.09.2004
    alexkiener:
    Sorry, da ist PHP das falsche Werkzeug! PHP erstellt ja nur HTML-Code ( der nat auch CSS enthalten kann) und schicktd as zum Client. Dort kommt nie PHP an. Somit laufen auch keine PHP-Programme beim Client. PHP läuft nur Serverseitig. Von Mouse-Aktionen der User bekommt es nichts mit. Da ist Javascript das Mittel der Wahl.

    Für die Gestaltung xhtml/css
    Für dynamischen Content PHP
    Für Client-Aktionen (Events wie OnMouseOver,...) Javascript

    Nat. kannst Du das alles in eine PHP-Datei packen, die printed dann quasi Deine Webseite mit dem Javascript-Code für die Events und mixed das ganze mit dem Content und Deiner CSS-Datei.
     
  4. msslovi0

    msslovi0 MacUser Mitglied

    Beiträge:
    2.713
    Zustimmungen:
    115
    MacUser seit:
    20.03.2005
    Gewisse Events bei mouseOver lassen sich auch über die css-Pseudoklasse :hover abfackeln. Und um den aktuell ausgewählten Navigationspunkt wieder mit einer anderen Formatierung zu versehen kann man es genau so machen, wie dms schon geschrieben hat.

    Javascript ist dafür mehr als unnötig.

    Matt
     
  5. Jakob

    Jakob MacUser Mitglied

    Beiträge:
    1.067
    Zustimmungen:
    21
    MacUser seit:
    05.01.2004
    Da war doch mal ein Artikel bei alistapart… Aja… hier!. Schlägt im Grunde sowas wie dms vor aber veranschaulicht es halt noch nen bisschen. Die Ausführung finde ich nicht ganz so gelungen, aber wenn Du den Artikel gelesen hast, kannst Du's besser.

    JavaScript und damit das Ein- und Auslesen von Cookies, in welchem Bereich man ist, ist nur nötig, falls Du keine PHP-Dateien erstellen kannst. Hatte mal das Problem mit einem Kunden, der das mit seinem Programm bearbeiten wollte und das/er nix mit PHP anfangen konnte. Aber nur Notlösung.
     
    Zuletzt bearbeitet: 16.06.2005
  6. wegus

    wegus MacUser Mitglied

    Beiträge:
    15.045
    Zustimmungen:
    1.318
    MacUser seit:
    13.09.2004
    @Matt&Jakob: Hey das ist mir neu :D das muß ich mir in ner ruhigen Minute mal angucken! Danke!!!

    Gruß Karsten
     
  7. Jakob

    Jakob MacUser Mitglied

    Beiträge:
    1.067
    Zustimmungen:
    21
    MacUser seit:
    05.01.2004
    Ist im Grunde nix großes.
    Ich hab viele meiner Seiten mit header und footer.php,
    der Quelltext sieht dann so aus:

    PHP:
    $kategorie="Unternehmen";
    $titel="Über uns";
    include(
    "header.php"); ?>
    <p>Bla text…
    Im header, wo auch das Menü drin steht kannst Du dann einfach abfragen, welche Kategorie es ist und die jeweilige Aktion dann ablaufen lassen.
     
  8. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    Das überrascht mich, da man andere "Eigenschaften" von Links (z. B. Hintergrundfarbe, Schriftgröße etc.) durchaus auch für den Zustand "active" steuern kann.
    Wichtig ist dabei allerdings die Reihenfolge der Definition in der CSS Datei (Eselsbrücke: love-hate).
    Mit BG-Images habe ich das noch nicht getestet, mit anderen Eigenschaften funktioniert es tadellos.
     
  9. dms

    dms Gast

    Die Pseudoklasse :active gillt jedoch nur solange kein Seitenwechsel geschieht. Ist also nur bei einer Navigation innerhalb eines Framesets zu gebrauchen.
     
  10. Jakob

    Jakob MacUser Mitglied

    Beiträge:
    1.067
    Zustimmungen:
    21
    MacUser seit:
    05.01.2004
    Und das auch nur auf DOSen, oder? Bei mir bleibt der :active state nur, solang die Maus draufklickt.
     
Die Seite wird geladen...

Diese Seite empfehlen