web-dev-qa-db-fra.com

Création de plusieurs blocs par programmation

J'écris un module personnalisé pour Drupal 7. J'ai besoin de créer 5 blocs différents avec le module. Drupal a le hook_block_info et hook_block_view crochets qui créent des blocs. Comment puis-je ajouter plusieurs blocs puisque ces crochets n'autorisent qu'un seul bloc par module?

9
eyurdakul

Le code suivant devrait vous aider. Vous devrez évidemment ajouter vos 5 blocs comme il convient, mais c'est juste pour montrer comment vous pouvez ajouter plusieurs blocs dans un module:

function MYMODULE_block_info() {
 $blocks = array();
 $blocks['myfirstblock'] = array(
   'info' => t('My block admin info'),
   'status' => 1,
 );
 $blocks['mysecondblock'] = array(
   'info' => t('My second block admin info'),
   'status' => 1,
 );

 return $blocks;
}

function MYMODULE_block_view($delta = '') {
  $block = array();

  switch ($delta) {
    case 'myfirstblock':
      $block = array(
        'subject' => t('My first block title'),
        'content' => t('My first block content'),
      );
      break;
    case 'mysecondblock':
      $block = array(
        'subject' => t('My second block title'),
        'content' => t('My second block content'),
      );
      break;
  }

  return $block;
}

Raison de status => 1 De hook_block_info() Documents API:

état: (facultatif) Valeur initiale pour l'état activé par bloc. (1 = activé, 0 = désactivé). La plupart des modules ne fournissent pas de valeur initiale, et toute valeur fournie peut être modifiée par un utilisateur sur l'écran de configuration de bloc.

Je ne sais pas d'où vous tenez l'idée d'un bloc par module. Vous pouvez créer autant de blocs que vous le souhaitez dans un module.

19
Chapabu