Динамическая ссылка на Youtube, чтобы открыть с Colorbox - PullRequest
2 голосов
/ 06 февраля 2012

Я хочу, чтобы ссылка на видео на YouTube открылась с помощью colorbox.Ссылка динамическая - я извлекаю канал из YouTube с помощью simplexml. Цветное окно отображается при нажатии, но оно пустое.Проверьте URL здесь: 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>

Большое спасибо заранее за любые идеи!

1 Ответ

1 голос
/ 20 февраля 2012

Я был прав, что мне нужно было вызывать URL для встраивания.Для этого мне пришлось извлечь идентификатор видео и вставить его в URL для встраивания для каждой записи.Если кто-то пытается сделать что-то подобное, вот рабочий код (ссылка выше не будет работать - она ​​была только для тестирования):

<?php

//Credits: Mixed some code from Vikram Vaswani (http://www.ibm.com/developerworks/xml/library/x-youtubeapi/), Matt (/5011402/poluchit-identifikator-video-youtube-iz-url-s-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
}
?>
...