Skip to content

Drupal entendendo o hook_menu()

by Vinícius Krolow on dezembro 15th, 2008

Para criarmos menus no drupal, o mesmo tem a função hook_menu, que pode ser implementada em nossos módulos. Seu uso é bem simples:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
function meumodulo_menu() {
	$items = array();
	$items['admin/novo_item'] = array(
		'title' => 'Titulo', //Título que vai aparecer
		'description' => 'A descrição de nosso Item', //Descrição de nosso Item
		'page callback' => 'minhafuncao_page', //A função que iremos chamar
		'page arguments' => array('list'), //Parametros que desejamos passar para nossa função
		'file' => 'meumodulo.module', //O arquivo onde está sua função
		'access arguments' => array('meu modulo access'), //Definimos a permissão de acesso ao Item
		'type' => MENU_NORMAL_ITEM, //Definimos que o item é normal ou seja ele ira aparecer no menu de navegação
	);
	$items['admin/novo_item/add'] = array(
		'title' => 'Add Titulo', //Título que vai aparecer
		'description' => 'A descrição de nosso Item', //Descrição de nosso Item
		'page callback' => 'minhafuncao_page', //A função que iremos chamar
		'page arguments' => array('add'), //Parametros que desejamos passar para nossa função
		'file' => 'meumodulo.module', //O arquivo onde está sua função
		'access arguments' => array('meu modulo access'), //Definimos a permissão de acesso ao Item
		'type' => MENU_CALLBACK, //Definimos que o item vai ser acessado apenas por URL ou seja por links na página não no menu
	);
	$items['admin/novo_item/list'] = array(
		'title' => 'Titulo', //Título que vai aparecer
		'description' => 'A descrição de nosso Item', //Descrição de nosso Item
		'page callback' => 'minhafuncao_page', //A função que iremos chamar
		'page arguments' => array('list'), //Parâmetros que desejamos passar para nossa função
		'file' => 'meumodulo.module', //O arquivo onde está sua função
		'access arguments' => array('meu modulo access'), //Definimos a permissão de acesso ao Item
		'type' => MENU_DEFAULT_LOCAL_TASK, //Definimos que o item é a tarefa principal com isso criamos tabs para navegação e a tab principal é essa
	);
	$items['admin/novo_item/add'] = array(
		'title' => 'Add Titulo', //Título que vai aparecer
		'description' => 'A descrição de nosso Item', //Descrição de nosso Item
		'page callback' => 'minhafuncao_page', //A função que iremos chamar
		'page arguments' => array('list'), //Parâmetros que desejamos passar para nossa função
		'file' => 'meumodulo.module', //O arquivo onde está sua função
		'weight' => 1, //Definimos a posição da tab
		'access arguments' => array('meu modulo access'), //Definimos a permissão de acesso ao Item
		'type' => MENU_LOCAL_TASK, //Definimos que o item é a tarefa principal com isso criamos tabs para navegação e a tab principal é essa
	);
	$items['admin/novo_item/edit'] = array(
		'title' => 'Edit Titulo', //Título que vai aparecer
		'description' => 'A descrição de nosso Item', //Descrição de nosso Item
		'page callback' => 'minhafuncao_page', //A função que iremos chamar
		'page arguments' => array('edit'), //Parâmetros que desejamos passar para nossa função
		'file' => 'meumodulo.module', //O arquivo onde está sua função
		'access arguments' => array('meu modulo access'), //Definimos a permissão de acesso ao Item
		'type' => MENU_CALLBACK, //Definimos que o item vai ser acessado apenas por URL ou seja por links na página não no menu
	);
	$items['admin/novo_item/delete'] = array(
		'title' => 'Delete Titulo', //Título que vai aparecer
		'description' => 'A descrição de nosso Item', //Descrição de nosso Item
		'page callback' => 'minhafuncao_page', //A função que iremos chamar
		'page arguments' => array('edit'), //Parâmetros que desejamos passar para nossa função
		'file' => 'meumodulo.module', //O arquivo onde está sua função
		'access arguments' => array('meu modulo access'), //Definimos a permissão de acesso ao Item
		'type' => MENU_CALLBACK, //Definimos que o item vai ser acessado apenas por URL ou seja por links na página não no menu
	);
	$items['listagem'] = array(
	    'title' => 'Página dos dados',
	    'page callback' => 'minhafuncao_frontend',
	    'access callback' => TRUE, //Definimos que o acesso é liberado
	    'type' => MENU_CALLBACK,
	);
 
	return $items;
}

Com isso podemos ver que a estrutura é bem simples, o hash passado para o array é a url de acesso, e alguns parâmetros são pré-definidos, assim como constantes que definem o tipo de ação de cada item. Para mais informações acesse a documentação.

From → drupal, php, programação, web

No comments yet

Leave a Reply

Note: XHTML is allowed. Your email address will never be published.

Subscribe to this comment feed via RSS