Как сделать миниатюру 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 может использовать его...