Оганичение вывода изображений в тизере drupal 7

Дата публикации: 21 02 2015 Автор: PazitiFF
В описании хука сказано, что он используется для изменения или добавления элеменов перед рендерингом сущнощности. Например обернуть элемент в какой нибудь div, используя свойство #markup (как показано в примере к хуку). В данном же случае, нужно применить php функцию array_slice, с помощью которой можно обрезать массив, указав нужную выборку. Приведённая ниже запись демонстрирует передачу в функцию массива данных (информация о картинках), номер элемента массива с которого нужно начать обрезку и количество последующих элементов
array_slice($entity->content['field_image']['#items'], 0, 1)
В нашем случае в функцию передаётся 0 и 1, для того чтобы она вернула нам один самый первый элемент (картинку). Затем обновляем значение $entity->content['field_image']['#items']. На самом деле всё очень просто! Ниже описано решение ограничения вывода картинок в тизере.
function MODULENAME_entity_view($entity, $type, $view_mode, $langcode) {
  if ($view_mode == 'teaser') {
    $entity->content['field_image']['#items'] = array_slice($entity->content['field_image']['#items'], 0, 1);
  }
}
Надеюсь моя заметка пригодится начинающим (и не только) друпаллерам. Буду рад комментариям и замечаниям.

Комментарии

Помогите пожалуйста с проблемой:
есть модуль метатегс и в нем в материалах настраивается изображение которое будет браться при публикации ссылки в снипете социальных сетей.
Так вот для этого надо добавить какой то токен. если добавить стандартный [node:field_image] то он выводит все ссылки на картинки, притом без использования стилей с вотермарками.
А хочется что бы бралась первая и со стилями.

Смотрю в сторону модуля Custom Tokens - но пока не могу найти код который бы смог сформировать такую ссылку...

p.s. ц вас на сайте нехватает подписаться на комментарии.

Тебе нужно обратиться к дельте мультивалуйного филда с картинкой. Для стилизованного поля можно сделать отдельное поле со стилилизаванной картинкой, но не выводить его в тексте, а тоолько в нужный тег. Насчёт дельты, попробуй посмотреть модуль https://www.drupal.org/project/token_formatters . Но конечно удобнее такие вещи программировать.

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

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Вы можете использовать подсветку исходного кода следующими тегами: <code>, <blockcode>, <apache>, <bash>, <css>, <drupal6>, <html5>, <javascript>, <mysql>, <php>.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.