drupal 7 – Cómo agregar una identificación a un bloque

Pregunta:

Por ejemplo, tengo el código:

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

¿Cómo configurar dentro de este bloque los atributos de id o clase?

Respuesta:

No podrá agregar un attribute id o class al bloque en su implementación hook_block_view . En esta etapa, todavía no se trata del marcado del bloque en sí, sino solo del marcado de su contenido. Para establecer la id o class del marcado de bloque, necesitará usar hook_preprocess_block() o hook_process_block() para agregar variables utilizables a la plantilla block.tpl.php . Entonces necesitará usar las variables en la propia plantilla.

Afortunadamente, el archivo block.tpl.php predeterminado ya proporciona variables para los atributos id y class de su bloque ( $block_html_id y $classes ). En realidad, template_preprocess_block ya establece el id en 'block-' . $variables['block']->module . '-' . $variables['block']->delta . Entonces, en su caso, usando la plantilla predeterminada, su bloque tendrá block-contact-contact-block como id . Pero se puede cambiar si es necesario. En cualquier función del preprocesador, puede agregar y eliminar clases CSS manipulando las variables $classes_array . Ambos se ilustran en el siguiente código.

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

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım