Modificare meniu in php

Salutare,
Doresc sa modific meniul generat de codul php existent, plecand de la urmatoarea structura html/css/js prezentata in codepen:

Home / Portfolio / About si mergand pe Portfolio, alta pagina avand Home / Portfolio projects.

Am procedat astfel: am inregistrat in script-calls.php, mynewmenu.js ce contine urmatorul cod:

js:

// mynewmenu implementation
jQuery(function($){
  var height, index, prevIndex

  $('nav ul li').mouseover(function(e){
  //Set the aesthetics (similar to :hover)
  $('nav ul li').removeClass('hovered');
  $(this).addClass('hovered');

  //Gets relevant data required for scrolling of menuRight
  height = $("#menuRight").css("height").replace('px','');
  index = $(this).index();

  //If the category button (from the navlist) has changed
  if (index != prevIndex){
    $("#menuRight").stop();

    $("#menuRight").animate({"scrollTop":height*index}, 800, 'easeOutBounce'); //This requires jQuery UI for easing options.
    prevIndex = index;
  }
  });
});

Am creat structura meniului despre care vorbeam mai sus (in functie de pagina avem un anumit meniu asa cum se vede aici) si am identificat secventa php ce genereaza meniul in header.php:

<!-- Start Header -->
  ...
<div class="myrow max_width ">
  <div class="small-5 <?php if ($header_style == 'style2') { echo 'medium-8'; } else { echo 'medium-4';} ?> columns menu-holder">
  <?php $full_menu_true = ($menu_mobile_toggle_view == 'style2' && $header_style == 'style2');?>
  <?php if ($full_menu_true) { ?>
    <nav id="full-menu" role="navigation">
    <?php if ($page_menu) { ?>
      <?php wp_nav_menu( array( 'menu' => $page_menu, 'depth' => 2, 'container' => false, 'menu_class' => 'full-menu', 'walker' => new thb_mobileDropdown ) ); ?>
    <?php } else  if(has_nav_menu('nav-menu')) { ?>
      <?php wp_nav_menu( array( 'theme_location' => 'nav-menu', 'depth' => 2, 'container' => false, 'menu_class' => 'full-menu', 'walker' => new thb_mobileDropdown ) ); ?>
    <?php } else { ?>
      <ul class="full-menu">
        <li><a>">Please assign a menu from Appearance -> Menus</a></li>
    <?php } ?>
    </nav>
  <?php } ?>
  <?php if ($header_search != 'off') { do_action( 'thb_quick_search' ); } ?>
  <?php if ($header_cart != 'off') { do_action( 'thb_quick_cart' ); } ?>
  <a href="#"> always<?php } ?>">
    <div>
    <span></span><span></span><span></span>
    </div>
  </a>
  </div>
</div>  

</header>
<!-- End Header -->

Acestea fiind spuse, intrebarea mea este legata de cum anume as putea implementa in header.php, urmatoarele secvente de html care genereaza rolloverurile de imagini atasate butoanelor de meniu (asa cum v-am aratat in codepenurile de mai sus) avand in vedere faptul ca discutam despre doua sectiuni <div> diferite dupa cum urmeaza. Home / Portfolio / About:

<nav>
  <ul>
  ...
  </ul>
  <div id='menuRight'>
    <div>
      Home
      <img src='http://images5.fanpop.com/image/photos/31100000/random-space-space-31155586-598-398.jpg'>
      </img>
    </div>
    <div>
      Portfolio
      <img src='http://www.keenthemes.com/preview/metronic/theme/assets/global/plugins/jcrop/demos/demo_files/image1.jpg'>
      </img>
    </div>
    <div>
      About
      <img src='http://images5.fanpop.com/image/photos/31100000/random-space-space-31155586-598-398.jpg'>
      </img>
    </div>
  </div>
</nav>

iar pentru meniu 2, Home / Portfolio projects:

<nav>
  <ul>
  ...
  </ul>
  <div id='menuRight'>
    <div>
      Home
      <img src='http://images5.fanpop.com/image/photos/31100000/random-space-space-31155586-598-398.jpg'>
      </img>
    </div>
    <div>
      Fiva
      <img src='http://www.keenthemes.com/preview/metronic/theme/assets/global/plugins/jcrop/demos/demo_files/image1.jpg'>
      </img>
    </div>
    <div>
      Caterham
      <img src='http://images5.fanpop.com/image/photos/31100000/random-space-space-31155586-598-398.jpg'>
      </img>
    </div>
    <div>
      Mobile
      <img src='http://www.keenthemes.com/preview/metronic/theme/assets/global/plugins/jcrop/demos/demo_files/image1.jpg'>
      </img>
    </div>
  </div>
</nav>

Deocamdata nu discutam despre css.
Pot avea sprijinul vostru, vreo parere? multam.

Din câte înțeleg eu tu vrei să afișezi alt meniu (sau doar o parte din meniu?) în funcție de pagina pe care ești?

Salutare, adevarat vreau ca in final sa am cele doua structuri in functie de pagina Home / Portfolio / About respectiv Home / Portfolio. Cu asta am rezolvat, nu imi dau seama** cum as putea insera in header.php secventele <div> din htmlurile codepen, care sa-mi dea imaginile rollover :slight_smile: . Momentan discutam strict de php cosmetizarea butoanelor de meniu (pozitionare, culoare, etc) asa cum avem in codepen evident ca vine din css ulterior, ar trebui sa ma descurc.

**ps: este mult spus nu-mi dau seama, … am lipsit la cursul de php, nu stiu sa ma joc cu el, de ce sa ma ascund dupa deget :stuck_out_tongue:

Tot nu sunt foarte sigur că am înțeles problema: vrei să alterezi codul pe care ți-l dă wp_nav_menu? Dacă da, este nevoie să ne arăți și ce ai în walker.

Adică ce elementul ăsta <div id='menuRight'> e generat de wp_nav_menu sau de altceva?


PS, ai putea face un pic mai citeț codul care generează meniul:

<?php

$menuOptions = array(
  'depth' => 2,
  'container' => false,
  'menu_class' => 'full-menu',
  'walker' => new thb_mobileDropdown,
);

if ($page_menu) {
  $menuOptions['menu'] = $page_menu;
} else if (has_nav_menu('nav-menu')) {
  $menuOptions['theme_location'] = 'nav-menu';
} else {
  $menuOptions = array();
}

if (!empty($menuOptions)) {
  wp_nav_menu($menuOptions);
} else {?>
  <ul class="full-menu">
    <li>Please assign a menu from Appearance -> Menus</li>
  </ul>
<?php } ?>
1 Like

Tocmai asta este problema, ceea ce m-ar ajuta este un cod php (deocamdata nu exista) care sa-mi genereze secventele html de mai sus cu <div id='menuRight'> aplicand reverse engineering din html in php.


ps: sunt convins ca sugestia este prea buna dpdv tehnic dar momentan n-as face modificarea ca sa pot controla eventualele erori. Am in vedere propunerea, multam.

Am citit și răscitit ce ai scris și tot n-am înțeles ce problemă ai :smiley:

Ce este în <div id='menuRight'> este generat de meniu? Dacă da, ai walkerul? Ni-l arăți și nouă? :smile:

Sau pur și simplu nu știi cum să pui imaginile respective în administrare?

scuze pentru neintelegere indeed, este nitel alambicat. Am sa incerc sa fiu cat pot de explicit in cele ce urmeaza :slight_smile:

Am o tema WP, cu un meniu (secventa php ce il genereaza se poate vedea mai sus in header.php). Apoi am un alt tip de meniu cu doua structuri diferite pe pagini diferite simulat in codepen generat de html n-am php la el, n-am walkerul, asta caut sa obtin ca sursa in loc de html (+ css / js).

Pe mine ma intereseaza ca in final sa am in tema, un meniu similar cu cel din codepen ca forma respectiv structura, butoanele de meniu activand imaginile respective insa generat de php evident, sau daca pot insera direct folosind taguri <html> codul undeva aici, nu m-ar deranja:

        <!-- Start Header -->
            ...
            <nav id="full-menu" role="navigation">
                <?php if ($page_menu) { ?>
                  <?php wp_nav_menu( array( 'menu' => $page_menu, 'depth' => 2, 'container' => false, 'menu_class' => 'full-menu', 'walker' => new thb_mobileDropdown ) ); ?>
                <?php } else  if(has_nav_menu('nav-menu')) { ?>
                  <?php wp_nav_menu( array( 'theme_location' => 'nav-menu', 'depth' => 2, 'container' => false, 'menu_class' => 'full-menu', 'walker' => new thb_mobileDropdown ) ); ?>
                <?php } else { ?>
                  <ul class="full-menu">
                    <li><a>">Please assign a menu from Appearance -> Menus</a></li>
                <?php } ?>
        
        // De aici ar trebui sa inceapa codul `php` (in `html` deocamdata, doar pentru a evidentia, n-am walker) ce genereaza secventele `<div id='menuRight'>` diferite intre ele avand doua structuri *Home / Portfolio / About*:
    
            <div id='menuRight'>
                <div>
                  Home
                  <img src='http://images5.fanpop.com/image/photos/31100000/random-space-space-31155586-598-398.jpg'>
                  </img>
                </div>
                <div>
                  Portfolio
                  <img src='http://www.keenthemes.com/preview/metronic/theme/assets/global/plugins/jcrop/demos/demo_files/image1.jpg'>
                  </img>
                </div>
                <div>
                  About
                  <img src='http://images5.fanpop.com/image/photos/31100000/random-space-space-31155586-598-398.jpg'>
                  </img>
                </div>
              </div>
    
        //respectiv *Home / Portfolio projects*, cel mai probabil generate de un `if php` sper sa nu vb. prostii.
    
            <div id='menuRight'>
                <div>
                  Home
                  <img src='http://images5.fanpop.com/image/photos/31100000/random-space-space-31155586-598-398.jpg'>
                  </img>
                </div>
                <div>
                  Fiva
                  <img src='http://www.keenthemes.com/preview/metronic/theme/assets/global/plugins/jcrop/demos/demo_files/image1.jpg'>
                  </img>
                </div>
                <div>
                  Caterham
                  <img src='http://images5.fanpop.com/image/photos/31100000/random-space-space-31155586-598-398.jpg'>
                  </img>
                </div>
                <div>
                  Mobile
                  <img src='http://www.keenthemes.com/preview/metronic/theme/assets/global/plugins/jcrop/demos/demo_files/image1.jpg'>
                  </img>
                </div>
              </div>
    
        
            </nav>
            ...
        <!-- End Header -->

Cu structura am rezolvat. In schimb, nu stiu cum sa aduc in php, secventele <div id='menuRight'> care practic genereaza imaginile respective ce “danseaza” dupa cum canta js. Daca este nevoie mai revin cu detalii cu rugamintea de a se vizualiza toate linkurile din text (codepen si site) pentru a avea o imagine de ansamblu cat mai clara :slight_smile:

LE: in alte cuvinte facand abstractie de toata povestea, cum traduc in php cele doua pasaje html din primul post, conditionate cumva intre ele in functie de paginile care au asociate fie meniul cu structura 1 (Home / Portfolio / About) fie meniul cu structura 2 (Home / Portfolio projects)?