Drupal 7 свои атрибуты и классы для картинок, генерируемых с помощью Views 3

Думаю не стоит говорить о том, что такое Views, но иногда очень хочется поговорить о том, чем же крайне неудобен этот инструмент. И вот простая ситуация, нужно повесить свои классы и пару аттирибутов на изображение (тэг IMG если что), которое генерируется этим замечательным модулем. Как это сделать через UI? Никак, во всяком случае известными мне инструментами. Решение, как всегда, крайне хитрое:

12345678910111213141516171819202122232425
function template_preprocess_views_view_field(&$vars) {  $view = $vars['view'];   switch($view->name) {    case 'slider' : {      if($vars['field']->field == 'field_image') {        $image = $vars['row']->field_field_image[0]['raw'];        $vars['output'] = theme_image_style(array(          'style_name' => 'slide',          'path' => $image['uri'],          'width' => '',          'height' => '',          'alt' => $image['filename'],          'title' => $vars['row']->eck_slide_title,          'attributes' => array(            'class' => array('my-class','second-class'),            'data-special' => array('hello'),          ),        ));      }      break;    }    default : break;  }}

На самом деле, это решение далеко не идеал - ведь функция, стоящая html для картинки фактически запускается два раза. Думаю это и будет платой за быстрое построение Views, пока другие адекватные решения не нашёл. Странное решение через template_preprocess_image(), которое будет срабатывать по стилю изображения... а если этот стиль используется в двух совершенно разных местах? Гененировать кучу ненужных стилей?

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

Содержание этого поля является приватным и не предназначено для показа.

Plain text

  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.