Criando blocos programaticamente

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 jogar as informações 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:

1 - Implementação do hook_block_info().

2 - Implementação do hook_block_view().

Agora mãos ao código!

Vamos criar um módulo chamado custom_block_link, não sabe criar módules? Dá uma lida nesse post 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 a esse módulo.

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.

Como criar um módulo", conforme falei na parte 2, vou abordar agora como adicionar configurações específicas no módulo. Essas configurações são formulários em duas páginas diferentes. Em uma página, é pra escolher o comportamento padrão de cada vez que rodar o meu custom_deploy. A segunda, será onde vou rodar o custom_deploy, que irá se comportar de acordo o que defini na primeira página." data-share-imageurl="">