web-dev-qa-db-fra.com

Comment ajouter un identifiant à un bloc

Par exemple, j'ai le code:

function contact_block_view($delta = '') {
$block = array();
switch ($delta) {
  case 'contact_block':
  $block['content'] = drupal_get_form('contact_form');
break;  
}
return $block; 
}

Comment définir à l'intérieur de ce bloc les attributs id ou class?

6
croppio.com

Vous ne pourrez pas ajouter une id ou une classe attribute au bloc dans votre implémentation hook_block_view . À ce stade, vous ne vous occupez pas encore du balisage du bloc lui-même, mais uniquement du balisage de son contenu. Afin de définir le id ou class du balisage de bloc, vous devrez utiliser hook_preprocess_block() ou hook_process_block() pour ajouter une variable utilisable au modèle block.tpl.php . Ensuite, vous devrez réellement utiliser les variables dans le modèle lui-même.

Heureusement, le fichier par défaut block.tpl.php Fournit déjà des variables pour les attributs id et class de votre bloc ($block_html_id Et $classes). En fait, template_preprocess_block définit déjà l'ID sur 'block-' . $variables['block']->module . '-' . $variables['block']->delta. Donc dans votre cas, en utilisant le modèle par défaut, votre bloc aura block-contact-contact-block Comme id. Mais il peut être modifié si nécessaire. Dans toutes les fonctions de préprocesseur, vous pouvez ajouter et supprimer des classes CSS en manipulant des variables $classes_array. Les deux sont illustrés dans le code suivant.

function MODULE_preprocess_block(&$variables) {
  if ($variables['block']->module == 'contact' && $variables['block']->delta == 'contact_block') {
    $variables['block_html_id'] = drupal_html_id('your-id-here');
    $variables['classes_array'][] = drupal_html_class('your-class-here');
  }
}
12
Pierre Buyle