如何在Drupal 7中的模板中渲染Youtube缩略图

时间:2011-11-19 20:46:11

标签: php drupal drupal-7

我正在使用以下模块:

  • media
  • media_youtube
  • 样式

并希望在模板(.tpl)中呈现Youtube视频的缩略图。我应该使用哪种主题功能以及什么样的参数?

我最好的问题是:

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

其中$ my_media是一个包含fid,uri,filename,filemime等的数组。

由于我对Drupal很新,所以我尝试理解模块源代码的尝试都失败了。我觉得我已经尝试了在youtube和样式模块中定义的样式名称的所有可能组合,但没有得到任何输出。

然后使用

渲染视频本身
print theme('media_youtube_video',$my_media);

你们是怎么做到的?

3 个答案:

答案 0 :(得分:12)

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); 您可以使用以下代码来渲染缩略图:

{{1}}

答案 1 :(得分:4)

还有一个例子,它可以使用您的自定义图像样式呈现视频缩略图(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 videoimage,因为它将使用不同的包装对象用不同的方法。

答案 2 :(得分:0)

如果你想要同时打印拇指+视频,你可以这样做:

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

如果您在tpl中并且想要使用$ variables - 它将类似于:

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

Hopu你可以使用它......