How to render a Youtube thumbnail in a template in Drupal 7

后端 未结 3 1430
Happy的楠姐
Happy的楠姐 2021-02-08 03:41

I am using the following modules:

  • media
  • media_youtube
  • Styles

and would like to render a thumbnail of a Youtube video in a templa

相关标签:
3条回答
  • 2021-02-08 03:54

    Digging around in the media_youtube module code there's a function that will build this up for you in includes/media_youtube.formatters.inc called media_youtube_file_formatter_image_view(). You can use code like the following to render the thumbnail image:

    // 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);
    
    0 讨论(0)
  • 2021-02-08 03:55

    One more example, which makes possible to render video thumbnail (vimeo, youtube, qbrick, etc.) with your custom image style.

    $file - File object that you can easily get from media field.

    $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
    ));
    

    Please note, that if you want to render also image, than you need to check $file->type if it's video or image, because it will use different wrapper objects with different methods.

    0 讨论(0)
  • 2021-02-08 04:01

    And if you want to print both thumb+video you could do this :

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

    If you in a tpl and want to use $variables - it will be something like:

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

    Hopu u can use it...

    0 讨论(0)
提交回复
热议问题