Wenn aufruf dieser Seite = li-klasse-veränderung

  • Ok,
    Titel vom Thema ist toal Nichtsaussagend, aber ich wusst's grad nicht besser zu sagen..

    Hallo erstmal und schöne Feiertage =)

    Was ich vorhabe ist folgendes.
    Ich habe eine Navigation.
    Beim hover verändert sich der Link.
    Wenn ich auf einen der Navipunkte gehe will ich, dass die Seite dann in der Navigation hervorgehoben wird.
    Dazu muss ich dem Listenpunkt ja ne neue class geben.

    Was ich nur grad wissen müsste, wäre - wie der dazugehörige php-code aussieht =)

    Würd mich freuen, wenn mir wer weiterhelfen kann =)


    // und ja, gesucht hab ich, nur bin net so richtig fündig geworden... ;) ^^

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Ok, das Problem hab ich soweit in Griff bekommen.
    Ich habe nun in einer if-Anweisung drinne:

    <?php if ( is_page('unterseite')) { ?>
    Hier ist meine neue Navigation hinterlegt!
    <?php } ?>

    So, mein Problem ist jetz nur, dass wenn ich auf der Hauptseite bin und keine Unterseite angewählt habe, dann wird mir Mal direkt garkeine Seite angezeigt.^^
    Wie kann ich'n das beheben?

  • Vielleicht hab ich Dich jetzt falsch verstanden - Aber "aktive" Seiten und/oder "Kategorien" markieren, kann WordPress ohne zusätzliche Bearbeitung.

    - Ein Listenpunkt einer Seite (egal ob aktiv oder nicht aktiv) hat die Klasse "page_item"
    - Ein Listenpunkt einer aktiven Seite hat zusätzlich die Klasse "current_page_item"

    Neu ab WordPress 2.1:

    - Nicht-aktive Seiten, die eine aktive unter-Seite haben, haben zusätzlich die Klasse "current_page_parent".

  • Ja, ich hab's oben ein wenig anders erklärt, als ich überhaupt will.
    Es soll dann nämlich nicht nur ein spezieller Listenpunkt aktiviert sein, sondern es soll sich auch der Text im Listenpunkt ändern.

  • Wie soll sich der Text denn ändern?

    Also soll der Linktext ein anderer werden? Oder soll unter "aktiven" Menüpunkten gleich ein ganzes neues Menü angezeigt werden? Also eine "aufklappende" Navigation?

    Für letzteres kannst Du z.B. das PlugIn "SideBar Page Switcher" benutzen ...

  • Der Linktext ändert sich.

    Wie gesagt, es klappt ja bisher auch alles genau so, wie ich es mir vorstelle.
    Wenn eine Unterseite gewählt wird (die ganzen Unterseiten werden halt vorher in dem oben steheneden Code bestimmt), dann kommt halt eine andere Navigation.

    Mein Problem ist halt nur, dass wenn ich meine Seite aufrufe und noch keine Unterseite angeklickt habe (mich also auf der Hauptseite befinde), dann wird mir garkeine Navigation angezeigt, weil ich leider nicht weiß, wie ich das angeben kann.

  • Ob man sich gerade auf der "Hauptseite" befindet, kann man grundsätzlich abfragen mit:

    PHP
    <?php if (is_home()) { ?>
    <!-- hier das reinschreiben, was dann angezeigt werden soll -->
    <?php } ?>

    Klappt aber nicht immer: Wenn Du z.B. eine statische Seite als Startseite festgelegt hast, kann's gut sein, dass diese Bedingung bei Dir nicht (oder nicht immer) greift. WordPress 2.1 hat ja schon die Möglichkeit eingebaut, beim ersten Seiten-Aufruf eine "Page" anzuzeigen.

    Wordpress < 2.1 kann das noch nicht - Da gibt's unterschiedliche PlugIns ... Bei denen greift is_home() nur wirklich beim ersten Aufruf des Blogs. Wenn man aber weitersurft und dann wieder den Menüpunkt "Startseite" anklickt, trifft is_home() nicht mehr zu.

    Du kannst Dir also entweder die ID deiner Startseite merken und sie einbauen:

    PHP
    <?php if (is_home()||is_page('123') ){ ?>
    <!-- Das hier wird nur auf der Startseite angezeigt -->
    <?php } ?>

    oder aber den "Page-Slug":

    PHP
    <?php if (is_home()||is_page('willkommen-in-meinem-blog')) { ?>
    <!-- Das hier wird nur auf der Startseite angezeigt -->
    <?php } ?>

    oder direkt den "Seiten-Titel" (Ist nur schwierig, wenn Du Umlaute oder Sonderzeichen in der Überschrift hast):

    PHP
    <?php if (is_home()||is_page('Willkommen in meinem Blog')) { ?>
    <!-- Das hier wird nur auf der Startseite angezeigt -->
    <?php } ?>
  • Danke, das klappt nun auch soweit alles. =)
    Jetz hab ich nur noch eine Frage:
    Ich arbeite mit dem Page-Slag und gebe so halt die unterseiten an, bei denen was passieren soll.

    <?php if (is_page('unterseite_1')) { ?>

    Wie aber kann ich mehrere Unterseiten in dem Code-Schnipsel angeben?
    Ich hab das ganze mit Kommatrennung ('unterseite_1', 'unterseite_2') versucht, nur das hat nicht geklappt.

    Hast du dafür auch noch einen Tip?
    Danke dir aufjedenfall für die umfangreiche Hilfe!

  • Ich wollte nur Mal nochmal kurz auf den Thread aufmerksam machen =)
    Wie gesagt, es besteht nun nur noch das Problem, was ich im letzten Beitrag beschrieben habe.
    Würde mich freuen, wenn ihr mir damit auch noch helfen könntet.

  • Du musst das dann jeweils in einen eigene Bedingung packen:

    PHP
    <?php if (is_home()||is_page('123')||is_page('124')||is_page('125')) { ?>
    <!-- trallala -->
    <?php } ?>

    Bloß ich hab das Gefühl, Du machst Dir grad etwas viel komplizierter, als es eigentlich sein müsste. Ist nicht so praktisch, sich sein Theme mit lauter Bedinungen vollzupacken ... Da werden dann inhaltliche Änderungen etwas nervig, weil man damit auch gleich wieder an seine PHP-Dateien muss.

    Man kann z.B. auch abfragen, welche Seite die "Mutterseite" der gerade aktiven Seite ist.

    Die Variable $posts ist global verfügbar. Wenn Du auf einer Seite bist, ist sie mit den Daten der aktuellen Seite gefüllt.

    $posts[0]->ID gibt die ID der aktuellen Seite zurück
    $posts[0]->post_parent gibt die ID der Mutterseite zurück.

    Das heißt also, wenn irgendetwas nur dann passieren soll, wenn die Seite einer bestimmten "Mutterseite" zugeordnet oder die "Mutterseite" selbst ist, kannst Du z.B. schreiben:

    PHP
    <?php if (($posts[0]->post_parent == 123)||($posts[0]->ID == 123)) { ?>
    <!-- 
    Das hier wird nur bei Seite 123 
    und allen untergeordneten Seiten
    angezeigt
    -->
    <?php } ?>

    Nein, das ist keine Brille, das sind Augenränder!

    Print- und Webdesign

    Einmal editiert, zuletzt von pufaxx (7. April 2007 um 16:12)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!