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?
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');
}
}