我正在使用以下模块:
并希望在模板(.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);
你们是怎么做到的?
答案 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
video
或image
,因为它将使用不同的包装对象用不同的方法。
答案 2 :(得分:0)
如果你想要同时打印拇指+视频,你可以这样做:
<?php print render($content['field_your_field']); ?>
如果您在tpl中并且想要使用$ variables - 它将类似于:
<?php print render($variables['content']['field_url']['#object']->content['field_video']);?>
Hopu你可以使用它......