2012-02-06 65 views
2

我正在试图链接到使用colorbox打开的YouTube视频。该链接是动态的 - 我使用simplexml从YouTube上拖动Feed。colorbox在点击时显示,但它是空白的。查看网址:http://revmiller.com/videos-youtube-custom.php。这里是链接的代码:<a class='youtube' href="<?php echo $watch; ?>" title="<?php echo $media->group->title; ?>"><img src="<?php echo $thumbnail;?>" /></a>动态Youtube链接使用Colorbox打开

非常感谢您提前任何想法!

+0

任何想法?我仍然无法查明问题,更不用说找出解决方案。也许我应该以不同的方式调用YouTube的链接来实现这个功能? – JCM 2012-02-09 11:49:15

+0

我想我可能已经发现了这个问题。我拉着“youtube.com/watch”网址,但我认为我应该拉动“youtube.com/embed”网址。如果任何人有任何关于如何做到这一点的见解,请分享。否则,我会继续搜索。 – JCM 2012-02-13 07:44:03

回答

1

我是对的,我应该一直在调用嵌入网址。为此,我必须提取视频ID并将其插入到每个条目的嵌入URL中。如果有人想要做类似的事情,这里是工作代码(上面的链接将不再工作 - 它仅用于测试):

<?php 

//Credits: Mixed some code from Vikram Vaswani (http://www.ibm.com/developerworks/xml/library/x-youtubeapi/), Matt (http://stackoverflow.com/questions/7221485/get-youtube-video-id-from-url-w-php), & Tim (http://groups.google.com/group/youtube-api-gdata/browse_thread/thread/fc1efc399f9cc4c/d1a48cf5d4389cf8?lnk=gst&q=colorbox#d1a48cf5d4389cf8), and then messed around with it to fit my needs. 

function getYoutubeId($ytURL) 
    { 
     $urlData = parse_url($ytURL); 
     //echo '<br>'.$urlData["host"].'<br>'; 
     if($urlData["host"] == 'www.youtube.com') // Check for valid youtube url 
     { 
      $query_str = parse_url($ytURL , PHP_URL_QUERY); 
      parse_str($query_str, $args); 
      $ytvID = $args['v']; 

      return $ytvID; 
     } 
     else 
     { 
      //echo 'This is not a valid youtube video url. Please, give a valid url...'; 
      return 0; 
     } 

    } 

// set feed URL 
$feedURL = 'your feed url here'; 

// read feed into SimpleXML object 
$sxml = simplexml_load_file($feedURL); 
?> 
    <h1 class="page-title">Video Gallery</h1> 
<?php 
// iterate over entries in feed 
foreach ($sxml->entry as $entry) { 
    // get nodes in media: namespace for media information 
    $media = $entry->children('http://search.yahoo.com/mrss/'); 

    // get video player URL 
    $attrs = $media->group->player->attributes(); 
    $watch = $attrs['url']; 

    // get video thumbnail 
    $attrs = $media->group->thumbnail[0]->attributes(); 
    $thumbnail = $attrs['url']; 

    //get video id 
    $videoid = $yt->videoid[0]; 

    // get <yt:duration> node for video length 
    $yt = $media->children('http://gdata.youtube.com/schemas/2007'); 
    $attrs = $yt->duration->attributes(); 
    $length = $attrs['seconds']; 

    // get <yt:stats> node for viewer statistics 
    $yt = $entry->children('http://gdata.youtube.com/schemas/2007'); 
    $attrs = $yt->statistics->attributes(); 
    $viewCount = $attrs['viewCount']; 

    // get <gd:rating> node for video ratings 
    $gd = $entry->children('http://schemas.google.com/g/2005'); 
    if ($gd->rating) { 
    $attrs = $gd->rating->attributes(); 
    $rating = $attrs['average']; 
    } else { 
    $rating = 0; 
    } 

    $videoId = getYoutubeId($watch); 
    ?> 
    <div class="item"> 
    <h1 class="video-title"> 
     <a class="youtube" href="http://www.youtube.com/embed/<?php echo $videoId ?>?rel=0&amp;wmode=transparent"><?php echo $media->group->title; ?></a> 
    </h1> 
    <p> 
     <span class="video-thumbnail"> 
     <a class="youtube" href="http://www.youtube.com/embed/<?php echo $videoId ?>?rel=0&amp;wmode=transparent" title="<?php echo $media->group->title; ?>"><img src="<?php echo $thumbnail;?>" /></a> 
     <br/>click to view 
     </span> 
    </p> 
    </div>  
<?php 
} 
?> 
相关问题