Php 如何在Drupal 7中的模板中呈现Youtube缩略图
我正在使用以下模块:Php 如何在Drupal 7中的模板中呈现Youtube缩略图,php,drupal,drupal-7,Php,Drupal,Drupal 7,我正在使用以下模块: 媒体 媒体与youtube 风格 并希望在模板(.tpl)中呈现Youtube视频的缩略图。我应该使用哪个主题函数,使用什么参数 我最好的任务是: $my_media['style_name'] = 'unlinked_thumbnail'; print theme('file_styles',$my_media); <?php print render($variables['content']['field_url']['#object']->cont
- 媒体
- 媒体与youtube
- 风格
$my_media['style_name'] = 'unlinked_thumbnail';
print theme('file_styles',$my_media);
<?php print render($variables['content']['field_url']['#object']->content['field_video']);?>
其中$my_media是一个数组,包含fid、uri、文件名、filemime等
因为我对Drupal非常陌生,所以我所有理解模块源代码的尝试都失败了。我觉得我已经尝试了youtube和styles模块中定义的所有可能的样式名称组合,但没有得到任何输出
然而,渲染视频本身使用
print theme('media_youtube_video',$my_media);
你们是怎么做到的 在
media\u-youtube
模块代码中挖掘,在includes/media\u-youtube.formatters.inc
中有一个函数,名为media\u-youtube\u-file\u-formatter\u-image\u-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);
如果您想同时打印thumb+视频,可以执行以下操作:
<?php print render($content['field_your_field']); ?>
如果您在tpl中希望使用$variables,它将类似于:
$my_media['style_name'] = 'unlinked_thumbnail';
print theme('file_styles',$my_media);
<?php print render($variables['content']['field_url']['#object']->content['field_video']);?>
Hopu u可以使用它…还有一个示例,它可以使用自定义图像样式渲染视频缩略图(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
是否为视频或图像,因为它将使用不同的包装器对象和不同的方法。您能告诉在vide tpl或其他内容中在何处添加这段代码吗?