Программная генерация Picture элемента в Drupal 7

Осваивал на днях модули Breakpoints, Picture и столкнулся с вопросом как же программно сгенерировать этот самый <picture> тэг с содержимым. Понятное дело, что нужно использовать theme_picture(), однако не сразу разберешься какие параметры и в каком виде передавать. Именно поэтому и решил сохранить данный код в блоге.

  1. // Loads an image object.
  2. $image = field_get_items('node', $node, MY_IMAGE_FIELD_MACHINE_NAME);
  3.  
  4. // Loads a Picture conf.
  5. $picture_mapping = picture_mapping_load(MY_PICTURE_MAPPING_MACHINE_NAME);
  6. $fallback = MY_IMAGE_STYLE_MACHINE_NAME;
  7. $breakpoints = picture_get_mapping_breakpoints($picture_mapping, $fallback);
  8.  
  9. // Creates an output html.
  10. $output = theme('picture', array(
  11. 'uri' => $image[0]['uri'],
  12. 'style_name' => $fallback,
  13. 'breakpoints' => $breakpoints,
  14. 'alt' => t('Alt example'),
  15. 'title' => t('Title example'),
  16. 'attributes' => array('class' => array('my-class')),
  17. ));

У модуля Picture правда есть один нюанс: он постоянно создает атрибуты Alt и Title, даже если они пустые. По этому случаю я создал патч, который, надеюсь, попадет рано или поздно в модуль.

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

  .d8888b.    .d8888b.   888       888b    888 
d88P Y88b d88P Y88b 888 8888b 888
Y88b. d88P Y88b. d88P 888 88888b 888
"Y88888" "Y88888" 88888b. 888Y88b 888
.d8P""Y8b. .d8P""Y8b. 888 "88b 888 Y88b888
888 888 888 888 888 888 888 Y88888
Y88b d88P Y88b d88P 888 d88P 888 Y8888
"Y8888P" "Y8888P" 88888P" 888 Y888


Зарегистрируйтесь для добавления материалов без проверки.