• Ik ben opzoek naar een plugin of hack die er voor zorgt dat ik controle krijg over welke items in het menu worden getoond en dat ook nog eens per pagina. ik gebruik nu twentyten…

    zo heb ik bijvoorbeeld gewoon de siteroot. hier staat in het menu alleen de pagina home.

    daarnaast heb ik een pagina aangemaakt ‘amsterdam’ die heb ik nu door middel van de ‘Simply Hide Pages’ plugin heb verborgen. Deze kan ik door middel van de permalink wel bereiken door /amsterdam in te typen. so far so good.

    wanneer ik nu naar die /amsterdam pagina ga, wil ik in het menu de subpagina’s zien van de pagina amsterdam… bijvoorbeeld ‘museums’ en ‘canal cruises’. deze moeten dan dus niet zichtbaar zijn in de siteroot…

    heb al verschillende plugins geprobeerd, maar geen heeft het goede resultaat. een codehack is ook goed…

    thnx in advance… 🙂

7 reacties aan het bekijken - 1 tot 7 (van in totaal 7)
  • Ik denk iets als dit (niet getest).

    In header.php vind je:

    <?php wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'primary' ) ); ?>'

    Daar kun je een conditional van maken:

    <?php
    if(is_page('amsterdam') ) {
    wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'primary', menu =>'amsterdam' ) );
    }
    else {
    wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'primary' ) );
    } ?>

    En dan een custom menu met de naam ‘amsterdam’ aanmaken, met daarin al je subpagina’s

    Thread starter demandela

    (@demandela)

    Zonder testen werkt het feilloos…

    het enige dingetje is nog dat het menu weer verdwijnt wanneer je een andere subpagina aanklikt in het menu. je zit dan immers niet meer in de pagina amsterdam.

    de permalink wordt dan /amsterdam/canalcruises

    kan de php nog aangepast worden zodat alles achter /amsterdam ook nog dat menu toont? of moet ik dan allemaal regels gaan toevoegen?

    Je kunt van de conditional bijvoorbeeld ook een array maken:
    if(is_page(array ('amsterdam','canalcruises', 'enz') )

    Maar als het alleen child pages van ‘amsterdam’ zijn, kun je ook misschien het volgende doen:

    <?php
    //kijk of pagina een sub pagina is van een pagina met een bepaalde ID
    function is_child($pageID) {
    	global $post;
    	if( is_page() && ($post->post_parent==$pageID) ) {
                   return true;
    	} else {
                   return false;
    	}
    }
    
    if(is_child(3) ) //Vul i.p.v. '3' de id van pagina 'amsterdam' in {
    wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'primary', menu =>'amsterdam' ) );
    }
    else {
    wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'primary' ) );
    }
    ?>

    Als het goed is zou het custom menu nu bij alle sub pagina’s van ‘amsterdam’ getoond moeten worden.

    Thread starter demandela

    (@demandela)

    het lijkt toch niet helemaal goed te werken…

    misschien wordt het zo duidelijker, dit is zoals het zou moeten worden…

    Primary menu: http://www.orangetickets.nl/
    Amsterdam menu: http://www.orangetickets.nl/amsterdam/
    Amsterdam menu: http://www.orangetickets.nl/amsterdam/canal-cruise/
    Amsterdam menu: http://www.orangetickets.nl/amsterdam/canal-cruise/day-canal-cruise/

    dit is hoe het nu is:
    Primary menu: http://www.orangetickets.nl/
    Primary menu: http://www.orangetickets.nl/amsterdam/
    Amsterdam menu: http://www.orangetickets.nl/amsterdam/canal-cruise/
    Primary menu: http://www.orangetickets.nl/amsterdam/canal-cruise/day-canal-cruise/

    Pagina’s zijn als volgt aangemaakt… Home (niv1), Amsterdam (niv1), Canal Cruise (niv2), Day canal cruise (niv3)

    niveaus zijn dus zeg maar de parent child relaties.

    Waarschijnlijk omdat de conditional met de is_child() niet helemaal correct is. Ik zal kijken of ik ‘m even bij kan slijpen: hij zet het menu nu aleen bij de child van de betreffende page-id, en dat moet dus iets ruimer.

    Of je moet het gewoon op de array manier proberen; ik denk dat het volgende (in dit specifieke geval) wel werkt:

    <?php
    if(is_page(array ('amsterdam','canal-cruise','day-canal-cruise') ) {
    wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'primary', menu =>'amsterdam' ) );
    }
    else {
    wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'primary' ) );
    } ?>

    Andere pagina’s die ook het ‘amsterdam’ menu moeten hebben, moet je dan wel handmatig aan de array toevoegen.

    Thread starter demandela

    (@demandela)

    Juist…

    het word een site die nog flink uitgebreid gaat worden. zal een flinke array worden dan. maar voor the time being is het wel de beste oplossing. vanzelfsprekend zou het mooier zijn als hij het allemaal automatisch doet. maar ben in ieder geval al een stuk verder.

    mocht je hem nog bij kunnen schaven hou ik mij aanbevolen 🙂

    thnx voor je hulp iig! appreciate it

    Snap ik… het is echter lastig een conditional te schrijven wanneer je de condities niet weet 🙂

    Ik krijg echter het idee dat je beter een oplossing kunt zoeken waarbij je in de backend, per pagina, kunt aangeven welk menu er gebruikt moet worden. Ik denk dat dat wel op basis van een custom field zou kunnen, om maar wat te noemen.

    Maar allereerst: richt je theme in als child theme; nu gebruik je gewoon een getweakt TwentyTen. Als er nu een update komt van TwentyTen (met bijvoorbeeld nieuwe functionaliteit) hang je.

    http://codex.wordpress.org/Child_Themes

7 reacties aan het bekijken - 1 tot 7 (van in totaal 7)
  • Het onderwerp ‘Verschillende menu items op verschillende pagina's’ is gesloten voor nieuwe reacties.