Tudo bem, galera? Em um projeto web, seja ele site, portal, intranet, rede social ou qualquer outro, é comum ter seções que precisam de destaque, tanto na home quanto em landing pages. Por exemplo, em um portal de notícias temos as seguintes seções: Esportes, Tempo e Empregos.
O diretor do portal quer dar destaque a essas informações na home. Então, como faremos para apresentar essas informações? Não podemos simplesmente jogá-la na tela. Para resolver essa situação, podemos separar essas seções em blocos de informação. Desta forma, facilitamos o acesso à informação dentro do portal.
Com isso em mente, a missão de hoje é criar um bloco programaticamente. Iremos implementar um bloco de links, coisa bem simples. Segue o passo a passo:
- Implementação do hook_block_info()
- Implementação do hook_block_view()
Agora, mãos ao código!
Vamos criar um módulo chamado custom_block_link. Não sabe como criar um? Dá uma lida nesse artigo sobre como criar um módulo.
Com o módulo já criado e habilitado, vamos para o arquivo custom_block_link.module.
Passo 1
Implementação do hook_block_info():
/** * Implements hook_block_info(). */ function custom_block_link_block_info() { $blocks['custom_block_link'] = array( 'info' => t('Block of links'), 'cache' => DRUPAL_NO_CACHE, ); return $blocks; }
Vamos entender?
Implementamos o hook_block_info() para informar ao Drupal que existe blocos associados ao nosso módulo. Caso não tenha esse hook no módulo, o Drupal enderá que não exitem blocos para serem associados.
Na linha 5 criamos uma chave para identificar o bloco. Na chave info é atribuído um texto que será exibido na área administrativa dos blocos. A chave cache é informada para não armazenar as informações em cache.
Passo 2
Implementação do hook_block_view():
/** * Implements hook_block_view(). */ function custom_block_link_block_view($delta = '') { $block = array(); if ($delta == 'custom_block_link') { $items = array( 'api' => l(t('Api Drupal'), 'http://api.drupal.org/'), 'modules' => l(t('Modules Drupal'), 'http://drupal.org/search/site?f[0]=ss_meta_type%3Amodule'), 'themes' => l(t('Themes Drupal'), 'http://drupal.org/search/site/?f[0]=ss_meta_type%3Atheme'), ); $block['subject'] = t('Useful links'); $type = 'ul'; $attributes = array('id' => 'links'); $block['subject'] = t('Useful links'); $block['content'] = theme('item_list', (array('items' => $items, 'title' => '', 'type' => $type, 'attributes' => $attributes))); } return $block; }
O hook_block_view() é responsável por construir o conteúdo do bloco. Nele verificamos a chave criada no hook_block_info. o Drupal irá procurar por essa chave para criar o nosso bloco.
Na linha 9, criamos uma variável com o conteúdo do nosso bloco. Na chave subject adicionamos um título para o bloco. A chave content recebe o HTML de uma lista com os valores passados na variável $items.
A tela abaixo mostra o nosso bloco na área de administração de blocos:
Agora vamos adicionar o nosso bloco no Sidebar second:
Bloco adicionado com sucesso!
Bom galera, é isso! Qualquer dúvida, crítica ou sugestão é só deixar um comentário.
Até a próxima!
***
Artigo original disponível em: http://drupaldeelite.com.br/blog/criando-blocos-programaticamente