Como crear menuss personalizados

edited octubre 2008 in FAQ
Holas. siempre he creado los mismos menus para los controladores.
y me cree un helper para crear menu con hojas de estilo.

primero
creamos una tabla llamada controladores.
CREATE TABLE `controladores` (                                              
                 `id` int(4) NOT NULL auto_increment,                                      
                 `nombre` varchar(100) collate latin1_bin NOT NULL,                        
                 `nombrelargo` varchar(100) collate latin1_bin NOT NULL,                   
                 PRIMARY KEY  (`id`)                                                       
               )

el campo nombre debe tener el nombre del controlador en minisculas.
y nombre largo es lo que se muestra en la pagina.

ahora creamos una hoja de estilos en:

public/css/estilos.css
/* Link del adimin */
.main_up { 
	display: -moz-inline-block; 
	display:inline-block; 
	padding:1px 20px 0 5px; 
	height:15px; 
	border:1px solid #d8dfea; 
	color: #BAC5D9;
	text-decoration:none;
	width:98%; 
} 
.main_up:hover { 
	display: -moz-inline-block; 
	display:inline-block; 
	padding:1px 20px 0 5px; 
	height:15px; 
	border:1px solid #295582;
	background:#BAC5D9; 
	color: #FFFFFF; 
	text-decoration:none;
	width:98%;
	} 
.main_up_2 { 
	display: -moz-inline-block; 
	display:inline-block; 
	padding:1px 20px 0 5px; 
	height:15px; 
	border:1px solid #295582;
	background:#BAC5D9; 
	color: #FFFFFF; 
	text-decoration:none;
	width:98%;
	}
.main_up_2:hover { 
	display: -moz-inline-block; 
	display:inline-block; 
	padding:1px 20px 0 5px; 
	height:15px; 
	border:1px solid #d8dfea;
	background:#FFFFFF; 
	color: #990000;
	text-decoration:none;
	width:98%; 
}

despues deben integrar esta hoja de estilo en el index.phtml de la vista principal de esta manera
<?php echo stylesheet_link_tag('estilos', 'use_variables: true') ?>

despues creo un controlador llamado utils, administracion, etc..
en este caso utils
<?php
class UtilsController extends ApplicationController {
	public function menu($items){
		if($controlador	=	$this->Controladores->find_first("nombre = '$items'"))
			main_color($controlador->id);
		$this->route_to("controller: $items");
	}	
}
?>

creo un menu en view/layout llamado menu.php
que contiene una tabla y que recorre la tabla controladores
<?php $array_menus = Session::get("array_menus"); ?>
<table align="center" id="content" style="background-color: #fff; border: #999 1px solid; padding: 10px 10px 6px 10px; width: 70%;">
<tbody>
	<tr valign="top">
		<td width="110">
			<!-- Menu Principal -->
			<table border="0" cellpadding="0" cellspacing="0" width="110">
			<tbody>		
				<tr>
					 <td> </td>
				</tr>															
				<?php foreach ($Controladores->find() as $controlador): ?>			
					<tr>
						<td><?php echo link_to("utils/menu/$controlador->nombre", $controlador->nombrelargo, "class: ".$array_menus[0][$controlador->id] ); ?></td>
					</tr>
				<?php endforeach; ?>
			</tbody>
		</table>
			<!-- Fin Menu Principal -->
		</td>
			<!-- Centro -->
			<td valign="top" width="534"><? content() ?></td>
			<!-- Fin Centro -->
    </tr>
</tbody>
</table>

ahora en el helper creo una utils.php o coloco este codigo en el main.php
function main_color($menu){
	$array_menus[0]		=	array(
		"1"			=>	"main_up",
		"2"			=>	"main_up",
		"3"			=>	"main_up",
		"4"			=>	"main_up",
		"5"			=>	"main_up",
		"6"			=>	"main_up",
		"7"			=>	"main_up",
		"8"			=>	"main_up",
		"9"			=>	"main_up",
		"10"			=>	"main_up",
		"11"			=>	"main_up",
		"12"			=>	"main_up",
		"13"			=>	"main_up",
		"14"			=>	"main_up",
		"15"			=>	"main_up",
		"16"			=>	"main_up",
		"17"			=>	"main_up",
		"18"			=>	"main_up",
		"19"			=>	"main_up",
		"20"			=>	"main_up"
	);
	$array_menus[0][$menu]="main_up_2";
	Session::set("array_menus",$array_menus);
}

si tengo mas de 20 controladores los voy creando aca,

y para terminar en cada controlador que aparece dentro del menu
colocamos el template de esta manera
public $template	=	"menu";


suerte y si no le gusta los colores los pueden cambiar <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->

Comentarios

  • Genial Fidel...
    Esto puede ser como especie de un Plugin que las personas que lo necesiten lo descargen, si quieres se puede colgar como plugin en el sitio de kumbia
  • edited 11:41
    si se puede mejorar y compartir para todos,
    seria bastante bueno, por que me tomo un poco de tiempo de pensar como hacer esto
    y cada vez le hago modificaciones,
    si se aplica a un plugin seria facil de implementar menus elegantes.

    gracias.
Sign In or Register to comment.