Как сделать миниатюру Youtube в шаблоне в Drupal 7 - PullRequest
10 голосов
/ 20 ноября 2011

Я использую следующие модули:

  • СМИ
  • media_youtube
  • Стили

и хотел бы отобразить миниатюру видео с YouTube в шаблоне (.tpl). Какую функцию темы использовать и с какими параметрами?

Моим лучшим заданием будет что-то вроде:

$my_media['style_name'] = 'unlinked_thumbnail';
print theme('file_styles',$my_media);

где $ my_media - массив, содержащий fid, uri, имя файла, filemime и т. Д.

Поскольку я очень новичок в Drupal, все мои попытки разобраться в исходном коде модулей потерпели неудачу. Мне кажется, что я попробовал все возможные комбинации имен стилей, определенных в модуле youtube и styles, но не получил никакого вывода.

Рендеринг самого видео, однако, работает просто отлично, используя

print theme('media_youtube_video',$my_media);

Как вы, ребята, делаете это?

Ответы [ 3 ]

12 голосов
/ 20 ноября 2011

Копаясь в коде модуля media_youtube, есть функция, которая создаст это для вас в includes/media_youtube.formatters.inc, которая называется media_youtube_file_formatter_image_view().Вы можете использовать код, подобный следующему, чтобы отобразить миниатюру изображения:

// Make sure the correct include file is loaded
module_load_include('inc', 'media_youtube', '/includes/media_youtube.formatters.inc');

// Load the file
$file = file_load($my_media['fid']);

// Set up the settings array with your image style
$display['settings'] = array('image_style' => 'unlinked_thumbnail');

// Get the render array for the thumbnail image
$image_render_array = media_youtube_file_formatter_image_view($file, $display, LANGUAGE_NONE);

// Render it
print render($image_render_array);
4 голосов
/ 13 декабря 2013

Еще один пример, который позволяет визуализировать миниатюру видео (vimeo, youtube, qbrick и т. Д.) С вашим собственным стилем изображения.

$file - Файловый объект, который вы можете легко получить из поля мультимедиа.

$wrapper = file_stream_wrapper_get_instance_by_uri($file->uri);
$image_uri = $wrapper->getLocalThumbnailPath();

$image_rendered = theme('image_style', array(
  'style_name' => 'YOUR_IMAGE_STYLE_HERE',
  'path' => $image_uri
));

Обратите внимание, что если вы хотите визуализировать также изображение, вам нужно проверить $file->type, если оно video или image, потому что оно будет использовать разные объекты-оболочки с разными методами.

0 голосов
/ 19 июля 2012

И если вы хотите напечатать оба видео + видео, вы можете сделать это:

<?php print render($content['field_your_field']); ?>

Если вы в tpl и хотите использовать переменные $ - это будет что-то вроде:

<?php print render($variables['content']['field_url']['#object']->content['field_video']);?>

Хопу, ты можешь использовать это ...

...