Theme-Erstellung: wp_list_pages, title_li, child_of

  • Hallo zusammen,

    ich möchte mit WP eine Website erstellen und auch das Theme dafür. Erfahrungen mit PHP hatte ich vorher keine, mit WP auch keine.

    Ich möchte Unterpunkte meiner Navigation nicht als Dropdown dargestellt haben, sondern als extra Menü in der linken Spalte (von 3). Hierzu habe ich das child_of-Attribut verwendet, es wird aber nichts angezeigt. Geschrieben habe ich's so:
    <?php wp_list_pages('title_li=<h2>Pages</h2>&child_of=173,176,178'); ?>


    • Auch die Verwendung von title_li ist mir äußerst suspekt... Stimmt das so? Wenn ich's rausnehme ändert sich nichts, liegt also nicht unbedingt daran dass ich nichts sehe.
    • Außerdem stört mich jetzt die Tatsache, dass ich fest auf ganz bestimmte Seiten verdrahte. Wie dynamisiere ich den Aufruf so, dass ich ihn für jeden Link verwenden und auf die Unterseiten des angeklickten Links verweise?


    Danke und Gruß!

    WP 3.4.2 | MAMP 2.1.1 | MBP OSX 10.6.8

    • 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

  • dynamisch geht das mit diesem snippet

    tschüß [size=24][color=olive]n[/color][/size]epf

  • Ich bekomme zwar einen HTML-Output, aber der wird nicht im Browser angezeigt – die linke Spalte bleibt leer.
    Ich habe einfach den obigen Code an die Stelle meines Codes gesetzt. Allerdings liegt der jetzt in einem <ul> Tag.


    • Kann das an den automatisch generierten, mir unbekannten und undefinierten Klassen liegen (.box-right, .box-right-content, .page_item page_item-192 (u.a.), .children, .box-right-bottom)?
    • Muss ich mich beim css an eine WP-Nomenklatur halten? War mir nicht bewusst... ich habe mit dem Layout und css angefangen und munter eigene Namen für .classes und #ids vergeben
      ...oder sind dies nur wp-interne Klassen, die eher interne, administrative denn gestalterische Funktion innehaben sollen?
    • Der Klassenname "page-item page-item-(Zahl)" kommt mir seltsam vor: Darf ein Klassenname Leerzeichen enthalten (zwischen "item page")?
    • Der Output liegt matroschka-mäßig ziemlich tief eingepackt in insgesamt vier YAML-divs und danach innerhalb einer <ul>. Da die automatisch generierte Überschrift normalerweise nicht Bestandteil einer ul ist und der Output eine eigene ul erstellt, ist hier vermutlich einiges doppelt gemoppelt, oder?
    • Wie finde ich heraus, was die einzelnen automatisch generierten Klassen bezwecken? Die Klasse .box-right z.B. irritiert mich in einer linken Spalte
    • Oder habe ich was anderes übersehen?...


    Jetzt paste ich doch mal das Ergebnis hier rein:

    Danke schon mal für alle Anregungen!

    edit: Ich habe nur eine index.php, keine separate page.php, falls dies wichtig ist.

    WP 3.4.2 | MAMP 2.1.1 | MBP OSX 10.6.8

    Einmal editiert, zuletzt von Demjenigen (29. August 2010 um 11:55)

  • Variablen

    Ach so, noch eine Frage:
    Das Snippet enthält einige Variablennamen - sind die bereits von WP vorgegeben und werden entsprechend interpretiert, oder muss ich da noch etwas tun ($notfound, $current_page, $post etc.)?

    Danke!

    WP 3.4.2 | MAMP 2.1.1 | MBP OSX 10.6.8

  • Die CSS-Klassen in meinem Code-Schnipsel kannst Du natürlich komplett rausschmeissen oder ersetzen, die stammen aus meinem Theme.

    Du kannst beim layout selbstdefinierte Klassen einsetzen, ganz normal CSS.

    Die von Wordpress automatisch generierten Klassen wie [COLOR=SeaGreen]class="page_item page-item-200"[/COLOR] kannst Du in den Regel ignorieren. Normalerweise braucht man die nicht, aber irgendwann wirst Du Dich vielleicht mal darüber freuen, dann kannst Du sie einfach benutzen.

    Und die variablen stammen von WP, da musst Du nichts machen.

    tschüß [size=24][color=olive]n[/color][/size]epf

  • Also das ist kurios...

    Mit Hilfe von FireBug kann ich die verschiedenen Areas meiner Menüpunkte sichtbar machen, das Menü selbst bleibt aber unsichtbar. Auch der Mauscursor stellt nicht auf Klickmich um...

    Auch wenn ich natürlich froh bin, eine Fertiglösung geliefert zu bekommen, für mich als PHP-Dummy ist das fürs Verständnis ganz schön kryptisch.
    Was bedeutet "global $notfound"? Muss das hier am Anfang stehen?
    (Hintergedanke natürlich: Hat das vielleicht was mit dem unsichtbaren Menü zu tun...?)

    WP 3.4.2 | MAMP 2.1.1 | MBP OSX 10.6.8

    Einmal editiert, zuletzt von Demjenigen (29. August 2010 um 18:30)

  • Umgang mit verschiedenen Navs

    Hallo nepf,

    falls Du das hier noch verfolgst (oder auch jemand neues):

    das Snippet ist eingebaut, so weit wunderbar - aaaber:

    Es wirkt sich jetzt auch auf meine Topnav aus. Das sollte es nicht. Dort sollte es erst eine Ebene tiefer greifen. Die erste Unterebene sollte hingegen mit einem Dropdown dargestellt werden.
    Also: 1. Ebene Topnav (Bsp. "Produkte"), 2. Ebene: Dropdown-Menü; Klick läd Menüpunke der 3. Ebene als Sidebar. Außerdem auch als Dropdown. Wenn ich direkt im Dropdown der 3. Ebene einen Punkt anklicke, erscheint ebenfalls das Menü in der Sidebar, die angewählte Seite wird aber unmittelbar aufgerufen und in der Sidebar als aktiv dargestellt.

    Wie trenne ich den Aufruf der unterschiedlichen Navs?

    Die Trennung der Navs selbst habe ich übrigens über include/exclude realisiert:
    Die Topnav excludiert die drei Page IDs der Hauptnav, diese wiederum inkludiert nur diese 3.

    Ich hätte noch zwei Nebenschauplätze, die nenne ich nachfolgend, veröffentliche sie aber als eigene Threads und baue danach die Links hier ein:

    • Menüpunkte mehrfach listen - sowohl auf der Hauptebene wie auch in einer Unterebene. Bsp.: Impressum und Kontakt sollen sowohl Bestandteil eines Menüpunktes (unterhalb von Über uns) sein, wie auch als eigene Menüpunkte im Top-Level platziert werden.
    • Hauptseite überspringen / Weiterleiten auf 1. Menüpunkt: Manche Menüpunkte habe keine eigenen Inhalte, sondern dienen lediglich als Überschrift. Wie biegt man die Links so um, dass direkt der erste Unterpunkt aufgerufen wird (oder eben der favorisierte Unterpunkt)?

    Danke und Gruß!

    WP 3.4.2 | MAMP 2.1.1 | MBP OSX 10.6.8

    Einmal editiert, zuletzt von Demjenigen (31. August 2010 um 12:17)

  • Es wirkt sich jetzt auch auf meine Topnav aus. Das sollte es nicht. Dort sollte es erst eine Ebene tiefer greifen. Die erste Unterebene sollte hingegen mit einem Dropdown dargestellt werden.
    Also: 1. Ebene Topnav (Bsp. "Produkte"), 2. Ebene: Dropdown-Menü; Klick läd Menüpunke der 3. Ebene als Sidebar. Außerdem auch als Dropdown. Wenn ich direkt im Dropdown der 3. Ebene einen Punkt anklicke, erscheint ebenfalls das Menü in der Sidebar, die angewählte Seite wird aber unmittelbar aufgerufen und in der Sidebar als aktiv dargestellt.

    Wie trenne ich den Aufruf der unterschiedlichen Navs?

    mmmh, kniffelig, dazu fällt mir leider nichts ein. Die Tiefe eine Navigation kann man ja mit depth einstellen, aber umgekehrt, dass nur Eltern bis zu einer bestimmten Höhe dargestellt werden?
    Keine Idee. Guck Dir noch mal alle Codebeispiele unten auf der seite
    http://codex.wordpress.org/Function_Refer…_pages#Examples
    vielleicht findest du da einen Ansatz.


    Zitat

    Die Trennung der Navs selbst habe ich übrigens über include/exclude realisiert:
    Die Topnav excludiert die drei Page IDs der Hauptnav, diese wiederum inkludiert nur diese 3.

    Das mach ich immer so, dass ich auf der Obersten Ebene nur die seiten Topnav und Hauptnav habe und dann entsprechend Unterseiten hinzufüge, dann kann man zweimal [COLOR=#000000][COLOR=#0000BB]<?php wp_list_pages[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB][/COLOR][COLOR=#007700]); [/COLOR][COLOR=#0000BB]?>[/COLOR] [/COLOR]nehmen und entsprechend den parameter [COLOR=#000000][COLOR=#DD0000]child_of[/COLOR][/COLOR] einstellen, dann wir das ganze dynamisch und du musst nicht mehr manuell ex- und inkluden (was das obige Problem allerdings verschärft)[COLOR=#000000][COLOR=#DD0000][/COLOR][/COLOR]

    tschüß [size=24][color=olive]n[/color][/size]epf

  • Hey, Du bist fix!... ;-)

    Au, der Tipp mit den zwei Seiten ist gut!!
    Hab' eine Weile gebraucht, um zu verstehen was Du meinst.
    Ich brauch eine Pause, ich seh' nix mehr...

    WP 3.4.2 | MAMP 2.1.1 | MBP OSX 10.6.8

    Einmal editiert, zuletzt von Demjenigen (31. August 2010 um 12:38)

  • Gäbe es die Möglichkeit, das Snippet "bedingt" einzusetzen?

    So in die Tulpe gesprochen: Falls Snippet innerhalb eines divs mit Klasse/ID x steht, dann bitte Variante x, falls Snippet in div class="y", dann Szenario y.

    ??

    Bin absoluter Dummy, ich weiß nicht, ob man PHP auf diese Weise unters HTML "unterordnen" kann...

    WP 3.4.2 | MAMP 2.1.1 | MBP OSX 10.6.8


  • Das mach ich immer so, dass ich auf der Obersten Ebene nur die seiten Topnav und Hauptnav habe und dann entsprechend Unterseiten hinzufüge, dann kann man zweimal [COLOR=#000000][COLOR=#0000bb]<?php wp_list_pages[/COLOR][COLOR=#007700]([/COLOR][COLOR=#007700]); [/COLOR][COLOR=#0000bb]?>[/COLOR] [/COLOR]nehmen und entsprechend den parameter [COLOR=#000000][COLOR=#dd0000]child_of[/COLOR][/COLOR] einstellen...

    nepf,

    Könnte man das mit einer if-else-Weiche lösen?
    Angenommen, ich würde Dein System mit den beiden Hauptseiten übernehmen, dann könnte man zwei unterschiedliche "Snippets" erstellen und per "if is_child_of ()" bestimmen, welcher der Codes wie auf welche Hauptseite (und die darunter liegenden Seiten) einwirkt.

    Mein PHP ist scheiße, aber in der Theorie... könnte das so gehen??

    Und wenn ich schon dabei bin: Warum fängt das Snippet oben mit irgendeinem "global" an? Verstehe ich nicht...

    Grüße

    WP 3.4.2 | MAMP 2.1.1 | MBP OSX 10.6.8

  • nee, einfacher:

    PHP
    <?php wp_list_pages('sort_column=menu_order&title_li=&[COLOR=Red]child_of=6[/COLOR]'); ?>

    tschüß [size=24][color=olive]n[/color][/size]epf

  • Nee, Missverständnis (glaube ich).

    Ich grüble immer noch darüber, wie ich Dein Snippet so einsetzen kann, dass es für die Topnavigation die Sidebar-Navigation erst ab dem 2. Unterlevel anzeigt, für die Hauptnavigation aber schon ab dem ersten Unterlevel.

    ...bzw. oder meintest Du das?...

    WP 3.4.2 | MAMP 2.1.1 | MBP OSX 10.6.8

  • ja, Missverständnis.

    Da bin ich nun auch ziemlich ratlos.
    Letzter versuch

    vielleicht könntest Du in der zeile des Snippets

    PHP
    <?php wp_list_pages('sort_column=menu_order&title_li=&child_of='. $parent_id); ?>

    die Topseiten excludieren?

    Würde mich auch interessieren, wenn Du eine Lösung findest.

    tschüß [size=24][color=olive]n[/color][/size]epf

  • Kein 'child_of' in 'wp_nav_menu' ??

    Ich habe mittlerweile die Menüstruktur umgestellt auf WP3 und bewege mich daher in ätherischen 'wp_nav_menü'-Sphären statt im 'wp_list_pages'-Sumpf herumzumorasten – dachte ich.

    Nachdem meine beiden ersten Navis jetzt passen, muss noch die Sidebar ran.

    Und ich stelle fest, dass es für wp_nav_menü gar kein 'child_of'-Attribut gibt?

    Das wäre nicht weiter schlimm, wenn ich nicht bereits von der Möglichkeit Gebrauch gemacht hätte, im WP3-Backend für einen der Menüpunkte einen Aliasnamen zu vergeben. So heißt die Seite "Projekte" in einem der Menüs "Projekte", in einem anderen aber "Programme" – passt dort besser.
    Und darauf nimmt wp_list_pages gar keine Rücksicht.
    Gibt's einen Dreh, wp_list_pages die Abfrage des Aliasses beizubringen?

    Ich glaube, mir ist das jetzt doch zu versteckt. Ich poste das als neues Problem hier.

    WP 3.4.2 | MAMP 2.1.1 | MBP OSX 10.6.8

    Einmal editiert, zuletzt von Demjenigen (23. September 2010 um 22:31)

Jetzt mitmachen!

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