it-swarm-es.com

¿Cómo usar el argumento $ delta?

¿Cómo uso el $delta argumento en hook_block?

Intenté usar uno, pero no hubo ningún efecto.

¿Cuál es la forma correcta de hacer esto?

5
enjoylife
/**
 * Implementation of hook_block().
 */
function YOURMODULE_block($op = 'list', $delta = 0, $edit = array()) {
  switch ($op) {
    case 'list':
      $blocks[0]['info'] = t('Block #1 name');
      $blocks[1]['info'] = t('Block #2 name');
      return $blocks;
    case 'view':
      $block = array();
      switch ($delta) {
        case 0:
          $block['content'] = t('Hello for block #1');
          break;
        case 1:
          $block['content'] = t('Hello for block #2');
          break;
      }
      return $block;
  }
}
3
Nikit

Como se señaló en otra parte, $ delta permite que un módulo devuelva muchos bloques. También puede ser más fácil de entender si tiene en cuenta que $ delta no necesita ser numérico. Es simplemente un identificador.

Utiliza el $ delta primero cuando responde a la 'lista' $ op. Cada clave en la matriz $ block que devuelva será un $ delta que se puede usar para configurar o representar ese bloque específico.

switch ($op) {
    case 'list':
      $block['sidebar-links']['info'] = t('Sidebar Links');
      $block['footer-links']['info'] = t('Footer Links');
      return $block;

Lo que esto le dice al sistema Drupal) es que el módulo en cuestión tiene dos bloques, uno de los cuales se identifica con "enlaces de barra lateral", el otro con "enlaces de pie de página".

Esto colocará dos bloques en la página de configuración admin/build/block. Si habilita ambos bloques, se representarán mediante llamadas a la 'vista' $ op con la clave de identificación como $ delta:

    case 'view':
      switch ($delta) {
        case 'sidebar-links': 
          $block['subject'] = t('Sidebar Links');
          $block['content'] = "super weak";
          break;
        case 'footer-links':
          $block['subject'] = t('Footer Links');
          $block['content'] = "super weak";
          break;
      }
      return $block;
  }

Como beneficio adicional, el uso de claves semánticas para sus bloques resultará en una identificación de CSS más fácil de leer. :)

9
Josh Koenig

Una implementación de HOOK_block () puede contener múltiples bloques. El argumento $ delta especifica a la función qué bloque generar. Ejemplo:

/**
 * Implementation of hook_block().
*/
function fightfi_block($op = 'list', $delta = 0) {
  $block = array();
  switch ($op) {
    case 'list':
      $block[0]['info'] = t('Sidebar Links');
      $block[1]['info'] = t('Footer Links');
      return $block;
    case 'view':
      switch ($delta) {
        case 0: 
          $block['subject'] = t('Sidebar Links');
          $block['content'] = "super weak";
          break;
        case 1:
          $block['subject'] = t('Footer Links');
          $block['content'] = "super weak";
          break;
      }
      return $block;
  }
} // end function fightfi_block
2
markdorison

Es mejor ver el módulo de ejemplo para todo tipo de drupal examples .. http://drupal.org/project/examples Encontrarás un ejemplo de bloque aquí ....

1
mohit_rocks