Ahora KumbiaPHP está en Slack!!

Si deseas contactar con nosotros y de forma rápida, estamos en Slack:

http://slack.kumbiaphp.com/

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 :D

Comentarios

  • edited noviembre -1
    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 noviembre -1
    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.