Question

Comment puis-je utiliser l'argument $delta dans hook_block?

J'ai essayé une occasion, mais il n'y avait aucun effet.

Quelle est la bonne façon de le faire?

Était-ce utile?

La solution

/**
 * 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;
  }
}

Autres conseils

Comme indiqué ailleurs, $ delta permet un module de retour de blocs. Il peut également être plus facile à comprendre si vous gardez à l'esprit que le delta $ ne doit pas être numérique. Il est tout simplement un identifiant.

Vous utilisez le delta $ d'abord pour répondre à l'$ op « liste ». Chaque clé du tableau de bloc $ vous revenez sera un delta $ qui peut être utilisé pour configurer ou rendre ce bloc spécifique.

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

Ce que cela dit le système Drupal est que le module en question comporte deux blocs dont l'un est identifié par « liens de barre latérale », l'autre par « Pied de page des liens ».

Cela placera deux blocs sur l'admin / build / block page de configuration. Si vous permettre aux deux blocs, ils seront ensuite rendus par des appels à la « vue » $ op avec la clé identifiant comme le 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;
  }

En prime, à l'aide des clés sémantiques pour vos blocs entraînera plus facile à lire id en CSS. :)

Une mise en œuvre de HOOK_block () peut contenir plusieurs blocs. L'argument delta $ Précise à la fonction qui bloquent la sortie. Exemple:

/**
 * 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

Il est préférable de voir le module exemple pour toutes sortes d'exemples drupal .. http://drupal.org/project/examples Vous trouverez par exemple bloc ici ....

Licencié sous: CC-BY-SA avec attribution
Non affilié à drupal.stackexchange
scroll top