Skip to Content »

PHP Feed Generator

  • 17/06/2008
  • 11:45 pm
  • unijimpe

PHP Universal Feed Generator es una clase escrita en PHP 5 que permite crear Feeds en formato RSS 2.0, RSS 1.0 y Atom 1.0 de forma sencilla y cumpliendo los estándar de los Feeds.

Entre las características que podemos enumerar para esta clase tenemos:

  • Genera Feeds RSS 1.0, RSS 2.0 y ATOM.
  • Todos los feeds se pueden validar en Feed Validator
  • Soporte para todos los elementos de un feed.
  • Conversión automática de las fechas.
  • Desarrollado con clases en PHP5

Generando nuestros Feeds
Lo primero es descargar los archivos fuente desde FeedWriter.zip, extraen el contenido del ZIP recien descargado y encontrarán FeedWriter.php y FeedItem.php que contienen las clases necesarias para la creación de los Feeds.

Lo primero es incluir el archivo FeedWriter.php, luego creamos una instancia de la clase FeedWriter en donde definimos el tipo de Feed (RSS2, RSS1, ATOM), luego procedemos a definir los parámetros del RSS a generar y finalmente consultamos nuestra base de datos para extraer la información y generar nuestro Feed.

  1. <?php
  2. include("FeedWriter.php");
  3.  
  4. // creamos una instancia de la clase
  5. $myFeed = new FeedWriter(RSS2);
  6.  
  7. // definimos el Feed
  8. $myFeed->setTitle("unijimpe");
  9. $myFeed->setLink("http://blog.unijimpe.net/feed/");
  10. $myFeed->setDescription("Arti­culos, tutoriales...");
  11.  
  12. // Extraemos la info de la Base de Datos
  13. mysql_connect("localhos", "user", "password");
  14. mysql_select_db("nombre_basededatos");
  15. $result = mysql_query("SELECT * FROM news");
  16. while ($row = mysql_fetch_assoc($result)) {
  17.  
  18.    // creamos una instancia de Item
  19.    $myItem = $myFeed->createNewItem();
  20.    $myItem->setTitle($row["titulo"]);
  21.    $myItem->setLink($row["link"]);
  22.    $myItem->setDate($row["fecha"]);
  23.    $myItem->setDescription($row["descripcion"]);
  24.    $myFeed->addItem($myItem);
  25. }
  26.  
  27. // generamos el Feed
  28. $myFeed->genarateFeed();
  29. ?>

Como pueden ver la generación es muy sencilla y rápida, además entre los archivos de descargar figuran varios ejemplos los cuales podemos modificar y adaptar rápidamente a nuestras necesidades. Sin duda una herramienta que nos facilitará mucho el trabajo de generar Feeds.

Posts Relacionados

Precarga multiple en AS3

  • 02/06/2008
  • 11:49 pm
  • unijimpe

BulkLoader es una clase escrita en AS3 que te permitirá cargar y manejar múltiples archivos de manera sencilla. Esta clase te permitirá cargar múltiples archivos de diferente tipo en una interface unificada, accediendo a los eventos de carga en la misma instancia.

Utilizando BulkLoader
Lo primero es descargar la ultima versión de BulkLoader, extraen los archivos y en la carpeta src se encuentran las clases necesarias para el uso de esta librería.

Lo primero es importar las clases BulkLoader y BulkProgressEvent y posteriormente creamos una instancia de la clase BulkLoader, al cual le asignamos un nombre, en este caso mainLoader:

  1. import br.com.stimuli.loading.BulkLoader;
  2. import br.com.stimuli.loading.BulkProgressEvent;
  3.  
  4. var loader:BulkLoader = new BulkLoader("mainLoader");

A continuación agregamos los items o elementos que deseamos cargar, pueden ser archivos jpg, gif, png, xml, mp3, flv, etc. Para ello utilizamos el método add donde asignamos la ruta a cargar y un nombre de id para recuperar los datos cargados posteriormente.

  1. loader.add("background.jpg", {id: "bg"});
  2. loader.add("menu.xml", {id:"menu"});
  3. loader.add("sound.mp3", {id: "sound"});

El siguiente paso es agregar los detectores de eventos o listeners (COMPLETE, PROGRESS, ERROR) con los cuales podemos detectar el progreso de la carga y el termino de la misma.

  1. // para la carga de todos los archivos
  2. loader.addEventListener(BulkLoader.COMPLETE, onLoaded);
  3. loader.addEventListener(BulkLoader.PROGRESS, onProgress);
  4. loader.addEventListener(BulkLoader.ERROR, onError);
  5. // para la carga de uno de los elementos
  6. loader.get("bg").addEventListener(Event.COMPLETE,onBgLoaded);
  7. loader.get("bg").addEventListener(Event.PROGRESS,onBgProgress);
  8. loader.get("bg").addEventListener(Event.ERROR,onBgError);

Luego iniciamos la carga utilizando el método start.

  1. loader.start();

Finalmente implementamos las funciones asociadas a los detectores de eventos y obtenemos los archivos cargados, para ello podemos utilizar getBitmap, getSound, getXML, getText, getNetStream, getSound, getMovieClip de acuerdo al archivo que estemos cargando.

  1. function onLoaded(evt:Event) {
  2.    // extraemos la imagen
  3.    var mcBg:Bitmap = loader.getBitmap("bg");
  4.    addChild(mcBg);
  5.    // extraemos el sonido
  6.    var sonido:Sound = loader.getSound("sound");
  7.    sonido.play();
  8.    // extraemos el XML
  9.    var xmlMenu:XML = loader.getXML("menu");
  10.    trace(xmlMenu);
  11. }

Luego uniendo todos los elementos, obtenemos nuestro precargador de múltiples archivos.

  1. import br.com.stimuli.loading.BulkLoader;
  2. import br.com.stimuli.loading.BulkProgressEvent;
  3.  
  4. var loader:BulkLoader = new BulkLoader("mainLoader");
  5. loader.add("background.jpg", {id: "bg"});
  6. loader.add("menu.xml", {id:"menu"});
  7. loader.add("sound.mp3", {id: "sound"});
  8.  
  9. loader.addEventListener(BulkLoader.COMPLETE, onLoaded);
  10. loader.addEventListener(BulkLoader.PROGRESS, onProgress);
  11.  
  12. function onLoaded(evt:Event) {
  13.    // extraemos la imagen
  14.    var mcBg:Bitmap = loader.getBitmap("bg");
  15.    addChild(mcBg);
  16.    // extraemos el sonido
  17.    var sonido:Sound = loader.getSound("sound");
  18.    sonido.play();
  19.    // extraemos el XML
  20.    var xmlMenu:XML = loader.getXML("menu");
  21.    trace(xmlMenu);
  22. }
  23. public function onAllItemsProgress(evt:BulkProgressEvent) {
  24.    trace(evt.bytesLoaded + " - " + evt.bytesTotal);
  25. }

Como pueden ver es muy sencillo el uso de esta clase y puede facilitar y ahorrar tiempo en la implementación de sitios con acceso a múltiples tipo de datos.

Posts Relacionados

sIFR: Tipografías en HTML

  • 31/05/2008
  • 9:54 pm
  • unijimpe

sIFR (Scalable Inman Flash Replacement) es una técnica que permite reemplazar elementos de texto HTML por un equivalente en Flash lo cual permite la inclusión de cualquier tipografía aun si el usuario no tiene instalada la tipografía en su computador.

Utilizando sIFR
Lo primero es descargar sIFR 3, extraemos los archivos donde tenemos una carpeta flash donde encontramos un archivo sifr.fla el cual debemos abrir en Adobe Flash y cambiar el tipo de letra, seleccionar los caracteres a renderear e incluso podríamos agregarle algunos filtros. Guardamos los cambios y exportamos el archivo. A este archivo recién exportado le damos un nombre, generalmente el nombre de la tipografía seleccionada.

Luego el siguiente paso es incluir los archivo sIFR-screen.css y sIFR-print.css ubicados en la carpeta css en el header del HTML seleccionado:

  1. <link rel="stylesheet" href="sIFR-screen.css" type="text/css" media="screen">
  2. <link rel="stylesheet" href="sIFR-print.css" type="text/css" media="print">

Luego de ello es necesario incluir el archivo javascript sifr.js.

  1. <script type="text/javascript" src="sifr.js"></script>

El tercer y ultimo paso es utilizar el metodo sIFR.replace para reemplazar bloques html por bloques flash que contienen la tipografía seleccionada, la sintaxis para ello es:

  1. sIFR.replace({
  2.     src: 'path-font.swf'// ruta al swf que contiene la fuente
  3.     selector: 'html-tag'// tags a reemplazar
  4.     css: '.sIFR-root { prop: value }' // CSS para el flash
  5. });

Entonces si por ejemplo hemos creado un archivo llamado monotype.swf y queremos que lo reemplaze a todos los elementos h1, podemos hacerlo mediante:

  1. <script type="text/javascript">
  2. sIFR.replace({
  3.     src: 'monotype.swf',
  4.     selector: 'h1'
  5. });
  6. </script>

Luego si deseamos que estos elementos tengan color #FF3366 y que tengan 24px de tamaño, agregamos la propiedad css, de la siguiente manera:

  1. <script type="text/javascript">
  2. sIFR.replace({
  3.     src: 'monotype.swf',
  4.     selector: 'h1',
  5.     css: '.sIFR-root {color: #FF3366; font-size: 24px; }'
  6. });
  7. </script>

Ahora si por ejemplo deseamos reemplazar los elementos que tengan la clase blue por la tipografía bookman.swf y la queremos en tamaño 14px podemos utilizar:

  1. <script type="text/javascript">
  2. sIFR.replace({
  3.     src: 'bookman.swf',
  4.     selector: '.blue',
  5.     css: '.sIFR-root {color: #0099FF; font-size: 14px;}'
  6. });
  7. </script>

Podemos utilizar varias veces el método sIFR.replace para reemplazar diferentes tipos de letra. Ahora uniendo todos los elementos en un html tenemos el siguiente código, en donde hemos utilizar el método de reemplazo en una sola línea cada una:

  1. <title>Demo sIFR</title>
  2. <link rel="stylesheet" href="sIFR-screen.css" type="text/css" media="screen">
  3. <link rel="stylesheet" href="sIFR-print.css" type="text/css" media="print">
  4. <script type="text/javascript" src="sifr.js"></script>
  5. <script type="text/javascript">
  6. sIFR.replace({ src: 'monotype.swf', selector: 'h1', css: '.sIFR-root {color: #FF3366; font-size: 24px; }' });
  7. sIFR.replace({ src: 'bookman.swf', selector: '.blue', css: '.sIFR-root {color: #0099FF; font-size: 14px;}', forceSingleLine: true, tuneHeight: -9 });
  8. </script>
  9. </head>
  10. <h1>sIFR: Tipografías en HTML</h1>
  11. <p><span class="blue">sIFR</span> (<em>Scalable Inman Flash Replacement</em>)...</p>
  12. </body>
  13. </html>

Pueden ver el resultado de este ejemplo en Demo sIFR. Les dejo los archivos fuente de este ejemplo para que lo descarguen y puedan hacer sus pruebas.

Como una observación importante hay que notar que este método es recomendable utilizarlo solo para bloques pequeños y no para todo el html.

Mas Información

Posts Relacionados


  •