Agregar videos de YouTube con Drupal
Utilizaremos el módulo feedAPI para agregar videos de YouTube en nuestro sitio Drupal.
YouTube nos proporciona una API para acceder al repositorio de videos, realizar busquedas, seleccionar videos por categorías, tags, usuarios, etc. Basicamente esta API nos proporciona un metodo para obtener en feed con los videos seleccionados a través de categorías, tags, busquedas, usuarios, etc.
Una ves que tengamos creado el feed, se lo daremos el modulo feedAPI y este nos creará nodos con los items del feed.
Luego con el theme mostraremos los nodos de la manera más apropiada.
Veamos un ejemplo:
Deseamos mostrar en nuestro sitio videos que tengan los tags patagonia y argentina.
El feed de youtube será: http://gdata.youtube.com/feeds/api/videos/-/patagonia/argentina
La explicación de cómo se crea la URL del feed se encuentra en la documentación de la API de YouTube.
Descargamos e instalamos el módulo feedAPI en nuestro servidor como se realiza normalmente con cualquier módulo contrib.
Descargamos SimplePie que lo utilizaremos junto con feedAPI, pero no viene incluido con feedAPI por problemas de licencia.
Copiamos el archivo simplepie.inc incluido en SimplePie, dentro del directorio feedapi/parser_simplepie/
Ingresamos a la administración de modulos y habilitamos:
- FeedAPI
- FeedAPI Nodes: con este módulo crearemos nodos con los items del feed.
- SimplePie parser: utilizaremos este parser con PHP4
El módulo FeedAPI al menos necesita dos tipos de contenido.
El tipo de contenido Feed: nodo que aloja la URL del feed. Este tipo de contenido ya fue creado al habilitar el modulo feedapi
El tipo de contenido Video: nodos que alojaran los items del feed. Este tipo de contenido tendremos que crearlo.
Creamos un nuevo tipo de contenido llamado "Video" de la siguiente forma:
Ingresamos a Tipos de contenido (admin/content/types) y luego en la solapa Añadir tipo de contenido.
Completamos:
Nombre: Video
tipo: video
Los demas valores dejamos los predeterminados y guardamos el tipo de contenido.
Ahora vamos a ingresar un feed de youtube y con los items del mismo creamos nodos Video.
Ingresamos a Crear contenido, luego a Feed y completamos:
Titulo: Videos de patagonia argentina.
Feed URL: http://gdata.youtube.com/feeds/api/videos/-/patagonia/argentina
Delete news items older than: Nunca
En la seccion processor:
The content-type of the items: video
Promoted items: 3
Esto ultimo significa que cuando se lea el feed, solo 3 items saldran a la pagina principal, los demas no saldran a portada.
Y Guardamos presionando Enviar.
Ya estamos listos para comenzar a crear nodos a partir de los items del feed.
Ingresamos a Administrar - > Feeds (admin/content/feed), presionamos Refresh y si esta todo bien configurado ya estaremos generando los nodos. Veremos 3 nuevos nodos en portada correspondientes a los videos.
Ahora vemos que los videos no se visualizan como uno desearia, para ello a continuación modificaremos el theme.
Theme.
Creamos dentro del directorio de nuestro themne, el archivo node-video.tpl.php que será el responsable de visualizar los videos como sea necesario.
Para nuestro caso deseamos visualizar:
En el teaser: el titulo y la imagen preliminar del video.
En el nodo completo: el titulo, la descripcion y el video embebido.
Asi quedaria nuestro node-video.tpl.php:
<?php
drupal_add_css(path_to_theme() .'/node-videos.css');
$videoid= substr_replace($node->links['feedapi_original']['href'], "", 0, 31);
?>
<?php if($teaser) {
?>
<div class="video <?php print $zebra; ?>">
<h2><a href="<?php print $node_url ?>" title="<?php print $title ?>"><?php print $title ?></a></h2>
<?php print $node->teaser; ?></a>
<a href="<?php print $node_url ?>"><img src="http://img.youtube.com/vi/<?php print $videoid; ?>/default.jpg"></a>
</div>
<?php
}
else {
?>
<div id="node-<?php print $node->nid; ?>" class="node<?php print " node-" . $node->type; ?><?php print ($sticky) ? " node-sticky" : ""; ?>">
<?php if (!$page && $title): ?>
<h2 class="title"><a href="<?php print $node_url; ?>" title="<?php print $title; ?>"><?php print $title; ?></a></h2>
<?php endif; ?>
<?php if ($submitted): ?>
<div class="info"> <?php print $picture; ?>
<?php if (theme('username', $node)): ?>
<?php print t('Posted by') . ' ' . theme('username', $node); ?> on <?php print $date; ?><?php print ($terms) ? ' in ' . $terms : ''; ?>
<?php endif ?>
</div>
<?php endif; ?>
<div class="content">
<?php print $body; ?>
<object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/<?php print $videoid; ?>&rel=1"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/<?php print $videoid; ?>&rel=1&autoplay=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object>
</div>
<?php if ($links): ?>
<div class="links"><?php print $links; ?></div>
<?php endif; ?>
</div>
<?php
}
?>Por último nos queda automatizar la descarga del feed, a través de una tarea cron.
- blog de Ariel
- Inicie sesión o regístrese para enviar comentarios
- 3397 lecturas
Hola.
Gracias por este artículo. Me ha ayudado mucho a entender el funcionamiento del módulo feedapi.
He intentado hacerlo pero me he quedado bloquedado en un paso. Tras crear el contenido "video", voy a intentar crear contenido/feed, pero no veo ninguna opción para añadir ningún feed. Sólo me aparece la opción de exportar la lista como opml (que está vacía) o bien importar un opml.
He hecho algo mal?
Gracias por la ayuda.
Para agregar el feed tienes que ir a Agregar contenido -> Feed (node/add/feedapi-node)
En el campo Feed URL va el feed.