Tuesday, Feb 07th

Last update

Jerarquia de Menus

Rate this item
(0 votos)
Jerarquía de menus tipo plantilla de ProyectoHispano


*************************


1.- Modificar el codigo del archivo mod_mainmenu.php para que cuando el menu lo pongas horizontal marque la opcion activa, y en el modulo marcarle la opcion activate parent a yes

reemplazar

 
function mosGetMenuLink( $mitem, $level=0, &$params, $open=null ) {
    global $Itemid, $mosConfig_live_site, $mainframe;


por


function mosGetMenuLink( $mitem, $level=0, &$params , $open=null) {
        global $database,$Itemid, $mosConfig_live_site, $mainframe;



reemplazar


// Active Menu highlighting
   $current_itemid = $Itemid;
    if ( !$current_itemid ) {
            $id = '';
        } else if ( $current_itemid == $mitem->id ) {
            $id = 'id="active_menu'. $params->get( 'class_sfx' ) .'"';
        } else {
            $id = '';
        }


Por:


// Active Menu highlighting
$current_itemid = $Itemid;
$query="SELECT id FROM #__menu WHERE parent=".$mitem->id."";
$database->setQuery($query);
$eltern=$database->LoadObjectlist();
if ( !$current_itemid ) {
    $id = '';
} else if ( $current_itemid == $mitem->id ) {
    $id = 'id="active_menu'. $params->get( 'class_sfx' ) .'"';
} else if ($eltern) {
    foreach ($eltern as $kind) {
        
        if ($current_itemid == $kind->id) {
            $id = 'id="active_menu'. $params->get( 'class_sfx' ) .'"';    
                    /* ^^hier kann man auch für 'active_menu' beispielsweise
                    'active_menu_1_elternlevel' definieren, um das Eltern-Menüelement zu definieren*/
        }
        $query="SELECT id FROM #__menu WHERE parent=".$kind->id."";
            $database->setQuery($query);
            $grandparents=$database->LoadObjectlist();    
                foreach ($grandparents as $grandchild) {
                    if ($current_itemid == $grandchild->id) {
                    $id = 'id="active_menu'. $params->get( 'class_sfx' ) .'"';    
                /* ^^hier kann man auch für 'active_menu' beispielsweise
                    'active_menu_2_elternlevel' definieren, um das Eltern-Menüelement 2. Grades, also das
                    zwei über der aktuellen Ebene zu definieren */        
                    }
                }
    }
} else {
    $id = '';
}


2.- Usar un modulo que te muestre los submenus, para ello podemos usar el modulo children submenu que puedes encontrar aqui


3.- Si quieres que tambien en el submenu se quede marcada la opcion en la que estas tendras que modificar el codigo, te paso el codigo como lo he dejado yo

codigo del mod_children_submenu.php modificado por mi


<?php
/**
* Name: Show SubMenu Children
* Version: 1.0
* Author: Mike Teigen
* CreationDate: 21/09/2005
* This module is released under the GNU/GPL License
*/
defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );

$menuclass = $params->get( 'class_sfx' );

$sql = "SELECT id FROM #__menu "
    . "\nWHERE parent='$Itemid'";
        
$database->setQuery( $sql );
        
$rows1 = $database->loadResult();
        
if($rows1){
    $parent1 = $Itemid;
}
else {
    $sql = "SELECT parent FROM #__menu "
        . "\nWHERE id='$Itemid'";
        
    $database->setQuery( $sql );
    
    $rows1 = $database->loadResult();
    $parent1 = $rows1;
}
        
$sql = "SELECT name FROM #__menu "
    . "\nWHERE id='$parent1'";
        
$database->setQuery( $sql );
        
$rows1 = $database->loadResult();
if(!$rows1){
    $parent1 = "0";
    $menuname = "Main Menu";
} else {
    $menuname = $rows1;
}
        
$sql = "SELECT m.* FROM #__menu AS m"
    . "\nWHERE published=1 AND parent='$parent1' AND menutype='mainmenu'"
    . "\nORDER BY ordering";

$database->setQuery( $sql );

$rows = $database->loadObjectList( 'id' );
foreach ($rows as $p ) {
    $content = vert_submenu_list( $rows , $menuclass, $menuname );
    //echo "z";
}

function vert_submenu_list( $data , $class, $menuname ) {
global $Itemid;

/*$html = "<table><tr>
    <th valign=\"top\">$menuname Menu</th>
    </tr>";*/
$html = "<h3>$menuname Menu</h3><table border='0' cellpadding='0' cellspacing='0' width='100%'>";
foreach ($data as $v ) {
    if ($v->type != 'url') {
            $v->link .= "&amp;Itemid=$v->id";
        }
        //echo "$v->name";
        $theLink = str_replace('&amp;', '##########', $v->link);
        $theLink = str_replace('&', '&amp;', $theLink);
        $theLink = str_replace('##########', '&amp;', $theLink);
        $theLink = sefRelToAbs($theLink);
        
        
        $current_itemid = $Itemid;
        if ( !$current_itemid )
        {
            $id = '';
        }
        else if ( $current_itemid == $v->id )
        {
            $id = 'id="active_menu"';
        }
        else
        {
            $id = '';
        }
        
        
        $html = $html . "\n<tr align=\"left\"><td><a xhref=\"$theLink\" $id class=\"sublevel" . "$class\">$v->name</a></td></tr>";
    }
    $html = $html . "</table>";
    return $html;
}



?>




Este tutorial esta basado en un post recogido del foro oficial

Saludos.

***************************

Last modified on Miércoles 03 de Junio de 2009 04:27

Apoyanos!

Encuentras útil el contenido de nuestro sitio?

Tienes pensado comprar algúna extension o template para Joomla!?

Hazlo mediante los links de afiliados o los banners que encuentras en Joomlamania!

Colabora!

Si quieres colaborar en Joomlamania! no dudes en contactarnos.

Templates Joomla!

Estas buscando un template profesional para tu sitio Joomla!?, aqui te presentamos direcciones de los mejores clubs de templates para joomla! disponibles.

Extensiones Joomla!

Piensas adquerir extensiones comerciales?, apoya a Joomlamania! comprando tus extensiones desde nuestros enlaces de afiliados.

You are here
BLOG COMMENTS POWERED BY DISQUS