Как сделать миниатюру Youtube в шаблоне в Drupal 7

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

  • media
  • media_youtube
  • Стили

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

Моя лучшая проблема - это что-то вроде:

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

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

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

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

print theme('media_youtube_video',$my_media);

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

Ответ 1

Копаясь в коде модуля 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);

Ответ 2

Еще один пример, который позволяет отображать миниатюру видео (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, потому что он будет использовать разные объекты-оболочки с различными методами.

Ответ 3

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

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

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

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

Hopu u может использовать его...