¿Cómo creo un bloque estático mediante programación?


8

Quiero crear un bloque estático usando un módulo. No quiero usar el módulo Vistas para crear un bloque. ¿Alguien podría explicarme cómo crear un bloque estático mediante programación?

Ya he comprobado los módulos de ejemplo en Drupal, pero no me ayudó mucho. He comenzado el desarrollo del módulo Drupal recientemente y estoy luchando para hacerlo.

Respuestas:


21

Los ganchos importantes en el módulo de ejemplo Block son hook_block_info()y hook_block_view(). El enlace de información define su bloque en el sistema y el enlace de vista crea la salida (html) para su bloque.

Cada módulo, incluido el suyo, tendrá al menos un archivo .info y un archivo .module. Drupal.org tiene más documentación sobre los archivos .info que puede resultarle útil al comenzar con los módulos. La tuya realmente solo necesita las entradas namey core.

El archivo .module es donde implementará sus ganchos. Primero, implemente hook_block_info(), reemplazando 'hook' en el nombre de la función con el nombre de su módulo, por ej my_module_block_info(). Debería parecerse a lo siguiente.

function my_module_block_info() {    
  $blocks['your_block'] = array(
    // info: The name of the block.
    'info' => t('Your Block Name'),
  );

  return $blocks;
}

Luego, implemente su hook_block_view()gancho para definir el contenido estático.

function my_module_block_view($delta = '') {
  // The $delta parameter tells us which block is being requested.
  switch ($delta) {
    case 'your_block':
      // Create your block content here
      $block['subject'] = t('Title of first block (example_configurable_text)');
      $block['content'] = 'Your block content, or the result of a function that returns the content';
      break;
  }

  return $block;
}

Una vez que tenga eso en su lugar, puede colocar su bloque en cualquier región como lo haría con cualquier otro bloque en Drupal.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.