Extra Block Types (EBT) - Nueva experiencia con Layout Builder❗

Extra Block Types (EBT): tipos de bloques con estilo y personalizables: Presentaciones de diapositivas, Pestañas, Tarjetas, Acordeones y muchos más. Configuraciones integradas para fondo, DOM Box y plugins de JavaScript. Experimenta hoy el futuro de la construcción de diseños.

Módulos de demostración EBT Descargar módulos EBT

❗Extra Paragraph Types (EPT) - Nueva experiencia con Paragraphs

Extra Paragraph Types (EPT): conjunto de módulos basado en párrafos de forma análoga.

Módulos de demostración EPT Descargar módulos EPT

Scroll

Drupal 7 hook_block_info() y hook_block_view() muestran información en el bloque

11/05/2025, by Ivan

En la lección anterior creamos un módulo para Drupal 7. En esta lección continuaremos ampliando las capacidades de nuestro módulo. Añadiremos la salida de un bloque mediante los hooks hook_block_info() y hook_block_view(). Este bloque mostrará información sobre los últimos usuarios registrados en el sitio con enlaces a sus páginas de perfil.

Empezamos con la descripción de hook_block_info():

Define todos los bloques proporcionados por el módulo.

Este hook le dice a Drupal qué bloques generará el módulo y puede definir sus configuraciones.

En hook_block_info() cada bloque recibe un identificador único llamado "delta" (clave del array retornado). Este valor debe ser único dentro del módulo y se utiliza para:

  1. Pasarse como argumento a otros hooks para identificar el bloque.
  2. Crear la clase HTML block-MODULE-DELTA para personalización con CSS o JavaScript.
  3. Definir funciones de tematización específicas block__MODULE__DELTA.
  4. Identificar el bloque en hook_block_info_alter() y otros hooks.

El valor delta puede ser string o número, con una longitud máxima de 32 bytes.

Valores de retorno

Un array asociativo donde las claves son los delta de cada bloque, y los valores son arrays con la descripción del bloque. Un bloque puede tener las siguientes claves:

  • 'info' (obligatorio): nombre legible del bloque (usado en la administración).
  • 'cache' (opcional): define el comportamiento del caché:
    • DRUPAL_CACHE_PER_ROLE (por defecto)
    • DRUPAL_CACHE_PER_USER
    • DRUPAL_CACHE_PER_PAGE
    • DRUPAL_CACHE_GLOBAL
    • DRUPAL_NO_CACHE
  • 'properties' (opcional): array de metadatos como:
    • 'administrative': booleano
    • 'weight': peso inicial
    • 'status': 1 = habilitado, 0 = deshabilitado
    • 'region': región por defecto
    • 'visibility': visibilidad del bloque
    • 'pages': lista de rutas para visibilidad

Ejemplo de implementación:

<?php
function sitemade_block_info() {
    $blocks = array();
    $blocks[1]['info'] = 'Lista de usuarios';
    return $blocks;
}
?>

Este bloque aparecerá en la administración. Lo activamos en la barra lateral izquierda:

drupal block

hook_block_view($delta = '')

Parámetro:
$delta: identificador del bloque según lo definido en hook_block_info().

Valor de retorno: un array con las claves:

  • subject: título del bloque
  • content: contenido del bloque (string HTML o array renderizable)

Ejemplo de implementación:

<?php
function sitemade_block_view($delta = '') {
    $block = array();
    switch ($delta) {
        case 1:
            $block['subject'] = 'Usuarios';
            $block['content'] = '';
            $query = db_select('users', 'u')
                ->fields('u', array('uid', 'name'))
                ->orderBy('u.uid', 'DESC')
                ->range(0, 5)
                ->execute();
            $users = $query->fetchAll(PDO::FETCH_ASSOC);
            foreach ($users as $user) {
                $block['content'] .= '<div><a href="' . base_path() . 'user/' . $user['uid'] . '">' . $user['name'] . '</a></div>';
            }
        break;
    }
    return $block;
}
?>

Esto mostrará una lista de los últimos 5 usuarios registrados, con enlaces a sus perfiles. Aunque sería mejor usar la función l() de Drupal para generar los enlaces correctamente, esto se explicará en otra lección.

Drupal list users