Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

Pagina y subpagina en la barra de menú

Estas en el tema de Pagina y subpagina en la barra de menú en el foro de WordPress en Foros del Web. Hola a todos compañeros. Os escribo porqué ya tengo dolor de cabeza de tanto batallar con esto. Estaba creando una web con Wordpress (de momento ...
  #1 (permalink)  
Antiguo 23/10/2012, 06:45
 
Fecha de Ingreso: marzo-2010
Mensajes: 191
Antigüedad: 14 años, 9 meses
Puntos: 3
Pregunta Pagina y subpagina en la barra de menú

Hola a todos compañeros.

Os escribo porqué ya tengo dolor de cabeza de tanto batallar con esto. Estaba creando una web con Wordpress (de momento en local, para hacer pruebas) y me encuentro con un detalle: Querría que al pasar el ratón encima de la barra de menú, me apareciese la subpagina que hay dentro de esa. Por ejemplo, algo parecido a que si paso el ratón por encima de "Deportes", me apareciese "Futbol", "Tennis", etc.

Se que se hace algo con jquery/javascript, incluso que hay plugins que te lo hacen, pero he probado todos habidos y por haber y nada. He probado el Multi-level-navigation plugin, por ejemplo. Y nada...

Podéis ver un ejemplo claro en la web interclinico.com. Ya veréis como si pasáis por el menú y pasáis encima de "Áreas especificas", se os despliega un menú.

Esto es lo que tengo en el functions.php, os lo pongo a ver si podéis ver algo que destaque...

Código PHP:
Ver original
  1. function art_header_page_list_filter($pages)
  2. {
  3.     global $artThemeSettings;
  4.     art_process_front($pages);
  5.     $artThemeSettings['menu.topItemIDs'] = art_topIDs($pages);
  6.     $artThemeSettings['menu.activeID'] = art_activeID($pages);
  7.     $artThemeSettings['menu.blogID'] = art_blogID($pages);
  8.     if (!$artThemeSettings['menu.showSubmenus']) art_remove_subitems($pages);
  9.     return $pages;
  10. }
  11.  
  12. function art_list_pages_filter($output)
  13. {
  14.     global $artThemeSettings;
  15.     $pref ='page-item-';
  16.     if($artThemeSettings['menu.topItemIDs'])
  17.         foreach($artThemeSettings['menu.topItemIDs'] as $id){
  18.             $output = preg_replace('~<li class="([^"]*)\b(' . $pref . $id . ')\b([^"]*)"><a ([^>]+)>([^<]*)</a>~',
  19.                 '<li class="$1$2$3"><a $4>' . $artThemeSettings['menu.topItemBegin']
  20.                     . '$5' . $artThemeSettings['menu.topItemEnd'] . '</a>', $output, 1);
  21.         }
  22.        
  23.     $frontID = null;
  24.     $blogID = null;
  25.     if('page' == get_option('show_on_front')) {
  26.         $frontID = get_option('page_on_front');
  27.         $blogID = $artThemeSettings['menu.blogID'];
  28.     }
  29.     if ($frontID)
  30.         $output = preg_replace('~<li class="([^"]*)\b(' . $pref . $frontID . ')\b([^"]*)"><a href="([^"]*)" ~',
  31.             '<li class="$1$2$3"><a href="'. get_option('home') .'" ', $output, 1);
  32.  
  33.     if ((is_home() && $blogID) || $artThemeSettings['menu.activeID'])
  34.         $output = preg_replace('~<li class="([^"]*)\b(' . $pref . (is_home() ? $blogID : $artThemeSettings['menu.activeID']) . ')\b([^"]*)"><a ~',
  35.             '<li class="$1$2$3"><a class="active" ', $output, 1);
  36.     return $output;
  37. }
  38.  
  39. function art_menu_items() {
  40.     global $artThemeSettings;
  41.     if (true === $artThemeSettings['menu.showHome'] && 'page' != get_option('show_on_front'))
  42.         echo '<li><a' . (is_home() ? ' class="active"' : '') . ' href="' . get_option('home') . '">'.$artThemeSettings['menu.topItemBegin']
  43.             . $artThemeSettings['menu.homeCaption'] . $artThemeSettings['menu.topItemEnd'] . '</a></li>';
  44.     add_action('get_pages', 'art_header_page_list_filter');
  45.     add_action('wp_list_pages', 'art_list_pages_filter');
  46.     wp_list_pages('title_li=&child_of=$blogID');
  47.     remove_action('wp_list_pages', 'art_list_pages_filter');
  48.     remove_action('get_pages', 'art_header_page_list_filter');
  49. }

Lo dicho, he probado de todo y nada... No pensé que fuera tan complicado :(

Estamos en contacto.

Saludos
  #2 (permalink)  
Antiguo 23/10/2012, 07:19
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 19 años, 4 meses
Puntos: 638
Respuesta: Pagina y subpagina en la barra de menú

Oh! Te has complicado la vida de una manera que no tienes idea ...

Lo único que tienes que hacer es crear un menú, en el administrador de tu sitio vas a Apariencia > Menú, y allí lo creas, con páginas, categorías, lo que desees...

Para registrar los menús, aquí te dejo un link a la documentación, es muy fácil...
http://codex.wordpress.org/Navigation_Menus

Saludos.
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #3 (permalink)  
Antiguo 24/10/2012, 00:32
 
Fecha de Ingreso: marzo-2010
Mensajes: 191
Antigüedad: 14 años, 9 meses
Puntos: 3
Respuesta: Pagina y subpagina en la barra de menú

Buenos días Roger.

Me miraré eso que comentas. No obstante, cuando voy a la plantilla de la web (medical_wp2) me indica lo siguiente:

"El tema actual no soporta menús de forma nativa, pero puedes usar el widget “Menús personalizados” para añadir los menús que has creado a la barra lateral de tu tema."



Y claro, como Widget no quiero ponerlo, ya que es el menú superior...

Bueno, seguiré probando a ver si es posible.
  #4 (permalink)  
Antiguo 24/10/2012, 06:57
Avatar de Nekko
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Buenos Aires
Mensajes: 3.141
Antigüedad: 16 años, 8 meses
Puntos: 656
Respuesta: Pagina y subpagina en la barra de menú

En la documentación que linkea roger, habla sobre register_nav_menu, una función necesaria para que tu theme habilite los menus.
__________________
Taller para crear themes wordpress desde cero | Presupuestos para trabajos particulares vía MP

Etiquetas: functions.php, menu+deplegable, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:27.