Drupal → Разрешить html теги в заголовке определённых блоков

11.01.2015

Один из способов разрешить html в заголовках определённых блоков:

/**
 * Preprocess vars for block.tpl.php.
 */
function THEMENAME_preprocess_block(&$vars) {
  static $blocks_with_html_subject = array(
    'webform:client-block-3',
    'block:2',
  );
  if (in_array($vars['block']->module . ':' . $vars['block']->delta, $blocks_with_html_subject)) {
    $vars['block']->subject = $vars['block']->title;
  }
}

В $blocks_with_html_subject указываются блоки в формате имя_модуля:дельта

Если лень самостоятельно указывать блоки, то можно разрешить html заголовки для всех блоков, позаботившись при этом о xss:

/**
 * Preprocess vars for block.tpl.php.
 */
function THEMENAME_preprocess_block(&$vars) {
  // Allow html title
  if ($vars['block']->title != '<none>' && strpos($vars['block']->title, '<') !== FALSE) {
    $vars['block']->subject = filter_xss($vars['block']->title, array('span', 'div', 'a'));
  }
}
Написанное актуально для
Drupal 7
Похожие записи

Комментарии

АндрЭ
11.03.2015, 15:49

Заметил такой еще такой способ, как вывести HTML разметку в заголовке блока, без дополнительных модулей / хуков.
Фишка в том, если у нас блок сгенеренный вьюхой,
то в настройках "Заголовка блока" этой вьюхи можно использывать разметку, и она будет выводиться как разметка. Главное что бы в настройках самого блока не был переопределен заголовок.

И там в настройках "Block titles format" выбрать формат ввода

Добавить комментарий