Foros del Web » Programando para Internet » PHP »

problema con <pubDate> para archivo rss

Estas en el tema de problema con <pubDate> para archivo rss en el foro de PHP en Foros del Web. Buenas tardes... tengo este archivo para generar feeds de rss el cual utilizo para mi tienda online de Prestashop que me funciona correctamente, dicho esto, ...
  #1 (permalink)  
Antiguo 17/10/2012, 10:18
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
problema con <pubDate> para archivo rss

Buenas tardes...
tengo este archivo para generar feeds de rss el cual utilizo para mi tienda online de Prestashop que me funciona correctamente, dicho esto, tengo el archivo rss.php que a continuación os pongo el código que debo poner la etiqueta <pubDate> para que no me de errores para poder publicar mis productos en otra web. Dicho esto, estoy probando combinaciones, pero no hay manera, a ver si podéis echarme una mano:

Código PHP:
<?php
include(dirname(__FILE__).'/../../config/config.inc.php');
require_once(
dirname(__FILE__).'/../../init.php');

// Get data
$number = (intval(Tools::getValue('n')) ? intval(Tools::getValue('n')) : 10);
$orderByValues = array(=> 'name'=> 'price'=> 'date_add'=> 'date_upd'=> 'position');
$orderWayValues = array(=> 'ASC'=> 'DESC');
$orderBy Tools::strtolower(Tools::getValue('orderby'$orderByValues[intval(Configuration::get('PS_PRODUCTS_ORDER_BY'))]));
$orderWay Tools::strtoupper(Tools::getValue('orderway'$orderWayValues[intval(Configuration::get('PS_PRODUCTS_ORDER_WAY'))]));
if (!
in_array($orderBy$orderByValues))
    
$orderBy $orderByValues[0];
if (!
in_array($orderWay$orderWayValues))
    
$orderWay $orderWayValues[0];
$id_category = (intval(Tools::getValue('id_category')) ? intval(Tools::getValue('id_category')) : 1);
$products Product::getProducts(intval($cookie->id_lang), 0, ($number 10 10 $number), $orderBy$orderWay$id_categorytrue);
$currency = new Currency(intval($cookie->id_currency));
$affiliate = (Tools::getValue('ac') ? '?ac='.intval(Tools::getValue('ac')) : '');

// Send feed
header("Content-Type:text/xml; charset=utf-8");
echo 
'<?xml version="1.0" encoding="UTF-8"?>'."\n";
?>
<rss version="2.0">
    <channel>
        <title><![CDATA[<?php echo Configuration::get('PS_SHOP_NAME'?>]]></title>
        <link><?php echo _PS_BASE_URL_.__PS_BASE_URI__?></link>
        <mail><?php echo Configuration::get('PS_SHOP_EMAIL'?></mail>

        

        <language><?php echo Language::getIsoById(intval($cookie->id_lang)); ?></language>
        <image>
            <title><![CDATA[<?php echo Configuration::get('PS_SHOP_NAME'?>]]></title>
            <url><?php echo _PS_BASE_URL_.__PS_BASE_URI__.'img/logo.jpg'?></url>
            <link><?php echo _PS_BASE_URL_.__PS_BASE_URI__?></link>
        </image>
<?php
    
foreach ($products AS $product)
    {
        
$image Image::getImages(intval($cookie->id_lang), $product['id_product']);
        echo 
"\t\t<item>\n";
        echo 
"\t\t\t<title><![CDATA[".$product['name']." - ".html_entity_decode(Tools::displayPrice(Product::getPriceStatic($product['id_product']), $currency), ENT_COMPAT'UTF-8')." ]]></title>\n";
        echo 
"\t\t\t<description>&lt;img src=&quot;"._PS_BASE_URL_.__PS_BASE_URI__."img/p/".$image[0]['id_product']."-".$image[0]['id_image']."-small.jpg&quot; title=&quot;".str_replace('&'''$product['name'])."&quot; alt=&quot;thumb&quot; /&gt;
        <![CDATA["
.$product['description_short']."]]></description>\n";
        echo 
"\t\t\t<link><![CDATA[".htmlspecialchars($link->getproductLink($product['id_product'], $product['link_rewrite'], Category::getLinkRewrite(intval(Tools::getValue('id_category')), $cookie->id_lang))).$affiliate."]]></link>\n";
    echo 
"\t\t<pubDate><![CDATA['Wed, 02 de octubre 2012 13:00:00 GMT']]></ pubDate>\n";
        echo 
"\t\t</item>\n";
    }
?>
    </channel>
</rss>
he provado en ponerlo asi, pero me da error y no genera feeds:

Código PHP:
.......
echo 
"\t\t\t<title><![CDATA[".$product['name']." - ".html_entity_decode(Tools::displayPrice(Product::getPriceStatic($product['id_product']), $currency), ENT_COMPAT'UTF-8')." ]]></title>\n";
echo 
"\t\t\t<description>&lt;img src=&quot;"._PS_BASE_URL_.__PS_BASE_URI__."img/p/".$image[0]['id_product']."-".$image[0]['id_image']."-small.jpg&quot; title=&quot;".str_replace('&'''$product['name'])."&quot; alt=&quot;thumb&quot; /&gt;
        <![CDATA["
.$product['description_short']."]]></description>\n";
echo 
"\t\t\t<link><![CDATA[".htmlspecialchars($link->getproductLink($product['id_product'], $product['link_rewrite'], Category::getLinkRewrite(intval(Tools::getValue('id_category')), $cookie->id_lang))).$affiliate."]]></link>\n";
echo 
"\t\t<pubDate><![CDATA['Wed, 02 de octubre 2012 13:00:00 GMT']]></ pubDate>\n";
        echo 
"\t\t</item>\n";
    } 

Última edición por jonysi_d; 17/10/2012 a las 10:24
  #2 (permalink)  
Antiguo 17/10/2012, 12:42
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: problema con <pubDate> para archivo rss

solucionado:

Código PHP:
echo "\t\t<pubDate><![CDATA[0.2]]><?php echo date('d-m-Y h:i:s'); ?></pubDate>\n";
  #3 (permalink)  
Antiguo 19/11/2012, 07:10
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: problema con <pubDate> para archivo rss

realmente no he podido solucionarlo. lo tengo asi, pero no me coge la fecha en la que se genera :

Código PHP:
<?php
include(dirname(__FILE__).'/../../config/config.inc.php');
require_once(
dirname(__FILE__).'/../../init.php');

// Get data
$number = (intval(Tools::getValue('n')) ? intval(Tools::getValue('n')) : 10);
$orderByValues = array(=> 'name'=> 'price'=> 'date_add'=> 'date_upd'=> 'position');
$orderWayValues = array(=> 'ASC'=> 'DESC');
$orderBy Tools::strtolower(Tools::getValue('orderby'$orderByValues[intval(Configuration::get('PS_PRODUCTS_ORDER_BY'))]));
$orderWay Tools::strtoupper(Tools::getValue('orderway'$orderWayValues[intval(Configuration::get('PS_PRODUCTS_ORDER_WAY'))]));
if (!
in_array($orderBy$orderByValues))
    
$orderBy $orderByValues[0];
if (!
in_array($orderWay$orderWayValues))
    
$orderWay $orderWayValues[0];
$id_category = (intval(Tools::getValue('id_category')) ? intval(Tools::getValue('id_category')) : 1);
$products Product::getProducts(intval($cookie->id_lang), 0, ($number 10 10 $number), $orderBy$orderWay$id_categorytrue);
$currency = new Currency(intval($cookie->id_currency));
$affiliate = (Tools::getValue('ac') ? '?ac='.intval(Tools::getValue('ac')) : '');
$fecha date('d-m-Y');

// Send feed
header("Content-Type:text/xml; charset=utf-8");
echo 
'<?xml version="1.0" encoding="UTF-8"?>'."\n";


?>
<rss version="2.0">
    <channel>
        <title><![CDATA[<?php echo Configuration::get('PS_SHOP_NAME'?>]]></title>
        <link><?php echo _PS_BASE_URL_.__PS_BASE_URI__?></link>
        <mail><?php echo Configuration::get('PS_SHOP_EMAIL'?></mail>
        <generator>PrestaShop</generator>
        <language><?php echo Language::getIsoById(intval($cookie->id_lang)); ?></language>
        <image>
            <title><![CDATA[<?php echo Configuration::get('PS_SHOP_NAME'?>]]></title>
            <url><?php echo _PS_BASE_URL_.__PS_BASE_URI__.'img/logo.jpg'?></url>
            <link><?php echo _PS_BASE_URL_.__PS_BASE_URI__?></link>
        </image>
<?php
    
foreach ($products AS $product)
    {
        
$image Image::getImages(intval($cookie->id_lang), $product['id_product']);
        echo 
"\t\t<item>\n";
        echo 
"\t\t\t<title><![CDATA[".$product['name']." - ".html_entity_decode(Tools::displayPrice(Product::getPriceStatic($product['id_product']), $currency), ENT_COMPAT'UTF-8')." ]]></title>\n";
        echo 
"\t\t\t<description>&lt;img src=&quot;"._PS_BASE_URL_.__PS_BASE_URI__."img/p/".$image[0]['id_product']."-".$image[0]['id_image']."-small.jpg&quot; title=&quot;".str_replace('&'''$product['name'])."&quot; alt=&quot;thumb&quot; /&gt;
        <![CDATA["
.$product['description_short']."]]></description>\n";
        echo 
"\t\t<pubDate><![CDATA[0.2]]><?php echo $fecha; ?></pubDate>\n";
        echo 
"\t\t\t<link><![CDATA[".htmlspecialchars($link->getproductLink($product['id_product'], $product['link_rewrite'], Category::getLinkRewrite(intval(Tools::getValue('id_category')), $cookie->id_lang))).$affiliate."]]></link>\n";
        echo 
"\t\t</item>\n";
    }
?>
    </channel>
</rss>
alguna sugerencia ?? de como agregar el <pubDate>

gracias
  #4 (permalink)  
Antiguo 19/11/2012, 12:42
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: problema con <pubDate> para archivo rss

Solucionado, por si a alguien le sirve esta es la solucion, tenia mal la sintaxi:

Cita:
echo "\t\t<pubDate><![CDATA[$fecha]]></pubDate>\n";
el problema que tengo ahora es que cuando haclen click en mi enlace del rss, se abre una pagina xml con los productos, pero no se abre ningun programa de rss tipo "RSS FEED READER" que lo tengo instalado, etc... alguna sugerencia del porque ???, les dejo mi codigo por si les sirve de ayuda para ver el problema..

Cita:
<?php
include(dirname(__FILE__).'/../../config/config.inc.php');
require_once(dirname(__FILE__).'/../../init.php');

// Get data
$number = (intval(Tools::getValue('n')) ? intval(Tools::getValue('n')) : 10);
$orderByValues = array(0 => 'name', 1 => 'price', 2 => 'date_add', 3 => 'date_upd', 4 => 'position');
$orderWayValues = array(0 => 'ASC', 1 => 'DESC');
$orderBy = Tools::strtolower(Tools::getValue('orderby', $orderByValues[intval(Configuration::get('PS_PRODUCTS_ORDER_BY'))]));
$orderWay = Tools::strtoupper(Tools::getValue('orderway', $orderWayValues[intval(Configuration::get('PS_PRODUCTS_ORDER_WAY') )]));
if (!in_array($orderBy, $orderByValues))
$orderBy = $orderByValues[0];
if (!in_array($orderWay, $orderWayValues))
$orderWay = $orderWayValues[0];
$id_category = (intval(Tools::getValue('id_category')) ? intval(Tools::getValue('id_category')) : 1);
$products = Product::getProducts(intval($cookie->id_lang), 0, ($number > 10 ? 10 : $number), $orderBy, $orderWay, $id_category, true);
$currency = new Currency(intval($cookie->id_currency));
$affiliate = (Tools::getValue('ac') ? '?ac='.intval(Tools::getValue('ac')) : '');
// Send feed
$fecha = date('d-m-Y');

// Send feed
header("Content-Type:text/xml; charset=utf-8");
echo '<?xml version="1.0" encoding="UTF-8"?>'."\n";


?>
<rss version="2.0">


<channel>
<title><![CDATA[<?php echo Configuration::get('PS_SHOP_NAME') ?>]]></title>
<link><?php echo _PS_BASE_URL_.__PS_BASE_URI__; ?></link>
<mail><?php echo Configuration::get('PS_SHOP_EMAIL') ?></mail>
<generator>PrestaShop</generator>
<language><?php echo Language::getIsoById(intval($cookie->id_lang)); ?></language>
<image>
<title><![CDATA[<?php echo Configuration::get('PS_SHOP_NAME') ?>]]></title>
<url><?php echo _PS_BASE_URL_.__PS_BASE_URI__.'img/logo.jpg'; ?></url>
<link><?php echo _PS_BASE_URL_.__PS_BASE_URI__; ?></link>
</image>
<?php

foreach ($products AS $product)
{
$image = Image::getImages(intval($cookie->id_lang), $product['id_product']);
echo "\t\t<item>\n";
echo "\t\t\t<title><![CDATA[".$product['name']." - ".html_entity_decode(Tools::displayPrice(Product:: getPriceStatic($product['id_product']), $currency), ENT_COMPAT, 'UTF-8')." ]]></title>\n";
echo "\t\t\t<description>&lt;img src=&quot;"._PS_BASE_URL_.__PS_BASE_URI__."img/p/".$image[0]['id_product']."-".$image[0]['id_image']."-medium.jpg&quot; title=&quot;".str_replace('&', '', $product['name'])."&quot; alt=&quot;thumb&quot; /&gt;
<![CDATA[".$product['description_short']."]]></description>\n";
echo "\t\t<pubDate><![CDATA[$fecha]]></pubDate>\n";
echo "\t\t\t<link><![CDATA[".htmlspecialchars($link->getproductLink($product['id_product'], $product['link_rewrite'], Category::getLinkRewrite(intval(Tools::getValue('i d_category')), $cookie->id_lang))).$affiliate."]]></link>\n";
echo "\t\t</item>\n";
}
?>


</channel>
</rss>

les dejo el enlace tambien aquí
gracias...
  #5 (permalink)  
Antiguo 19/11/2012, 13:47
 
Fecha de Ingreso: octubre-2007
Mensajes: 724
Antigüedad: 16 años, 6 meses
Puntos: 4
Respuesta: problema con <pubDate> para archivo rss

por si necesitais para ver el problema os dejo tambien el archivo config.xml :

Código PHP:
<?xml version="1.0" encoding="UTF-8" ?>
        <module>
            <name>feeder</name>
            <displayName><![CDATA[RSS products feed]]></displayName>
            <version><![CDATA[0.2]]></version>
            <description><![CDATA[Generate a RSS products feed]]></description>
            <author><![CDATA[PrestaShop]]></author>

            <tab><![CDATA[front_office_features]]></tab>
            <is_configurable>0</is_configurable>
            <need_instance>0</need_instance>
    <limited_countries></limited_countries>
        </module>

Etiquetas: html, rss
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:02.