Como crear un campo de video (youtube) a medida en Drupal 7
Vamos a ver paso por paso como podemos crear un campo personalizado en un tipo de contenido de Drupal, de manera que traduzca el enlace de un video de youtube en la miniatura del video (en formato teaser) y el player de vídeo (en el formato de página única)
Conceptualmente lo que hay que hacer es traducir el contenido del campo:
http://www.youtube.com/watch?v=AhM4tyL5d6I&feature=feedwll&list=WL
Si conseguimos el id del vídeo, en el caso anterior "AhM4tyL5d6I" el resto es muy fácil, la miniatura será
http://img.youtube.com/vi/AhM4tyL5d6I/default.jpg
y el reproductor de video <iframe src='http://www.youtube.com/embed/$youtube_id' width='480' height='360' frameborder='0'></iframe>
El resto depende de Drupal 7. Para conseguirlo deberemos seguir los siguientes pasos:
- Crear un tipo de contenido llamado por ejemplo "video"
- En este tipo de contenido añadir un campo de texto llamado "field_video"
- En la carpeta del tema que estemos utilizando crear una plantilla para el tipo de contenido "video", que se deberá llamar, node--video.tpl.php
- En el código de esta plantilla escribir:
- <?phpforeach( $field_video as $key=>$val){ $url=$val['value']; //esto se podria mejorar, estamos suponiendo url del tipo http://www.youtube.com/watch?v=CAjwCCS8l8g parse_str( parse_url( $url, PHP_URL_QUERY ), $my_array_of_vars );$youtube_id=$my_array_of_vars['v']; if($teaser){ //poner thumb linkado a nodo print "<a href='$node_url'><img src='http://img.youtube.com/vi/$youtube_id/default.jpg' alt='video'/></a>"; }else{ print "<iframe src='http://www.youtube.com/embed/$youtube_id' width='480' height='360' frameborder='0'></iframe>"; } } // resto del nodo hide($content['comments']); hide($content['links']);hide($content['field_video']); print render($content); ?>
- Borrar la caché en "settings/performance", cada vez que queremos probar el resultado
- Dar permisos al rol que queramos para poder crear este tipo de contenido