Buenas, he estado harto rato pegado buscando la solucion. Lo que necesito es que al pulsar un video me redirija a una pagina siguiente con su respectivo id, es decir, ejemplo pagina2?id=1.php.
Resulta que me falta que el evento onPlayerStateChange me pueda capturar las pulsaciones de los videos de youtube, pero solo me lo hace para el primer video y teniendo una lista de 10 videos no me redirije a la pagina siguiente como quiero.
$foto['id'] = muestra el id guardado en la base de datos
$foto['imagen'] = muestra la url del video
index.view.php
<head>
<script type="text/javascript">
var tag = document.createElement('script');
tag.src = "
https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubeIframeAPIReady() {
<?php foreach ($fotos as $foto):?>
var foto = '<?php echo $foto['imagen']; ?>';
player = new YT.Player('player01', {
height: '150',
width: '250',
videoId: youtube_parser(foto),
events: {
'onStateChange': onPlayerStateChange
}
});
//<?php endforeach; ?>
}
function onPlayerStateChange(event) {
if (event.data == 3) {
var href = document.querySelector('#player01').parentNode.getAttribute('href');
alert(href);
//window.location = href;
}
}
function youtube_parser(url){
var regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*/;
var match = url.match(regExp);
return (match&&match[7].length==11)? match[7] : false;
}
</script>
</head>
<section class="fotos">
<div class="contenedor">
<?php foreach ($fotos as $foto):?>
<div class="thumb">
<a href="foto.php?id=<?php echo $foto['id']; ?>" target="_blank">
<div id="player01">
<iframe src="<?php echo $foto['imagen']; ?>"></iframe>
</div>
</a>
</div>
<?php endforeach; ?>
</div>
</section>
index.php
<?php
require 'funciones.php';
$fotos_por_pagina = 5;
$pagina_actual = (isset($_GET['p']) ? (int)$_GET['p'] : 1);
$inicio = ($pagina_actual > 1) ? $pagina_actual * $fotos_por_pagina - $fotos_por_pagina :0;
$conexion = conexion('galeria_videos','root','');
if(!$conexion){
die();
}
$statement = $conexion->prepare("SELECT SQL_CALC_FOUND_ROWS * FROM videos LIMIT $inicio , $fotos_por_pagina");
$statement->execute();
$fotos = $statement->fetchAll();
if(!$fotos){
header('Location: index.php');
}
$statement = $conexion->prepare("SELECT FOUND_ROWS() AS total_filas");
$statement->execute();
$total_post = $statement->fetch()['total_filas'];
$total_paginas = ceil($total_post / $fotos_por_pagina);
require 'views/index.view.php';
?>