Salve meus amigos!

Conforme prometido, lanço hoje a segunda parte do tutorial de desenvolvimento de um módulo do Drupal. Na primeira parte, apresentei a funcionalidade do módulo, e o básico, a criação do arquivo .info, e o início da construção do módulo, com o arquivo .module, que nada mais é um arquivo .php.

Lembrando que este tutorial foi totalmente baseado neste tutorial do Drupal.org.

Vamos agora revisar as interfaces e links que deverão ser criados:

  • Um bloco, com duas exibições: o bloco propriamente dito, e também a listagem na página de administração de blocos;
  • Uma página de administração;
  • Um link para a página de Administração;
  • Uma página de ajuda;
  • A configuração de permissões do bloco (qual papel de usuário poderá acessar a página de administração);

Todas estas opções serão criadas através hooks (em português, ganchos), que são funções especiais que criam as interfaces do Drupal. A regra diz que um hook tem que seguir a seguinte sintaxe: function nomedomodulo_nomedohook(parâmetros) { //conteudo do hook }.

Abaixo, estão listados todos os Hooks utilizados no módulo:

citação:

<?php
// $Id$

function donatepagseguro_help($path, $arg) {
// cria a pagina de ajuda

} // function donatepagseguro_help

function donatepagseguro_perm() {
// cria o controle de permissoes

} // function donatepagseguro_perm()

function donatepagseguro_block($op = 'list', $delta = 0, $edit = array()) {
// cria o(s) bloco(s) do modulo

} // function donatepagseguro_block()

function donatepagseguro_admin() {
// cria a administracao do bloco

} // function donatepagseguro_admin()

function donatepagseguro_admin_validate($form, &$form_state) {
Faz a validação do formulario da pagina de administracao

} //function donatepagseguro_admin_validate()

function donatepagseguro_menu() {
// cria o link do menu

} //function donatepagseguro_menu()

Em cada um dos hooks, eu linkei para a respectiva página do mesmo na página de API do Drupal. Observer que donatepagseguro_admin() não é um hook. Por isso, o conteúdo dele pode ser construído da forma que quisermos.

Legal. No tutorial de hoje, vamos construir a página de ajuda e as permissões.

A página de ajuda (o hook _help)

Para a ajuda do usuário, eu quero criar duas mensagens:

  • Na página de configuração do módulo, será exibido a seguinte mensagem: Para utilizar este módulo é necessário criar uma conta no PagSeguro., juntamente com um link apontando a página de ajuda, onde serão fornecidos mais informações.
  • Na página de ajuda, será exibida a mensagem: Um módulo simples que habilita um bloco com o botão de Doação do PagSeguro no site. Para fazer uso deste módulo, é necessário que você tenha ou crie uma conta no PagSeguro. Para se cadastrar, acesse esta página e clique em "Cadastre-se Já".

Isso será feito usando o hook _help, como foi dito:

citação:

function donatepagseguro_help($path, $arg) {
$output = ''; //declare your output variable
switch ($path) {
case "admin/help#donatepagseguro":
$output = '

'. t("Um m&oacute;dulo simples que habilita um bloco com o bot&atilde;o de Doa&ccedil;&atilde;o do PagSeguro no site.") .'

';
$output .= '

<

p>' . t('Para fazer uso deste m&oacute;dulo, &eacute; necess&aacute;rio que voc&ecirc; tenha ou crie uma conta no PagSeguro. Para se cadastrar, acesse esta p&aacute;gina e clique em "Cadastre-se J&aacute;".') . '

<

p>';
break;
case "admin/settings/donatepagseguro":
$output = '

'. t('Para utilizar este m&oacute;dulo &eacute; necess&aacute;rio criar uma conta no PagSeguro.') .'

';
break;
}
return $output;
} // function donatepagseguro_help

Observe que este hook recebe dois parâmetros, as variáveis $path (caminho) e $arg. O $path, que nada mais é que o endereço das páginas onde as mensagens serão impressas, é o que será utilizado no tutorial. Não é necessário usar as $args, mas eventualmente, posso voltar a tratar delas.

O que foi feito dentro desta função:

Declaro uma variável, chamada $output, cujo conteúdo será a mensagem de ajuda.
Eu testo o valor da variável $path, utilizando um switch: Se o usuário estiver acessando for admin/help#donatepagseguro, o valor de $output será X, caso o caminho que o usuário estiver acessando for admin/settings/donatepagseguro, o valor de $output será Y. por fim, eu retorno o valor da variável (return $output);

As permissões (o hook _perm)

Criar permissões para um módulo é muito simples. A documentação do Drupal sugere que você siga a forma "verbo_acao nome_do_modulo". Por exemplo, "administrar donatepagseguro", "acessar donatepagseguro", etc.

As permissões do módulo PagSeguro ficaram assim:

citação:

function donatepagseguro_perm() {
return array('Administrar Donate PagSeguro');
} // function donatepagseguro_perm()

Simples assim. Se por acaso, o módulo tiver vários acessos a partes diferentes do módulo, basta declarar os acessos em linha, separados por vírgula:

citação:

function donatepagseguro_perm() {
return array('Administrar blá', 'Acessar blá', 'Acessar bló');
} // function donatepagseguro_perm()

Mais na frente no tutorial, iremos associar a regra de acesso a um item do menu, que será criado utilizando o hook _menu.

E por Hoje é só pessoal!! Nos vemos na próxima semana, na mesma bat-hora e no mesmo bat-canal.

Comentários

Gabriel Roque

simples e bem explicado
assim que o tempos estiver ao meu favor, sairei da teoria e entrarei na prática
\o/
Abraço

Makoto

Eu estou customizando um módulo, na verdade uma página de exibição deste módulo, e acabei escrevendo muito javascript na string de retorno da função que cria a página.

Existe algum jeito de deixa o js em um arquivo separado e apenas adicioná-lo à página na string de retorno?

abraço!

Rene

no exemplo model 2,,,,poderia me ajudar,,onde eu salvo o codigo que ele fez.....

Anônimo

cara achei que era uma aula de como criar modulos para
php,não isso foda-se

Gabriel

Muito bom, estarei seguindo isto, estou criando um módulo para drupal 6, e não peguei o 7 já que se mostrou bem instavel para a minha página, gostaria de saber se no hook perm não ficaria return array('Administrar donatepagseguro'); em vez de return array('Administrar Donate PagSeguro');

Parabéns pelo ótimo material, está me ajudando muito o seu exemplo, estou também seguindo a documentação oficial, muito obrigado e continue assim.

Gabriel

Agora entendi, quando fui para a parte 3, entendi o porque do Donate PagSeguro.
^^

Comentar