Я использую следующие модули:
и хотел бы сделать миниатюру видео 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);
Как вы, ребята, это делаете?
media_youtube
в media_youtube
модуля 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);
Еще один пример, который позволяет отображать миниатюру видео (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
, потому что оно будет использовать разные объекты-обтекатели различными способами.
И если вы хотите напечатать оба пальца + видео, вы можете сделать это:
<?php print render($content['field_your_field']); ?>
Если вы в tpl и хотите использовать переменные $ – это будет что-то вроде:
<?php print render($variables['content']['field_url']['#object']->content['field_video']);?>
Hopu u может использовать его …