La macro sc_appmenu_add_item agrega dinámicamente elementos a la aplicación de menú iniciada por la macro sc_appmenu_create .
Es importante destacar que, para la creación de un menú dinámico utilizando macros, la aplicación no debe contener ningún ítem creado manualmente en la interfaz de Ítems del Menú.
Sintaxis// Inicializa el menú dinámico. Esta llamada es obligatoria antes de usar sc_appmenu_add_item
sc_appmenu_create("nombre_app_menu");
// Agrega un ítem al menú dinámico ya inicializado
sc_appmenu_add_item(
"nombre_app_menu",
"id_item",
"id_item_padre",
"etiqueta",
"aplicacion",
"parametros",
"icono",
"tooltip",
"target",
"megamenu"
);
Parámetros
Parámetro |
Obligatorio |
Permite Vacío |
Descripción y ejemplo |
nombre_app_menu |
Sí |
No |
Recibe el nombre de la aplicación de menú donde se crearán los ítems. Acepta texto fijo entre comillas dobles, variable local o variable global.
Ejemplo: • "menu" • $variable_local • [variable_global] |
id_item |
Sí |
No |
Define el ID del ítem creado. Este parámetro acepta texto fijo entre comillas dobles o variable.
Ejemplo: • "item_01" • "item_" . $array[0] |
id_item_padre |
Sí |
Sí |
Debe especificarse solo si el ítem es un subelemento. En ese caso, utilice el ID del ítem padre.
Ejemplo: • "item_01" • "item_" . $array[0] |
etiqueta |
Sí |
No |
Recibe el nombre que se mostrará en el menú. Puede ser texto fijo, variable o una etiqueta de idioma (lang).
Ejemplo: • "Nombre del Ítem" • $nombreItem • {lang_nombre_item} |
nombre_aplicacion |
Condicional¹ |
Sí |
Define la aplicación que se abrirá al hacer clic en el ítem. Puede dejarse en blanco si el ítem contiene subelementos.
¹ Puede dejarse en blanco si el ítem actúa como agrupador (ítem padre) sin acción de enlace. |
parametros |
No |
Sí |
Cadena de parámetros que se pasarán al activar el ítem. Deben recuperarse como variables globales.
Ejemplo: • param1="valor";param2=$variable;param3={campo} |
tooltip |
No |
Sí |
Texto que se mostrará al pasar el ratón sobre el ítem. Puede ser texto fijo, variable o etiqueta lang.
Ejemplo: • "Descripción del ítem" • $descripcion • {lang_descripcion} |
icono |
No |
Sí |
Define el ícono Font Awesome (o imagen) para el ítem del menú. Debe indicarse entre comillas dobles.
Ejemplo: • "fa fa-user" |
target |
No |
Sí |
Define cómo se abrirá el enlace.
Ejemplo: • "_self" – En la misma ventana • "_blank" – En una nueva pestaña • "_parent" – En el contexto de la ventana padre |
megamenu |
No |
Sí |
Define si el ítem se mostrará como un mega menú. Para que funcione correctamente: – Debe ser un ítem de nivel superior (sin padre). – Debe contener al menos dos niveles de subelementos.
Ejemplo: • "S" – El ítem será mostrado como mega menú • "" – El ítem será mostrado como menú estándar |
Ejemplos
1. Menú fijo con valores directos sc_appmenu_create("menu");
// Ítem principal fijo
sc_appmenu_add_item("menu", "item_0", "", "Inicio", "app_home", "", "fa fa-home", "Página de inicio", "_self", "");
// Grupo: Registros
sc_appmenu_add_item("menu", "item_1", "", "Registros", "", "", "fa fa-folder", "", "", "");
sc_appmenu_add_item("menu", "item_2", "item_1", "Clientes", "app_clientes", "", "fa fa-users", "", "_self", "");
sc_appmenu_add_item("menu", "item_3", "item_1", "Proveedores", "app_proveedores", "", "fa fa-truck", "", "_self", "");
sc_appmenu_add_item("menu", "item_4", "item_1", "Productos", "app_productos", "", "fa fa-box", "", "_self", "");
// Grupo: Informes
sc_appmenu_add_item("menu", "item_5", "", "Informes", "", "", "fa fa-file", "", "", "");
sc_appmenu_add_item("menu", "item_6", "item_5", "Facturación", "app_rel_facturacion", "", "fa fa-chart-line", "", "_self", "");
sc_appmenu_add_item("menu", "item_7", "item_5", "Inventario", "app_rel_inventario", "", "fa fa-warehouse", "", "_self", "");
sc_appmenu_add_item("menu", "item_8", "item_5", "Clientes", "app_rel_clientes", "", "fa fa-address-book", "", "_self", "");
2. Usando array y foreach sc_appmenu_create("menu");
// Inicio
sc_appmenu_add_item("menu", "item_0", "", "Inicio", "app_home", "", "fa fa-home", "Página de inicio", "_self", "");
$grupos = array(
array(
"id" => "item_1",
"label" => "Registros",
"icono" => "fa fa-folder",
"items" => array(
array("label" => "Clientes", "app" => "app_clientes", "icono" => "fa fa-users"),
array("label" => "Proveedores", "app" => "app_proveedores", "icono" => "fa fa-truck"),
array("label" => "Productos", "app" => "app_productos", "icono" => "fa fa-box")
)
),
array(
"id" => "item_5",
"label" => "Informes",
"icono" => "fa fa-file",
"items" => array(
array("label" => "Facturación", "app" => "app_rel_facturacion", "icono" => "fa fa-chart-line"),
array("label" => "Inventario", "app" => "app_rel_inventario", "icono" => "fa fa-warehouse"),
array("label" => "Clientes", "app" => "app_rel_clientes", "icono" => "fa fa-address-book")
)
)
);
$id_counter = 2;
foreach ($grupos as $grupo) {
sc_appmenu_add_item("menu", $grupo["id"], "", $grupo["label"], "", "", $grupo["icono"], "", "", "");
foreach ($grupo["items"] as $item) {
$id = "item_" . $id_counter++;
sc_appmenu_add_item("menu", $id, $grupo["id"], $item["label"], $item["app"], "", $item["icono"], "", "_self", "");
}
}
3. Usando foreach con consulta en base de datos sc_appmenu_create("menu");
// Inicio
sc_appmenu_add_item("menu", "item_0", "", "Inicio", "app_home", "", "fa fa-home", "Página de inicio", "_self", "");
// Consulta con JOIN
sc_lookup(menu_data, "
SELECT
g.id AS grupo_id,
g.nombre AS grupo_nombre,
i.id AS item_id,
i.nombre AS item_nombre,
i.app AS app,
i.icono AS icono
FROM grupos g
JOIN items i ON i.grupo_id = g.id
WHERE g.activo = 'S' AND i.activo = 'S'
ORDER BY g.id, i.id
");
$grupos_creados = array();
if (isset({menu_data[0][0]})) {
foreach ({menu_data} as $fila) {
$grupo_id = "item_" . $fila[0];
$grupo_nombre = $fila[1];
$item_id = "item_" . $fila[2];
$item_nombre = $fila[3];
$item_app = $fila[4];
$item_icono = $fila[5];
if (!in_array($grupo_id, $grupos_creados)) {
sc_appmenu_add_item("menu", $grupo_id, "", $grupo_nombre, "", "", "fa fa-folder", "", "", "");
$grupos_creados[] = $grupo_id;
}
sc_appmenu_add_item("menu", $item_id, $grupo_id, $item_nombre, $item_app, "", $item_icono, "", "_self", "");
}
}
4. Ejemplo con opción de mega menú sc_appmenu_create("menu");
// Raíz del mega menú
sc_appmenu_add_item("menu", "item_0", "", "Gestión", "", "", "fa fa-sitemap", "", "", "S");
// Grupos del mega menú
$grupos = array(
array(
"id" => "item_1",
"label" => "Registros",
"items" => array("Clientes", "Productos", "Usuarios")
),
array(
"id" => "item_2",
"label" => "Finanzas",
"items" => array("Cuentas por pagar", "Ingresos", "Facturación")
),
array(
"id" => "item_3",
"label" => "Informes",
"items" => array("Ventas", "Inventario", "Clientes")
)
);
$id_counter = 4;
foreach ($grupos as $grupo) {
sc_appmenu_add_item("menu", $grupo["id"], "item_0", $grupo["label"], "", "", "", "", "", "");
foreach ($grupo["items"] as $label) {
$id = "item_" . $id_counter++;
$app = "app_" . strtolower(str_replace(" ", "_", $label));
sc_appmenu_add_item("menu", $id, $grupo["id"], $label, $app, "", "", "", "_self", "");
}
}
|