Wiki source for SindicandoAlmidon
======Sindicalización (o Sindicando) usando Almidón======
En este articulo aprenderemos a utilizar PHP y Smarty con ayuda de almidṕon para **diseñar canales/fuentes web (feeds)**, estos son una forma efectiva de difundir y compartir información, su aplicación general abarca la distribución (syndication en inglés) de noticias o información tipo noticias contenidas en sitios web y weblogs.
Feed, técnicamente, se emplea para denominar a los documentos con formato RSS o Atom, basados en lenguaje XML.
En este entrada hablaremos de como crear un feed en **RSS 1.0** (o **RDF**), **RSS 2.0** y **ATOM**
====Consideraciones Previas====
Antes de comenzar quisiera establecieramos el ambiente sobre cuál esta enfocada la practica, todo el material se enfocara en un sitio web que provee información de noticias y contenido de bitácora (blogs), por lo que haremos el feed para las noticias, la estructura de la tabla la establesco a continuación:
%%(php;;articulo.php)
<?php
class articuloTable extends Table {
function articuloTable() {
$this->Table('articulo');
$this->key = 'idarticulo';
$this->title = 'Articulos';
$this->order = 'fecha desc';
$this->addColumn('idarticulo','serial',0,1,0,'Id');
$this->addColumn('fecha','date',0,0,0,'Fecha');
$this->addColumn('articulo','varchar',500,0,0,'Titulo');
$this->addColumn('autor','varchar',200,0,0,'Autor');
$this->addColumn('fuente','varchar',200,0,0,'Fuente');
$this->addColumn('texto','text',0,0,0,'Texto');
$this->addColumn('keywords','text',0,0,0,'Claves');
$this->addColumn('imagen','image',0,0,0,'Imagen');
$this->addColumn('pie','text',0,0,0,'Pie de foto');
}
}
?>
%%
====Sindicando con RSS 1.0 ""<sup style="font-size:10px;color:red;">(Recomendado)</sup>""====
Crearemos un archivo php con el nombre de la siguiente manera nombre_rss.xml.php, donde nombre_rss es el nombre que queramos usar para el archivo, rdf es la extensión que se utiliza para la versión 1.0 del RSS y php es la extensión necesaria para que se ejecute el archivo como un archivo script.
//Archivo php://
%%(php;;rss.rdf.php)
<?php
require('../classes/app.class.php');
$articulo = new articuloTable();
$rows = $articulo->readData();
$smarty->assign('rows',$rows);
header('Content-type: text/xml; charset=utf-8');
$smarty->display('rss.rdf.tpl');
?>
%%
//Archivo tpl//
%%(smarty;;rss.rdf.tpl)
<?xml version="1.0" encoding="utf-8"?>
<rdf:RDF xmlns="http://purl.org/rss/1.0/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">
{* URL que identifica en canal *}
<channel rdf:about="{$smarty.const.URL}/rss.rdf">
{* Información del channel, subelementos *}
{* título del RSS, se sugiere un máximo de 40 caracteres *}
<title>El Observador Económico | {$smarty.const.DOMAIN}</title>
{* La URL que origina o representa el RSS *}
<link>{$smarty.const.URL}</link>
{* un sumario del RSS, se sugiere un máximo de 400 caracteres *}
<description>Monitoreo, Periscopio, Notas C.A., Opinion, Analisis, Actualidad para el Desafío Económico Global - FIDEG</description>
{* logo *}
<image rdf:resource="{$smarty.const.URL}/imgs/elobservEco.png" />
{* El idioma - español (es) o inglés (en) *}
<dc:language>es</dc:language>
{* define la relación entre el canal y algún item encontrado del documento RSS. Tiene un aspecto complicado pero muy necesario *}
<items>
<rdf:Seq>
{* la información que tiene el campo rdf:about de cada item *}
{section name=i loop=$rows}
<rdf:li resource="{$smarty.const.URL}/articulo/{$rows[i].idarticulo}" />
{/section}
</rdf:Seq>
</items>
{* Para busquedas, sino omitir *}
</channel>
<image rdf:about="{$smarty.const.URL}/imgs/elobservEco.png">
<title>El Observador Económico</title>
<link>{$smarty.const.URL}</link>
{* src de la imagen, ancho maximo 144 px y alto de 400 px; por convención 88x31 *}
<url>{$smarty.const.URL}/imgs/elobservEco.png</url>
</image>
{section name=i loop=$rows}
<item rdf:about="{$smarty.const.URL}/articulo/{$rows[i].idarticulo}">
<title>{$rows[i].articulo}</title>
<link>{$smarty.const.URL}/articulo/{$rows[i].idarticulo}</link>
<description><![CDATA[{$rows[i].texto|strip_tags|truncate:350}]]></description>
<dc:date>{$rows[i].fecha|date_format:"%Y-%m-%dT%T-06:00"}</dc:date>
</item>
{/section}
</rdf:RDF>
%%
vea el ejemplo [[http://elobservadoreconomico.com/rss.rdf aquí]]
Nota: podes añadir imagenes en el campo descripción de cada item, pero se tiene que escapar el html, yo use este código para lograrlo.
%%(smarty)
<description>{if $rows[i].imagen}{capture name=image}{html_image file=$smarty.const.URL|cat:'/cms/pic/250x250/articulo/'|cat:$rows[i].imagen}{/capture}{if $smarty.capture.image!=""}{$smarty.capture.image|cat:"<br />"|escape}{/if}{/if}{$rows[i].texto|strip_tags|truncate:350}</description>
%%
====Sindicando con RSS 2.0====
Crearemos un archivo php con el nombre de la siguiente manera nombre_rss.xml.php, donde nombre_rss es el nombre que queramos usar para el archivo, xml es la extensión que se utiliza para la versión 2.0 del RSS y php es la extensión necesaria para que se ejecute el archivo como un archivo script.
//Archivo php://
%%(php;;rss.xml.php)
<?php
require('../classes/app.class.php');
$articulo = new articuloTable();
$rows = $articulo->readData();
$smarty->assign('rows',$rows);
header('Content-type: text/xml; charset=utf-8');
$smarty->display('rss.xml.tpl');
?>
%%
//Archivo tpl//
%%(smarty;;rss.xml.tpl)
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel> <title>El Observador Económico | {$smarty.const.DOMAIN}</title>
<link>{$smarty.const.URL}</link>
<description>Monitoreo, Periscopio, Notas C.A., Opinion, Analisis, Actualidad para el Desafío Económico Global - FIDEG</description>
<language>es</language>
<category>Economia</category>
{* Util si usamos cache o el rss se vuelve a generar cada cierto tiempoi, identifica la ultima vez que el contenido del rss cambio *}
<lastBuildDate></lastBuildDate>
<webMaster>{$smarty.const.EMAIL}</webMaster>
{* Mensaje copyright para el contenido en el feed *}
<copyright></copyright> <generator>El Nuevo Diario Online v2.0.1 {$smarty.const.URL}</generator>
<image>
<title>El Observador Económico</title>
<url>{$smarty.const.URL}/imgs/elobservEco.png</url>
<link>{$smarty.const.URL}</link>
<description>Monitoreo, Periscopio, Notas C.A., Opinion, Analisis, Actualidad para el Desafío Económico Global - FIDEG</description>
<width>358</width>
<height>85</height>
</image>
{section name=i loop=$rows}
<item>
<title>{$rows[i].articulo}</title>
<pubDate>{$rows[i].fecha|date_format:"%Y-%m-%dT%T-06:00"}</pubDate>
<link>{$smarty.const.URL}/articulo/{$rows[i].idarticulo}</link>
{* estructura: uatsap@uatsap.com (uatsap.com) *}
<author>{$rows[i].autor}</author>
<guid isPermaLink="true">{$smarty.const.URL}/articulo/{$rows[i].idarticulo}</guid>
<description>{$rows[i].texto|strip_tags|truncate:350}</description>
{* opcionales
<comments></comentarios> - Es la dirección web (URL) donde se encuentran los comentarios acerca del item
<category></category> -- Categoría a la que pertenece la notícia.
*}
</item>
{/section}
</channel>
</rss>
%%
vea el ejemplo [[http://elobservadoreconomico.com/rss.xml aqui]]
Nota: ocurre lo mismo aqui en el campo item, podes añadir imagenes en el campo descripción de cada item, pero se tiene que escapar el html.
====Sindicando con ATOM 1.0====
Siguiendo la nomenclatura de los feeds anteriores crearemos un archivo php con el nombre de la siguiente manera nombre_rss.xml.php, donde nombre_rss es el nombre que queramos usar para el archivo, xml es la extensión que se utiliza para la versión de ATOM y php es la extensión necesaria para que se ejecute el archivo como un archivo script.
//Archivo php//
%%(php;;atom.xml.php)
<?php
require('../classes/app.class.php');
$articulo = new articuloTable();
$articulo->limit = 10;
$rows = $articulo->readData();
$smarty->assign('rows',$rows);
header('Content-type: text/xml; charset=utf-8');
$smarty->display('atom.xml.tpl');
?>
%%
//Archivo tpl//
%%(smarty;;atom.xml.tpl)
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>El Observador Económico | {$smarty.const.DOMAIN}</title>
{* Contiene una descripción o un subtítulo para el feed *}
<subtitle>Monitoreo, Periscopio, Notas C.A., Opinion, Analisis, Actualidad para el Desafío Económico Global - FIDEG</subtitle>
{* Enlace al mismo feed *}
<link rel="self" href="{$smarty.const.URL}/atom.xml" />
{* Enlace al sitio *}
<link href="{$smarty.const.URL}" />
{* Util si usamos cache o el rss se vuelve a generar cada cierto tiempoi, identifica la ultima vez que el contenido del rss cambio *}
<updated>{$smarty.now|date_format:"%Y-%m-%dT%T-06:00"}</updated>
<author>
<name>Grupo Telenica</name>
{*<email></email>
<uri>http://siteurl.tld</uri>*}
</author>
{* Identifica al feed usando una única y permantente URI. *}
<id>{$smarty.const.URL}</id>
{*
<category term="sports" /> - Especifica una categoría a la que el feed pertenece, puede contener varios si pertenece a varias categorias
<icon>/icon.jpg</icon> - Identifica una imagen pequeña que da una información visual icónica del feed.
<rights> © 2005 John Doe </rights> - ensaje copyright para el contenido en el feed
*}
<logo>{$smarty.const.URL}/imgs/elobservEco.png</logo>
<category>Economia</category>
<generator>El Nuevo Diario Online v2.0.1 {$smarty.const.URL}</generator>
{section name=i loop=$rows}
<entry>
<title>{$rows[i].articulo}</title>
<updated>{$rows[i].fecha|date_format:"%Y-%m-%dT%T-06:00"}</updated>
<published>{$rows[i].fecha|date_format:"%Y-%m-%dT%T-06:00"}</published>
<link href="{$smarty.const.URL}/articulo/{$rows[i].idarticulo}" />
{* estructura: uatsap@uatsap.com (uatsap.com) *}
<author>{$rows[i].autor}</author>
{* Identifica la entrada usando una URI permanente y universal *}
<id>{$smarty.const.URL}/articulo/{$rows[i].idarticulo}</id>
{* Contiene un pequeño resumen o parte del comienzo de una entrada *}
<summary type="html">{if $rows[i].imagen}{capture name=image}<img src="{$smarty.const.URL}/cms/pic/250x250/articulo/{$rows[i].imagen|escape:"url"}" />{/capture}{if $smarty.capture.image!=""}{$smarty.capture.image|cat:"<br />"|escape}{/if}{/if}{$rows[i].texto|strip_tags|truncate:350}</summary>
{* Contiene o enlaza al contenido de la entrada *}
<content><![CDATA[{if $rows[i].imagen}{capture name=image}<img src="{$smarty.const.URL}/cms/pic/250x250/articulo/{$rows[i].imagen|escape:"url"}" />{/capture}{if $smarty.capture.image!=""}{$smarty.capture.image|cat:"<br />"}{/if}{/if}{$rows[i].texto|nl2br}]]></content>
</entry>
{/section}
</feed>
%%
vea el ejemplo [[http://elobservadoreconomico.com/atom.xml aqui]]
Nota: ocurre lo mismo aqui en el campo entry, que reemplaza al campo item de RSS 1.0 y 2.0, podes añadir imagenes en el campo summary, reemplazo del campo description de cada entry (entrada), pero se tiene que escapar el html y poner en summary como atributo type="html", ver la linea 38 que se muestra a continuación.
%%(smarty;37;atom.xml.tpl)
{* Contiene un pequeño resumen o parte del comienzo de una entrada *}
<summary type="html">{if $rows[i].imagen}{capture name=image}<img src="{$smarty.const.URL}/cms/pic/250x250/articulo/{$rows[i].imagen|escape:"url"}" />{/capture}{if $smarty.capture.image!=""}{$smarty.capture.image|cat:"<br />"|escape}{/if}{/if}{$rows[i].texto|strip_tags|truncate:350}</summary>
%%
====Alertar al navegador que hay un feed RSS en el sitio====
Para Incrustarl cualquiera de los Feed en el sitio web y que aparezca el logo de feed en la barra de direcciones, hay que poner cualquiera de las siguientes etiquetas en dependencia del caso. Explicación: href ruta del feed, title etiqueta que aparecera cuando se pressione el icono del feed en la barra de direcciones del navegador
RSS 1.0 - <link rel="alternate" type="application/rss+xml" href="/rss.rdf" title="RSS 1.0" />
RSS 2.0 - <link rel="alternate" type="application/rss+xml" href="/rss.xml" title="RSS 2.0" />
ATOM - <link rel="alternate" type="application/atom+xml" href="/atom.xml" title="ATOM" />
====Enlaces de Interes====
[[http://www.uatsap.com/ RSS, Tutorial]]
[[http://www.maestrosdelweb.com/editorial/sindicando/ RSS: Sindicando Contenido]]
[[http://www.microsiervos.com/archivo/internet/que-es-rss-y-xml-rdf-atom.html ¿Qué es RSS –y XML, RDF, Atom,...?]]
[[http://motoresxmlrdf.tripod.com/motoresxmlrdf.doc RSS 1.0: Motores de recuperación de documentos XML/RDF]]
[[http://cyber.law.harvard.edu/rss/rss.html RSS 2.0]]
[[http://web.resource.org/rss/1.0/ web.resource.org RSS 1.0]]
[[http://www.rssboard.org/rss-specification RSS 2.0 Spec]]
[[http://armonia.spiral-static.org/?2005/10/11/89-atom-una-pequena-introduccion Atom: Una pequeña introducción]]
[[http://en.wikipedia.org/wiki/Atom_(standard) Atom]]
----
CategoryDev
En este articulo aprenderemos a utilizar PHP y Smarty con ayuda de almidṕon para **diseñar canales/fuentes web (feeds)**, estos son una forma efectiva de difundir y compartir información, su aplicación general abarca la distribución (syndication en inglés) de noticias o información tipo noticias contenidas en sitios web y weblogs.
Feed, técnicamente, se emplea para denominar a los documentos con formato RSS o Atom, basados en lenguaje XML.
En este entrada hablaremos de como crear un feed en **RSS 1.0** (o **RDF**), **RSS 2.0** y **ATOM**
====Consideraciones Previas====
Antes de comenzar quisiera establecieramos el ambiente sobre cuál esta enfocada la practica, todo el material se enfocara en un sitio web que provee información de noticias y contenido de bitácora (blogs), por lo que haremos el feed para las noticias, la estructura de la tabla la establesco a continuación:
%%(php;;articulo.php)
<?php
class articuloTable extends Table {
function articuloTable() {
$this->Table('articulo');
$this->key = 'idarticulo';
$this->title = 'Articulos';
$this->order = 'fecha desc';
$this->addColumn('idarticulo','serial',0,1,0,'Id');
$this->addColumn('fecha','date',0,0,0,'Fecha');
$this->addColumn('articulo','varchar',500,0,0,'Titulo');
$this->addColumn('autor','varchar',200,0,0,'Autor');
$this->addColumn('fuente','varchar',200,0,0,'Fuente');
$this->addColumn('texto','text',0,0,0,'Texto');
$this->addColumn('keywords','text',0,0,0,'Claves');
$this->addColumn('imagen','image',0,0,0,'Imagen');
$this->addColumn('pie','text',0,0,0,'Pie de foto');
}
}
?>
%%
====Sindicando con RSS 1.0 ""<sup style="font-size:10px;color:red;">(Recomendado)</sup>""====
Crearemos un archivo php con el nombre de la siguiente manera nombre_rss.xml.php, donde nombre_rss es el nombre que queramos usar para el archivo, rdf es la extensión que se utiliza para la versión 1.0 del RSS y php es la extensión necesaria para que se ejecute el archivo como un archivo script.
//Archivo php://
%%(php;;rss.rdf.php)
<?php
require('../classes/app.class.php');
$articulo = new articuloTable();
$rows = $articulo->readData();
$smarty->assign('rows',$rows);
header('Content-type: text/xml; charset=utf-8');
$smarty->display('rss.rdf.tpl');
?>
%%
//Archivo tpl//
%%(smarty;;rss.rdf.tpl)
<?xml version="1.0" encoding="utf-8"?>
<rdf:RDF xmlns="http://purl.org/rss/1.0/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">
{* URL que identifica en canal *}
<channel rdf:about="{$smarty.const.URL}/rss.rdf">
{* Información del channel, subelementos *}
{* título del RSS, se sugiere un máximo de 40 caracteres *}
<title>El Observador Económico | {$smarty.const.DOMAIN}</title>
{* La URL que origina o representa el RSS *}
<link>{$smarty.const.URL}</link>
{* un sumario del RSS, se sugiere un máximo de 400 caracteres *}
<description>Monitoreo, Periscopio, Notas C.A., Opinion, Analisis, Actualidad para el Desafío Económico Global - FIDEG</description>
{* logo *}
<image rdf:resource="{$smarty.const.URL}/imgs/elobservEco.png" />
{* El idioma - español (es) o inglés (en) *}
<dc:language>es</dc:language>
{* define la relación entre el canal y algún item encontrado del documento RSS. Tiene un aspecto complicado pero muy necesario *}
<items>
<rdf:Seq>
{* la información que tiene el campo rdf:about de cada item *}
{section name=i loop=$rows}
<rdf:li resource="{$smarty.const.URL}/articulo/{$rows[i].idarticulo}" />
{/section}
</rdf:Seq>
</items>
{* Para busquedas, sino omitir *}
</channel>
<image rdf:about="{$smarty.const.URL}/imgs/elobservEco.png">
<title>El Observador Económico</title>
<link>{$smarty.const.URL}</link>
{* src de la imagen, ancho maximo 144 px y alto de 400 px; por convención 88x31 *}
<url>{$smarty.const.URL}/imgs/elobservEco.png</url>
</image>
{section name=i loop=$rows}
<item rdf:about="{$smarty.const.URL}/articulo/{$rows[i].idarticulo}">
<title>{$rows[i].articulo}</title>
<link>{$smarty.const.URL}/articulo/{$rows[i].idarticulo}</link>
<description><![CDATA[{$rows[i].texto|strip_tags|truncate:350}]]></description>
<dc:date>{$rows[i].fecha|date_format:"%Y-%m-%dT%T-06:00"}</dc:date>
</item>
{/section}
</rdf:RDF>
%%
vea el ejemplo [[http://elobservadoreconomico.com/rss.rdf aquí]]
Nota: podes añadir imagenes en el campo descripción de cada item, pero se tiene que escapar el html, yo use este código para lograrlo.
%%(smarty)
<description>{if $rows[i].imagen}{capture name=image}{html_image file=$smarty.const.URL|cat:'/cms/pic/250x250/articulo/'|cat:$rows[i].imagen}{/capture}{if $smarty.capture.image!=""}{$smarty.capture.image|cat:"<br />"|escape}{/if}{/if}{$rows[i].texto|strip_tags|truncate:350}</description>
%%
====Sindicando con RSS 2.0====
Crearemos un archivo php con el nombre de la siguiente manera nombre_rss.xml.php, donde nombre_rss es el nombre que queramos usar para el archivo, xml es la extensión que se utiliza para la versión 2.0 del RSS y php es la extensión necesaria para que se ejecute el archivo como un archivo script.
//Archivo php://
%%(php;;rss.xml.php)
<?php
require('../classes/app.class.php');
$articulo = new articuloTable();
$rows = $articulo->readData();
$smarty->assign('rows',$rows);
header('Content-type: text/xml; charset=utf-8');
$smarty->display('rss.xml.tpl');
?>
%%
//Archivo tpl//
%%(smarty;;rss.xml.tpl)
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel> <title>El Observador Económico | {$smarty.const.DOMAIN}</title>
<link>{$smarty.const.URL}</link>
<description>Monitoreo, Periscopio, Notas C.A., Opinion, Analisis, Actualidad para el Desafío Económico Global - FIDEG</description>
<language>es</language>
<category>Economia</category>
{* Util si usamos cache o el rss se vuelve a generar cada cierto tiempoi, identifica la ultima vez que el contenido del rss cambio *}
<lastBuildDate></lastBuildDate>
<webMaster>{$smarty.const.EMAIL}</webMaster>
{* Mensaje copyright para el contenido en el feed *}
<copyright></copyright> <generator>El Nuevo Diario Online v2.0.1 {$smarty.const.URL}</generator>
<image>
<title>El Observador Económico</title>
<url>{$smarty.const.URL}/imgs/elobservEco.png</url>
<link>{$smarty.const.URL}</link>
<description>Monitoreo, Periscopio, Notas C.A., Opinion, Analisis, Actualidad para el Desafío Económico Global - FIDEG</description>
<width>358</width>
<height>85</height>
</image>
{section name=i loop=$rows}
<item>
<title>{$rows[i].articulo}</title>
<pubDate>{$rows[i].fecha|date_format:"%Y-%m-%dT%T-06:00"}</pubDate>
<link>{$smarty.const.URL}/articulo/{$rows[i].idarticulo}</link>
{* estructura: uatsap@uatsap.com (uatsap.com) *}
<author>{$rows[i].autor}</author>
<guid isPermaLink="true">{$smarty.const.URL}/articulo/{$rows[i].idarticulo}</guid>
<description>{$rows[i].texto|strip_tags|truncate:350}</description>
{* opcionales
<comments></comentarios> - Es la dirección web (URL) donde se encuentran los comentarios acerca del item
<category></category> -- Categoría a la que pertenece la notícia.
*}
</item>
{/section}
</channel>
</rss>
%%
vea el ejemplo [[http://elobservadoreconomico.com/rss.xml aqui]]
Nota: ocurre lo mismo aqui en el campo item, podes añadir imagenes en el campo descripción de cada item, pero se tiene que escapar el html.
====Sindicando con ATOM 1.0====
Siguiendo la nomenclatura de los feeds anteriores crearemos un archivo php con el nombre de la siguiente manera nombre_rss.xml.php, donde nombre_rss es el nombre que queramos usar para el archivo, xml es la extensión que se utiliza para la versión de ATOM y php es la extensión necesaria para que se ejecute el archivo como un archivo script.
//Archivo php//
%%(php;;atom.xml.php)
<?php
require('../classes/app.class.php');
$articulo = new articuloTable();
$articulo->limit = 10;
$rows = $articulo->readData();
$smarty->assign('rows',$rows);
header('Content-type: text/xml; charset=utf-8');
$smarty->display('atom.xml.tpl');
?>
%%
//Archivo tpl//
%%(smarty;;atom.xml.tpl)
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>El Observador Económico | {$smarty.const.DOMAIN}</title>
{* Contiene una descripción o un subtítulo para el feed *}
<subtitle>Monitoreo, Periscopio, Notas C.A., Opinion, Analisis, Actualidad para el Desafío Económico Global - FIDEG</subtitle>
{* Enlace al mismo feed *}
<link rel="self" href="{$smarty.const.URL}/atom.xml" />
{* Enlace al sitio *}
<link href="{$smarty.const.URL}" />
{* Util si usamos cache o el rss se vuelve a generar cada cierto tiempoi, identifica la ultima vez que el contenido del rss cambio *}
<updated>{$smarty.now|date_format:"%Y-%m-%dT%T-06:00"}</updated>
<author>
<name>Grupo Telenica</name>
{*<email></email>
<uri>http://siteurl.tld</uri>*}
</author>
{* Identifica al feed usando una única y permantente URI. *}
<id>{$smarty.const.URL}</id>
{*
<category term="sports" /> - Especifica una categoría a la que el feed pertenece, puede contener varios si pertenece a varias categorias
<icon>/icon.jpg</icon> - Identifica una imagen pequeña que da una información visual icónica del feed.
<rights> © 2005 John Doe </rights> - ensaje copyright para el contenido en el feed
*}
<logo>{$smarty.const.URL}/imgs/elobservEco.png</logo>
<category>Economia</category>
<generator>El Nuevo Diario Online v2.0.1 {$smarty.const.URL}</generator>
{section name=i loop=$rows}
<entry>
<title>{$rows[i].articulo}</title>
<updated>{$rows[i].fecha|date_format:"%Y-%m-%dT%T-06:00"}</updated>
<published>{$rows[i].fecha|date_format:"%Y-%m-%dT%T-06:00"}</published>
<link href="{$smarty.const.URL}/articulo/{$rows[i].idarticulo}" />
{* estructura: uatsap@uatsap.com (uatsap.com) *}
<author>{$rows[i].autor}</author>
{* Identifica la entrada usando una URI permanente y universal *}
<id>{$smarty.const.URL}/articulo/{$rows[i].idarticulo}</id>
{* Contiene un pequeño resumen o parte del comienzo de una entrada *}
<summary type="html">{if $rows[i].imagen}{capture name=image}<img src="{$smarty.const.URL}/cms/pic/250x250/articulo/{$rows[i].imagen|escape:"url"}" />{/capture}{if $smarty.capture.image!=""}{$smarty.capture.image|cat:"<br />"|escape}{/if}{/if}{$rows[i].texto|strip_tags|truncate:350}</summary>
{* Contiene o enlaza al contenido de la entrada *}
<content><![CDATA[{if $rows[i].imagen}{capture name=image}<img src="{$smarty.const.URL}/cms/pic/250x250/articulo/{$rows[i].imagen|escape:"url"}" />{/capture}{if $smarty.capture.image!=""}{$smarty.capture.image|cat:"<br />"}{/if}{/if}{$rows[i].texto|nl2br}]]></content>
</entry>
{/section}
</feed>
%%
vea el ejemplo [[http://elobservadoreconomico.com/atom.xml aqui]]
Nota: ocurre lo mismo aqui en el campo entry, que reemplaza al campo item de RSS 1.0 y 2.0, podes añadir imagenes en el campo summary, reemplazo del campo description de cada entry (entrada), pero se tiene que escapar el html y poner en summary como atributo type="html", ver la linea 38 que se muestra a continuación.
%%(smarty;37;atom.xml.tpl)
{* Contiene un pequeño resumen o parte del comienzo de una entrada *}
<summary type="html">{if $rows[i].imagen}{capture name=image}<img src="{$smarty.const.URL}/cms/pic/250x250/articulo/{$rows[i].imagen|escape:"url"}" />{/capture}{if $smarty.capture.image!=""}{$smarty.capture.image|cat:"<br />"|escape}{/if}{/if}{$rows[i].texto|strip_tags|truncate:350}</summary>
%%
====Alertar al navegador que hay un feed RSS en el sitio====
Para Incrustarl cualquiera de los Feed en el sitio web y que aparezca el logo de feed en la barra de direcciones, hay que poner cualquiera de las siguientes etiquetas en dependencia del caso. Explicación: href ruta del feed, title etiqueta que aparecera cuando se pressione el icono del feed en la barra de direcciones del navegador
RSS 1.0 - <link rel="alternate" type="application/rss+xml" href="/rss.rdf" title="RSS 1.0" />
RSS 2.0 - <link rel="alternate" type="application/rss+xml" href="/rss.xml" title="RSS 2.0" />
ATOM - <link rel="alternate" type="application/atom+xml" href="/atom.xml" title="ATOM" />
====Enlaces de Interes====
[[http://www.uatsap.com/ RSS, Tutorial]]
[[http://www.maestrosdelweb.com/editorial/sindicando/ RSS: Sindicando Contenido]]
[[http://www.microsiervos.com/archivo/internet/que-es-rss-y-xml-rdf-atom.html ¿Qué es RSS –y XML, RDF, Atom,...?]]
[[http://motoresxmlrdf.tripod.com/motoresxmlrdf.doc RSS 1.0: Motores de recuperación de documentos XML/RDF]]
[[http://cyber.law.harvard.edu/rss/rss.html RSS 2.0]]
[[http://web.resource.org/rss/1.0/ web.resource.org RSS 1.0]]
[[http://www.rssboard.org/rss-specification RSS 2.0 Spec]]
[[http://armonia.spiral-static.org/?2005/10/11/89-atom-una-pequena-introduccion Atom: Una pequeña introducción]]
[[http://en.wikipedia.org/wiki/Atom_(standard) Atom]]
----
CategoryDev