2 Quick Tipps: Navigation der statischen Seiten aufteilen

Subpages oder Child Pages nur anzeigen, wenn auch welche da sind
Subpages oder Child Pages nur anzeigen, wenn auch welche da sind

So hie und da mag man die Anzeige der statischen Seiten aufteilen. Oben die „Parent“ Seiten, in einer Sidebar die „Kinder“ Seiten auch Subpages genannt. Hier einfach die „Codeschnippsel“ wie ich das nenne, um dies zu bewerkstelligen:

Subpages nur anzeigen, wenn auch welche da sind.

Zeige nur dann Unterseiten, wenn auch welche da sind.

<?php if(wp_list_pages("child_of=".$post->ID."&echo=0")) { ?>
 <ul>
 <?php wp_list_pages("title_li=&child_of=".$post->ID."&sort_column=menu_order&show_date=modified&date_format=$date_format");?> 
 </ul>
<?php } ?> 

Subpages anzeigen, auch wenn man auf eine Subpage geklickt hat

Zeige Unterseiten auch dann an, wenn man auf eine Unterseite geklickt hat.

<?php
if($post->post_parent)
$children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0"); else
$children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0");
if ($children) { ?>
<ul>
<?php echo $children; ?>
</ul>
<?php } ?>

Widgets in der Sidebar

Wer Widgets in der Sidebar nutzt muss dafür ein Textwidget nutzen und braucht ein Plugin, das das Widget mit PHP erlaubt. Aber Achtung diese Plugins stellen für den unbedarften Nutzer eine Gefahr dar!

Artikelhistorie:
Erstveröffentlichung: 16. Februar 2008
Code und Plugin kontrolliert am 24. 10. 2014

……… und das Weitersagen ist ausdrücklichst erlaubt;)
21

21 Beiträge zu “2 Quick Tipps: Navigation der statischen Seiten aufteilen

  1. Ping 16 best practise Tipps: statische Seiten in WordPress

  2. Kommentar Autor
    steven
    Kommentar

    HI eine Frage ;o
    Wie bekomm ich es hin das als erster Link die Parent Page der Sub Pages angezeigt wird?
    Lg
    Steven

  3. Kommentar Autor
    Monika
    Kommentar

    dazu nutzt du einfach normal wp_list_pages das tut dies ganz einfach so

  4. Kommentar Autor
    steven
    Kommentar

    das ging ja mal schnell ;)
    aber ich glaub ich hab mich falsch ausgedrückt wp_list_page würde doch jede Seite die ich angelegt habe Ausgeben oder nicht?

    Ich möchte das das Script es so Ausgibt

    |Parentpage
    |-Childpage
    |-Childpage
    |-Childpage

    und nicht das mir alle Seiten die mein Blog hat ausgegeben werden.

    Im moment Gibt es ja nur
    |
    |-Childpage
    |-Childpage
    |-Childpage
    |-Childpage aus.

  5. Kommentar Autor
    Monika
    Kommentar

    dann exclude (suche hier auf Texto nach wp_list_pages) die Eltern-Seiten, die da nicht erscheinen sollen.

    lg

  6. Kommentar Autor
    fredellini
    Kommentar

    hallo wie sieht das eigentlich in der navigationsleiste aus.
    ich möchte das wordpress schlicht und ergreifend automatisch alle unterseiten ausklappt (und nicht erst wenn man drüberhoovert).

    hier ist das theme: wp-themes.com/autumn-leaves

    ich habe schon einige foren druchkämmt, aber niemand konnte mir helfen.

    ratloser fredellini

  7. Kommentar Autor
    Monika
    Kommentar

    hi ratloser ;)
    ich nehm an, das Theme hat die Navi in der header.php dort einfach den vorhandenen Code mit wp_list_pages ( title=li&depth=1 oder 2 oder 4 angeben

    der Rest ist CSS
    wie man dies genau schreibt findest Du hier ,wenn du nach wp_list_pages suchst

    lg

  8. Kommentar Autor
    fredellini
    Kommentar

    hallo texto,

    in der header.php gibt es kein wp_list_pages. ist das verwirrend?

    ich habe aber herausgefunden, dass für das navimenü folgender codeschnippsel in der header.php verantwortlich ist:

    in der function.php findet sich dazu:
    // Produces a list of pages in the header without whitespace
    function sandbox_globalnav() {
    if ( $menu = str_replace( array( „r“, „n“, „t“ ), “, wp_list_pages(‚title_li=&sort_column=menu_order&echo=0‘) ) )
    $menu = “ . $menu . “;
    $menu = “ . $menu . „n“;
    echo apply_filters( ‚globalnav_menu‘, $menu ); // Filter to override default globalnav: globalnav_menu
    }

    das theme basiert auf einen theme namens sandbox:

    ich habe nun den wp_list_pages-teil, so geändert:
    if ( $menu = str_replace( array( „r“, „n“, „t“ ), “, wp_list_pages(‚title_li=&sort_column=menu_order&echo=0&depth=2‘) ) )

    nix ist passiert. wie geht es richtig?
    besten gruß

  9. Kommentar Autor
    fredellini
    Kommentar

    der codeschnippsel in der header.php heißt:

    kann es sein das „depth=x“ nur dafür da ist, wieviele seiten ausgeklappt werden, wenn man mit dem mauszeiger draufsteht und nicht, wieviele statisch immmer angezeigt werden? jedenfalls bewirkt es dies in meinem theme…

  10. Kommentar Autor
    fredellini
    Kommentar

    komisch code in header.php ohne klammern:
    div id=“access“
    ?php sandbox_globalnav() ?
    /div><!– #access —

  11. Kommentar Autor
    fredellini
    Kommentar

    // Produces a list of pages in the header without whitespace
    hallo texto,

    ein eintrag ist nicht im forum angekommen:

    ich habe in der functions.php den navicode gefunden:

    function sandbox_globalnav() {
    if ( $menu = str_replace( array( “\r”, “\n”, “\t” ), ”, wp_list_pages(’title_li=&sort_column=menu_order&echo=0′) ) )
    $menu = ” . $menu . ”;
    $menu = ” . $menu . “\n”;
    echo apply_filters( ‘globalnav_menu’, $menu ); // Filter to override default globalnav: globalnav_menu
    }

    leider ändert das hinzufügen von „depth=2“ nicht das statische anzeigeverhalten.

    gruß fredellini

  12. Kommentar Autor
    Monika
    Kommentar

    dann lösch das sandbox_globalnav und schreibe den Originalcode einfach rein ;)

  13. Kommentar Autor
    fredellini
    Kommentar

    hab ich versucht, kein erfolg. im gegenteil wenn ich
    [div id=“access“]
    [?php wp_list_pages(’title_li=&sort_column=menu_order&echo=0′) ?]
    [/div><!– #access –]
    schreibe, kommt Parse error: parse error in E:\Software\xampp\htdocs\wordpress\wp-content\themes\autumn\header.php on line 22

    langsam erreichen meine nerven ihre belastungsgrenze. seit einer geschlagenen woche google ich mich 5h täglich durch sämtliche foren und nichts hilft. so langsam denke ich, dass wordpress die geschichte vielleicht gar nicht unterstützt und einen dazu verdammt, unterseiten nur bei bedarf auszuklappen. solche kinderlitzchen … tsss tssss

    mal ne zwischenfrage, wieso kriegt das forum die anführungsklammern des php-codes nicht gebacken? (ich hab die jetzt mit eckigen klammern ersetzt)

  14. Kommentar Autor
    Monika
    Kommentar

    1.Frage leicht erklärt, das hier ist kein Forum, sondern die Kommentare in meinem Blog und da habe ich jeden Code den man so eingibt verboten, aus Sicherheitsgründen

    2. parse errorbedeutet Du hast da was falsch geschrieben–schau mal ob die Hochkoma auch wirklich Hochkoma sind und nicht Schrägstriche kleine, also nach der Klammer und vor der schließenden Klammer musst Du Hochkomata setzen: die sind neben der Entertaste bei der Taste mit der Raute.

    das echo = 0 brauchste nicht – also dies und das & vorher löschen

    3. ne Riesentasse Kaffee und Ruhe hinstell :-)

  15. Kommentar Autor
    fredellini
    Kommentar

    danke, die hochkommas waren falsch (mozilla hat das erste beim copy-paste einfach umgewandelt).

    mit wp_list_pages(’title_li=&sort_column=menu_order′) in der header.php entsteht ein vertikales menü, wobei die unterseiten etwas eingerückt immer angezeigt werden. sieht aus wie eine gliederung. aber ich möchte ja ein horizentales menü.

    mit wp_list_pages(’title_li=&sort_column=menu_order&echo=0&depth=2′) in der header.php hab ich gar kein menü mehr.

    wenn ich globalnav() in der header.php lasse und wp_list_pages in der functions.php editiere, passiert im 1. fall das gleiche, jedoch wird im 2. fall das menü richtig horizontal dargestellt (nur das die unterseiten eben nicht automatisch ausgeklappt sind).
    dehalb würde ich den globalnav() nicht aus der header.php rausschmeißen, sondern in der functions.php etwas ändern (denn dorthin wird ja offensichtlich auch verwiesen).
    dafür spricht auch, dass meine unterseiten über die style.css ne andere schriftart haben und das mit globalnav() tatellos funktioniert.

    vielleicht muss man doch nur in der style.css angreifen?

  16. Kommentar Autor
    Monika
    Kommentar

    ok..dat wird ein wenig komplexer,
    ;)
    vor allem das CSS weil du ja immer alles gleich haben magst ;)
    dunimmst den Schnippsel von oben
    subpages nur anzeigen, wenn auch welche da sind,

    dann brauchst du das da horizontale Liste gestalten

    ich glaub ich habe da mal nichts vergessen-aber wer weiß ;)

  17. Kommentar Autor
    fredellini
    Kommentar

    hier die css zum menu: am günstigsten ist es natürlich, sich das theme alz zip runterzuladen und da einfach mal reinzuschauen.

    function.php legt genau so ein div.menu-ding an.

    in der style.css hab ich folgendes zusammengetragen:

    div#menu ul li,div.gallery dl,div.navigation
    div.nav-previous {float:left;}

    /*menutext*/
    #menu a {color: #003366;}

    #menu a:hover {text-decoration:underline;}

    #menu li.current_page_item a, #menu li.current_page_item a:hover {text-decoration: none;}

    div#menu ul,div#menu ul ul {
    line-height:30px; /*abstand parent – subpages*/
    list-style:none;
    margin:-15px; /*menuanfang*/
    padding:15px;
    }

    /*menupunkte*/
    div#menu ul a {
    font-family: Georgia, „Times New Roman“, Times, serif;
    font-size: 18px;
    margin-right:25px; /*abstand*/
    padding:0 0;
    text-decoration:underline;
    }

    /*untermenu*/
    div#menu ul ul li a { font-family: Georgia, „Times New Roman“, Times, serif; font-size: 13px; font-style: normal; color: #003366; margin-right:1.5em; /*abstand*/}

    div#menu ul li ul {left:-999em; position:absolute;}

    div#menu ul li:hover ul {left:auto;}

    mir ist übrigens aufgefallen, dass wenn ich in einer unterseite bin, die navigationsleiste nur die ebene mit den elternseiten anzeigt. die horizentallinie mit den unterseiten wird wirklich nur bei beim hovern eingeblendet.

    gruß fredellini

  18. Kommentar Autor
    Monika
    Kommentar

    fredellini ich kann dir nicht deine Navigation komplett machen, das läßt meine Zeit nicht zu, geschweige denn mir das Theme holen und dann tun :(

    was sagt denn der ThemeAutor?

  19. Kommentar Autor
    fredellini
    Kommentar

    weder der autor vom autumn leaves noch der autor vom sandbox theme zuckt sich.
    ich würde auch dir 20 euro bezahlen, wenn dus hinbekommst. viele grüße.

  20. Kommentar Autor
    Monika
    Kommentar

    fredelline ist ja weniger ne Frage des Geldes als der Zeit

    schick mir mal per email die URL

    lg

  21. Kommentar Autor
    fredellini
    Kommentar

    hallo texto, ich hab mir wieder mal selbst geholfen und mir ein menü gebaut.

    der knackpunkt ist, das wordpress von hause aus mit wp_list_pages augenscheinlich das immerwährende anzeigen der menüpunkte eben nicht beherrscht. mit einem kleinen trick kann man aber ein plugin namens pagesnav genau dazu bringen.

    alles nochmal nachzulesen unter:
    http://forum.wpde.org/design/61877-navigationsleiste-unterseiten-immer-einblenden.html#post290967

    trotzdem danke
    fredellini