Dudas al programar menús en bloques

Events happening in the community are now at Drupal community events on www.drupal.org.
Posted by yemore on February 19, 2014 at 2:26pm

Necesito una ayuda de alguien, porfis. Estoy empezando en esto de Drupal yo solita y estoy a punto de volverme loca porque en ocasiones no se qué hacer ante un problema y para colmo no soy muy buena con el Ingles.

Necesito hacer un grupo de menús, acomodados por bloques como la de la imagen 1.

Para empezar el menú no me crea los distintos submenús y colóquelo como lo coloque, llamándolo desde un bloque lo más que he logrado es que siga apareciendo en el menú de navegación como en la imagen 2.

//Implementación del menu
function provincia_menu(){
$items['provincia'] = array(
'title' => 'Gestionar Provincia',
'page callback' => 'provincia_gestionar',
'acces arguments' => array ('prov_gestionar'),
'access callback' => TRUE,
'type' => MENU_NORMAL_ITEM,
'weight' => -1,
);

$items['provincia/crear'] = array(
 'title' => 'Añadir',
 'page callback' => 'formulario_provincia_crear',
 'acces arguments' => array ('prov_gestionar'),
 'access callback' => TRUE,
 'type' => MENU_NORMAL_ITEM,
);
$items['provincia/listar'] = array(
 'title' => 'Listar',
 'page callback' => 'provincia_listar',
 'acces arguments' => array ('prov_gestionar'),
 'acces callback' => TRUE,
 'type' => MENU_NORMAL_ITEM,
);
return $items;

}

function provincia_gestionar (){
return t('Modulo para gestionar provincias');
}

function formulario_provincia_crear(){
$form = array();

$form['nom_prov'] = array(
 '#type' => 'textfield',
 '#title' => 'Nombre de la Provincia',
 '#size' => 50,
 '#maxlength' => 50,
 '#required' => TRUE,
);
$form['crea'] = array(
 '#type' => 'submit',
 '#value' => t('Crear'),
);
return $form;

}

function provincia_listar(){
return t('La lista que se mostrará');
}

Estoy a punto de querer evaporar la gotica de Drupal. Espero que me puedan ayudar y perdónenme si es que soy tan bruta como canuta :-D

AttachmentSize
Sin título-1.jpg 47.95 KB
Sin título-2.jpg 40.18 KB

Comments

En el .install de tu modulo

Posted by ruby232 on February 19, 2014 at 3:56pm

En el .install de tu modulo define el hook install y crea el menú o los que quieras.
/**
* Implements of hook_install().
/
function provincia_install() {
$menu = array(
'menu_name' => 'provincia',
'title' => t('Provincia menu'),
'description' => t('este es el menu de provincias'),
);
menu_save($menu);
cache_clear_all('
', 'cache_menu', TRUE);
}

después a los item en el hook menu agregale 'menu_name' => 'provincia'

Y ya automáticamente debe salirte el bloque, aclaro que debes limpiar cache o desactivar y volver a activar el modulo para que coja los cambios, hay veces que con limpiar cache no es suficiente.

Mas información en http://stackoverflow.com/questions/8007777/drupal-hook-to-create-module-...

Gracias por la ayuda.

Posted by yemore on February 19, 2014 at 6:36pm

Gracias por la ayuda. Conseguí ya que se viera el menú provincia, aparte del menú navegación. Lo desinstale e instale nuevamente para que pudiera crearse, como estaba trabajando en el hook_install. Pero me sigue arrastrando el error de que no me reconoce el link de listar, solo el de crear.

$items['provincia/crear'] = array(
 'title' => 'Añadir',
 'page callback' => 'formulario_provincia_crear',
 'acces arguments' => array ('prov_gestionar'),
 'access callback' => TRUE,
 'type' => MENU_NORMAL_ITEM,
 'menu_name' => 'provincia',
 'weight' => 1,
);
$items['provincia/listar'] = array(
 'title' => 'Listar',
 'page callback' => 'provincia_listar',
 'acces arguments' => array ('prov_gestionar'),
 'acces callback' => TRUE,
 'type' => MENU_NORMAL_ITEM,
 'menu_name' => 'provincia',
 'weight' => 2,
);

Puedes ser mas especifica

Posted by ruby232 on February 20, 2014 at 9:55pm

Puedes ser mas especifica cuando dices 'no me reconoce el link de listar, solo el de crear.', que no puedes acceder o que te da error cuando intentas entrar o que no se ve en el menú cuando lo muestras??

Disculpa por no explicarme bien.

Posted by yemore on February 21, 2014 at 1:04pm

Disculpa por no explicarme bien. Lo que sucede es que no se ve en el menú el link. No me da ningún error, simplemente no se muestra. El de añadir si y funciona perfecto mostrándome el formulario.

Resulta que en el listar

Posted by ruby232 on February 21, 2014 at 9:15pm

Resulta que en el listar tienes el 'acces' con una sola (s) y es 'access'.

:-o

Posted by yemore on February 24, 2014 at 1:48pm

:-o Tonta de mí, me lo comí y no lo vi.

Otra cosa en el 'access

Posted by ruby232 on February 21, 2014 at 9:21pm

Otra cosa en el 'access callback' se especifica que función comprueba los permisos y 'access arguments' los argumentos que se le pasan a esa función, si la funcion defuelve TRUE se tiene acceso de otra forma no.
Hora si especificas a 'access callback' como TRUE siempre se tiene acceso, la función por defecto es 'user_access' que se le pasa un arreglo de permisos y comprueba si el usuario logeado tiene permisos, por eso es que si solo se van a verificar permisos no es necesario definir 'access callback', lo puede quitar.

Muchas gracias.

Posted by yemore on February 24, 2014 at 1:53pm

Muchas gracias. Voy aclarándome con esto de Drupal poco a poco. Yo no soy muy buena estudiando sola y para colmo, casi toda bibliografía esta en ingles.

Otra preguntica

Posted by yemore on February 26, 2014 at 2:04pm

Otra preguntica, si no es molestar mucho. ¿Qué debería hacer para crear ahí mismo un menú desplegable? Supongamos que en vez de crear y listar, en el menú Provincia se me visualizara ahora los link provincia y municipio, y al marcar cualquiera de ellas se desplegara un submenú con otras opciones como Añadir y Listar.

  • Provincia
    • Añadir
    • Listar
  • Municipio

He probado con los distintos tipos de menú y nada. Solo he conseguido que me abra una nueva página con las opciones de Añadir y Listar en forma de pestañas.

Intenta crear un nuevo

Posted by ruby232 on February 27, 2014 at 11:51am

Intenta crear un nuevo ítem

$items['provincia'] = array(
'title' => 'Provincia',
'acces arguments' => array ('prov_gestionar'),
'access callback' => TRUE,
'type' => MENU_NORMAL_ITEM,
'menu_name' => 'provincia',
'weight' => 1,
);

No he probado crear un item sin calback, pero si te puedo decir que para que un item sea hijo de otro en el hook_menu, solo hay que hacer esto.

$items['padre'] ....
$items['padre/hijo'] ....

Ya está

Posted by yemore on March 3, 2014 at 5:01pm

El problema era que en el type de los hijos los tenía como MENU_CALLBACK. Decididamente no puedo seguir guiándome por el ejemplo que me dieron aquí en el trabajo, jajajajaja.

Argentina

Group organizers

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds:

AltStyle によって変換されたページ (->オリジナル) /