En algunos casos, deseamos generar o definir varios bloques desde un mismo módulo.
Para ello en nuestro hook_block(), vamos a utilizar la variable $delta que nos permite diferenciar los bloques que definimos en el mismo módulo.
La documentación de hook_block() es un poco confusa al hablar de varios bloques y de la variable $delta que los controla. Dice: “$delta: Which block to return (not applicable if $op is 'list'). Although it is most commonly an integer starting at 0, this is not mandatory. For instance, aggregator.module uses string values for $delta”
Según mi experiencia, $delta nos sirve para identificar cada bloque y por ende es mucho más sencillo dar a cada bloque un nombre o identificador (el famoso $delta) en forma literal (un string) en vez de una forma numeral (un integer).Vea en este caso un ejemplo con strings de la misma API de Drupal.
A continuación, les muestro una parte del código a insertar en su módulo para crear dos bloques distintos.
<?php
/**
* Implementation of hook_block().
*
* Este hook define cuantos bloques son definidos por el módulo,
* y genera el contenido de los mismos.
*/
function mimodulo_block($op = 'list', $delta = '', $edit = array()) {
// El parámetro $op determina que tipo de información
// es requerida.
switch ($op) {
case 'list':
// Si $op es igual a "list", retornamos un array
// de description para cada bloque. Esta información
// sera útil para el administrador.
$blocks['bloque1'] = array(
'info' => t('Bloque 1'), // el nombre del bloque
);
$blocks['bloque2'] = array(
'info' => t('Bloque 2'),
);
return $blocks;
case 'view':
// Si $op es igual a “view”, generamos el contenido
// para el despliegue del bloque.
// El parámetro $delta nos indica que bloque queremos desplegar.
// Este parámetro ha sido definido en la sección “list”
switch ($delta) {
case 'bloque1':
// The subject is displayed at the top of the block. Note that it
// should be passed through t() for translation.
$block['subject'] = t('Bloque 1');
$block['content'] = t('Contenido del Bloque 1');
break;
case 'bloque2':
$block['subject'] = t('Bloque 2');
$block['content'] = t('Contenido del Bloque 2');
break;
}
return $block;
}
}
?>
En este caso, tendremos dos bloques con los $delta bloque1 y bloque2. Para habilitarlos, basta ir en admin/build/block/list.
Para seguir adelante con la generación de varios bloques desde un mismo módulo, les recomiendo este excelente post de Advomatic.


Comentarios
good!
muchas gracias!... entendí perfecto! :)
Excelente
Que bueno! :)
Enviar un comentario nuevo