Crear múltiples bloques programáticamente

9

Estoy escribiendo un módulo personalizado para Drupal 7. Necesito crear 5 bloques diferentes con el módulo. Drupal tiene los ganchos hook_block_infoy hook_block_viewque crean bloques. ¿Cómo puedo agregar múltiples bloques ya que estos ganchos permiten solo un bloque por módulo?

eyurdakul
fuente

Respuestas:

19

El siguiente código debería ayudar. Obviamente, necesitará agregar sus 5 bloques según corresponda, pero es solo para mostrar cómo puede agregar múltiples bloques en un 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 => 1de los hook_block_info()documentos API:

estado: (opcional) Valor inicial para el estado de bloqueo habilitado. (1 = habilitado, 0 = deshabilitado). La mayoría de los módulos no proporcionan un valor inicial, y cualquier valor proporcionado puede ser modificado por un usuario en la pantalla de configuración del bloque.

No estoy seguro de dónde obtuviste la idea de un bloque por módulo. Puede crear tantos bloques como desee en un módulo.

Chapabu
fuente