En algunas ocaciones nos topamos con un problema que, aunque poco usual, a los que somos mas diseñadores web que programadores nos mete en un problema. Algunas personas desean tener separados su sitio web a su blog, y muchas veces utilizan servicios gratuitos como blogger para hospedarlos ya que les parece sencillo actualizarlos por si mismos. El problema llega cuando vienen a nosotros y nos piden incrustar los últimos post de su blog en su página web.
Para esto existes varias librerias que crean la función, algunos mejores que otros. En mi caso particular el que mejores parametros me brindo fue Simplepie, un poderoso lector de feeds que a diferencia de un lector RSS este se encarga de leer varios formatos de RSS y Atom, permitiendo crear cache, parsear feeds, verificando el formato y obtener la información que deseamos.
El formato de ayuda que encontre en varios blogs fue básico, en algunos solo leía el post colocando titulo y teaser (extracto, resumen o como le quieran llamar), pero yo necesitaba que leyera la imagen del post y colocara el clásico letrero al final de “leer mas”. Además de esto me tope con errores de lectura que uno aveces no toma en cuenta o no piensa que podrían pasar, como el leer listas, encabezados y etcs que pueden arruinar el formato que teniamos predestinado.
Aquí les comparto el código que use, a manera practicamente de un “pastie” para que lo coloquen lo usen y lo aumenten (sería agradable que compartieran su experiencia y los complementos que usen)
Primero hay que descargar el fichero de la página oficial de Simplepie, después, lo que hay que hacer es montar los parametros iniciales para que Simplepie funcione en nuestro archivo:
[code]<?php
require(“simplepie.inc”); //adjuntamos este archivo para que funcione simplepie
$feed = new SimplePie(); //creamos un nuevo objeto del tipo SimplePie que usaremos para leer los feeds
$feed->set_feed_url(“http://tublog.blogspot.com/feeds/posts/default“); //la direccion de la cual leera los feeds
$feed->strip_htmltags(array_merge($feed->strip_htmltags, array(‘h1’, ‘a’, ‘img’))); //esta en este caso elimina los estilos de h1, a e img para que podamos darle estilos propios con el css de nuestro documento
$feed->init(); $feed->handle_content_type();
?>[/code]
Esto debe ser colocado al inicio del documento (de preferencia). Después dentro de nuestro archivo, donde se vaya a colocar la incrustación de los post. Escribimos lo siguiente, que basicamente es la creación de un bucle para leer cada uno de los post y la utilización de sus elementos:
[code]
<div id= “columna”> //contenedor opcional
<ul> // creamos la lista
<?php
$max = $feed->get_item_quantity(3); // aquí delimitamos el número de post que vamos a colocar, en este caso “3”
for ($x = 0; $x < $max; $x++): //creamos el bucle
$item = $feed->get_item($x);
?>
<li>
<?php if ($enclosure = $item->get_enclosure()){ ?> // nos permite leer propiedades especificas, en este caso de las imagenes
<div><?php echo ‘<img src=”‘ . $enclosure->get_thumbnail() . ‘” width=”90″ alt=”‘ . ‘” />’; ?> </div> //definimos las dimensiones de la imagen
<div><a href=”<?php echo $item->get_link(); ?>”><?php echo $item->get_title(); ?></a><br /><?php echo substr_replace($item->get_description(), ‘…’, 280); ?> <a href=”<?php echo $item->get_link(0); ?>”>leer mas</a><?php } ?></div> //coloca el texto de “leer mas” al final de la descripción o resumen
</li>
<?php endfor; ?> //termina el bucle
</ul>
</div>
[/code]
Con este código podrán mostrar imagen, título, resumen y el letrero de “leer mas” para dar una opción al lector de ir al post. Ustedes pueden enriqueserlo y darle el estilo gráfico que deseen. Para mas información consulten la página oficial de Simplepie y aquí directamente para ver todas las funciones que Simplepie ofrece.
Comentarios
Hola! Una consulta, solo el archivo simplepie.inc se usa?
Este error me salió con el copy paste:
Notice: Undefined variable: con_rows in /var/www/html/… on line 146
Notice: Undefined variable: noticia in /var/www/html/… on line 169
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /var/www/html/… on line 169
Perdon! Esos errores eran de otros códigos que estában en la página. Igualmente no me funcionó, no me trae ningún artículo de mi blog en wordpress 🙁
Hola.
Yo creo que ha de faltar algo más, porque a mi tampoco me funciona. Al parecer, por lo que pude ver en el sitio oficial, se deben dar permisos 777 en la carpeta donde va a ir el "inc", entre otras cosas.
Que tal, el código de arriba funciona para blogger y blogspot sin problemas, para wordpress es distinto, parece no funcionar mas el $enclosure . Estuve haciendo unas pruebas, no son necesarios los permisos 777. Logre obtener detalles del post pero no así la imagen… Aqui el ejemplo con el blog de rafa: https://www.grow.com.mx/archivos/rafamemmel/
El código lo pueden ver aqui:
https://www.grow.com.mx/archivos/rafamemmel/archivo.txt
a traves de los DNS de tu blog cambiandolos en tu administrador de domunios
Hermano he Seguido tus Intrucciones al Pie de la Letra y al Momento de Realizarlo Me da el Siguiente error aqui te dejo para que veas si me Puedes ayudar te lo Agradecere Bastante!!!
http://www.mediaeventosradio.net/demo/
Que tal amigo, algo así te puede quedar:
https://www.grow.com.mx/archivos/media/
Saludos
Perfecto Hermano!!!
Puedes descargar el archivo de aquí:
https://www.grow.com.mx/archivos/media/test.zip
Necesitas meter los archivos que vienen ahí en el root de tu sitio para que funcionen tal cual viene ahí y respetar el acomodo de las lineas. Posiblemente necesite un ajuste en el css, cuando lo insertes lo sabrás 🙂
Hermano Muchisisimas Gracias Eres un Mounstro en esto!!!
Acabo de descargar el SimplePie y la verdad es que ando un poco confundido de esto de los archivos. Tengo mi pagina en HTML en un servidor. Donde coloco los archivos descargados? alguna carpeta en especial? como los instalo?
Ayuda porfavor
Miguel
Gracias lo vamos a probar!!
Hola qe tal, me funciona bien, solo una cosa, como hacer para qe las entradas o publicaciones salgan con la fecha y hora dentro de la web?… muchas gracias.
hola, soy novato en esto de diseño, mi consulta es, donde pongo los archivos descargado, y donde pego el codigo que expisuste? Gracias!