Criando Vários Blocos Programaticamente

9

Estou escrevendo um módulo personalizado para o Drupal 7. Preciso criar 5 blocos diferentes com o módulo. Drupal tem os ganchos hook_block_infoe hook_block_viewque criam blocos. Como posso adicionar vários blocos, já que esses ganchos permitem apenas um bloco por módulo?

eyurdakul
fonte

Respostas:

19

O código a seguir deve ajudar. Obviamente, você precisará adicionar seus 5 blocos conforme apropriado, mas é apenas para mostrar como você pode adicionar vários blocos em um módulo:

function MYMODULE_block_info() {
 $blocks = array();
 $blocks['myfirstblock'] = array(
   'info' => t('My block admin info'),
   'status' => 1,
 );
 $blocks['mysecondblock'] = array(
   'info' => t('My second block admin info'),
   'status' => 1,
 );

 return $blocks;
}

function MYMODULE_block_view($delta = '') {
  $block = array();

  switch ($delta) {
    case 'myfirstblock':
      $block = array(
        'subject' => t('My first block title'),
        'content' => t('My first block content'),
      );
      break;
    case 'mysecondblock':
      $block = array(
        'subject' => t('My second block title'),
        'content' => t('My second block content'),
      );
      break;
  }

  return $block;
}

Motivo status => 1dos hook_block_info()documentos da API:

status: (opcional) Valor inicial para o status ativado por bloco. (1 = ativado, 0 = desativado). A maioria dos módulos não fornece um valor inicial e qualquer valor fornecido pode ser modificado por um usuário na tela de configuração do bloco.

Não sei de onde você tirou a ideia de um bloco por módulo. Você pode criar quantos blocos quiser em um módulo.

Chapabu
fonte