| 
							 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", "");
  }
}
						 |