Hero

Como crear bloques vía código en Drupal 7

Junio 07, 2013

andreyjose
Drupal
Desarrollo de Modulos

A continuación les mostrare como crear un bloque personalizado desde el código. El bloque creado estará disponible junto con bloques que vienen por defecto en Drupal.

  1. Declarar el bloque.

Para informar a Drupal de la existencia de nuestro bloque debemos hacer uso del hook hook_block_info() dentro de un módulo personalizado creado de la siguiente forma:

function MIMODULO_block_info(){
    $blocks['bloque_boton_editar'] = array(
    // Título del bloque en la configuración del administrador  
    'info' => t('Cuenta - Boton Editar'), 
    'cache' => DRUPAL_NO_CACHE,
  );
  return $blocks;
}

Como se observa en el código anterior, en este ejemplo se agregará un bloque que contendrá un ancla para redirigirse al la edición de un usuario.

  1. Definición del contenido del bloque.

Para definir el contenido del bloque se hará uso del hook hook_block_view() de la siguiente forma:

function MIMODULO_block_view($delta = '') {
  $block = array();
  switch ($delta) {
    case 'bloque_boton_editar':
      // Título del bloque.
      $block['subject'] = t('Boton Editar'); 
      // Función que retorna el contenido o función que se quiere en el bloque.
      $block['content'] = MIMODULO_boton_editar(); 
      break;
    }
    return $block;
}

La implementación del hook_block_view recibe como parámetro un $delta, el cual es el identificador único del bloque.

En el código anterior se llama una función creada para generar el contenido que se desea desplegar. En este caso se hizo un ancla que redirige a la edición del usuario.

3. Definición de función para contenido.

A continuación la función personalizada que genera el contenido.

function MIMODULO_boton_editar() {
  global $user;
  $user_uid = $user->uid;
  return l(t('Editar Cuenta'), "user/$user_uid/edit");
}

En la siguiente imagen se muestra como el bloque “Cuenta - Boton Editar” aparece en la administración de los bloques al ingresar a la página admin/structure/block

Por último se activa el bloque donde se desee, como resultado del ejemplo obtendremos lo siguiente

Imagen2

Espero que haya sido de su agrado.

Recibe consejos y oportunidades de trabajo 100% remotas y en dólares de weKnow Inc.