lehangart Posted July 24, 2009 Share Posted July 24, 2009 Bonjour,Est ce que quelqu'un sait comment ajouter la date de publication des articles dans les flux générés par le module: "Flux RSS de produits v0.2"?Sans cela le flux n'est pas toujours prix en compte (notamment sur Twitter).Merci Link to comment Share on other sites More sharing options...
Natsu Posted July 24, 2009 Share Posted July 24, 2009 Salut,Quel date veux tu ?Edit:Ci-joint, le module modifié avec la date du jour et la date de modification des produit Edit 2:Suppression de l'ancien module Link to comment Share on other sites More sharing options...
lehangart Posted July 25, 2009 Author Share Posted July 25, 2009 MerciEn fait la date de publication n'apparait pas lorsqu'on est sur le flux des catégories maisest bien présente sur le flux de la page d'accueil...Je vais essayer ton module corrigé!Ps: le flux généré ne passe pas dans les validateur de flux tel que: www.feedvalidator.org Link to comment Share on other sites More sharing options...
lehangart Posted July 25, 2009 Author Share Posted July 25, 2009 Les dates de publications sont bien présentes mais il y a une erreur pour aller chercher les images dans la base de données... Link to comment Share on other sites More sharing options...
Natsu Posted July 26, 2009 Share Posted July 26, 2009 Hello,Désolé en weekend, bon je regarde dès demain matin, je rendrai le flux valide par la même occasion Link to comment Share on other sites More sharing options...
Natsu Posted July 28, 2009 Share Posted July 28, 2009 Hello,Voilà une nouvelle version du feeder qui cette fois est valide Voir -> http://www.feedvalidator.org/check.cgi?url=http://mods.u-web.org/test.xmlPour le test c'est un fichier xml que j'ai crée avec les source issu de prestashop Edit:Suppression de l'ancien module Link to comment Share on other sites More sharing options...
lehangart Posted July 30, 2009 Author Share Posted July 30, 2009 mercimais il y a toujours un pb pour twitter qui n'accepte pas les liens relatifs!peux tu me dire ce qu'il faut remplacer dans le code par http://www.monsite.com/ pour avoir le lien total... Link to comment Share on other sites More sharing options...
Natsu Posted July 31, 2009 Share Posted July 31, 2009 Théoriquement rien vu que je n'ai pas touché au lien, c'est prestashop qui créer les liens..Je regarde en arrivant au boulot, je vais forcer le fait qu'il mette http://www... car effectivement avec l'option rewritting ça ne met plus que les liens relatifsTu as mis le module sur ton site en signature ? Link to comment Share on other sites More sharing options...
lehangart Posted July 31, 2009 Author Share Posted July 31, 2009 Merci pour ton aide qui j'espere profitera à d'autres...Je n'ai pas compris ta question sur la siqnature. Link to comment Share on other sites More sharing options...
Natsu Posted July 31, 2009 Share Posted July 31, 2009 Je te demandais si tu avais installer le module sur http://www.to-buy-art.com simplement ^^ Link to comment Share on other sites More sharing options...
lehangart Posted July 31, 2009 Author Share Posted July 31, 2009 Il faut que je me réveille!!! un module dans une signature; je ne comprenais pas mais ça y est j'ai ouvert les yeux:oui le module est installé sur mon site. Link to comment Share on other sites More sharing options...
Natsu Posted July 31, 2009 Share Posted July 31, 2009 C'est étrange...Bon, j'ai fait quelque correction dans le module, je vais repacker le tout et le mettre en dl sur le sujet, je vais supprimer celui que j'ai mis dans ce poste. Link to comment Share on other sites More sharing options...
lehangart Posted August 1, 2009 Author Share Posted August 1, 2009 As tu résolu le problème des liens relatifs?J'ai essayé d'insérer mon nom de domaine dans le code du fichier RSS mais je ne dois pas avoir la bonne syntaxe!!!Je n'y comprends rien à ce language...Alors j'attends encore ton aide; merci d'avance! Link to comment Share on other sites More sharing options...
lehangart Posted August 2, 2009 Author Share Posted August 2, 2009 J'ai un peu modifié le fichier RSS pour avoir des liens non relatifs.Si ça interesse quelqu'un il suffira de modifier le nom de domaine (www.to-buy-art.com) par l'adresse de la racine de votre site...Le flux généré est validé sur http://beta.feedvalidator.orgLe fichier RSS.php de Natsu modifié pour mon site : <?php include(dirname(__FILE__).'/../../config/config.inc.php'); require_once(dirname(__FILE__).'/../../init.php'); /** * Fonction de conversion de date/heure du format am?icain (AAAA-MM-JJ HH:MM:SS) en Timestamp. * @param string $datetime Date/heure au format am?icain (AAAA-MM-JJ HH:MM:SS) * @return integer Timestamp en seconde */ function datetimeUS2Time($datetime) { list($date, $time) = explode(' ', $datetime); list($hour, $minute, $second) = explode(':', $time); list($year, $month, $day) = explode('-', $date); $timestamp = mktime($hour, $minute, $second, $month, $day, $year); return $timestamp; } // 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='.Tools::getValue('ac') : ''); $datepub = date(DATE_RSS); // Send feed header("Content-Type:text/xml; charset=utf-8"); $rss = ''; $rss .= '<?xml version="1.0" encoding="UTF-8"?>'."\n"; $rss .= ''; $rss .= "\t\n"; $rss .= "\t\t<title><![CDATA[".Configuration::get('PS_SHOP_NAME')."]]></title>\n"; $rss .= "\t\t<link>http://www.to-buy-art.com/</link>\n"; $rss .= "\t\t\n"; $rss .= "\t\t<![CDATA[ ".Configuration::get('PS_SHOP_NAME')." ]]>\n"; $rss .= "\t\t".Language::getIsoById(intval($cookie->id_lang))."\n"; $rss .= "\t\thttp://www.rssboard.org/rss-specification\n"; $rss .= "\t\tPrestaShop\n"; $rss .= "\t\tCopyright <![CDATA[ ".Configuration::get('PS_SHOP_NAME')." ]]>.\n"; $rss .= "\t\t".$datepub."\n"; $rss .= "\t\t1\n"; $rss .= "\t\t\n"; $rss .= "\t\t\t<title><![CDATA[ ".Configuration::get('PS_SHOP_NAME')." ]]></title>\n"; $rss .= "\t\t\thttp://www.to-buy-art.com/img/logo.jpg\n"; $rss .= "\t\t\t<link>http://www.to-buy-art.com/</link>\n"; $rss .= "\t\t\n"; foreach ($products AS $product) { $logged = date(DATE_RSS, datetimeUS2Time($product['date_upd'])); $image = Image::getImages(intval($cookie->id_lang), $product['id_product']); $rss .= "\t\t\n"; $rss .= "\t\t\t<title><![CDATA[".$product['name']." - ".html_entity_decode(Tools::displayPrice(Product::getPriceStatic($product['id_product']), $currency), ENT_COMPAT, 'UTF-8')." ]]></title>\n"; $rss .= "\t\t\t<link><![CDATA[http://www.to-buy-art.com".htmlspecialchars($link->getproductLink($product['id_product'], $product['link_rewrite'], Tools::getValue('id_category'))).$affiliate."]]></link>\n"; $rss .= "\t\t\t".$logged."\n"; $rss .= "\t\t\t<![CDATA[http://www.to-buy-art.com".htmlspecialchars($link->getproductLink($product['id_product'], $product['link_rewrite'], Tools::getValue('id_category'))).$affiliate."]]>\n"; $rss .= "\t\t\t<img src="http://www.to-buy-art.com/img/p/".$image[0]['id_product']."-".$image[0]['id_image']."-large.jpg" title="".$product['name']."" alt="thumb" /> <![CDATA[".$product['description_short']."]]>\n"; $rss .= "\t\t\n"; } $rss .= "\t\t\n"; $rss .= ""; file_put_contents('./../../rss.xml', $rss); echo $rss; ?> Link to comment Share on other sites More sharing options...
Tanao Posted August 3, 2009 Share Posted August 3, 2009 Ouhaa !C'est un super boulot que vous avez fait !J'avais moi aussi re-manier le fichier rss.php pour le rendre valide, mais pas au point qu'il génère de lui même un fichier rss.xml à la racine !!!Quand j'ai voulu essayer le code cité juste au-dessus par "lehangart", ça passait pas chez moi et chez lui nickel ...et j'ai trouvé pourquoi :il faut faire une modif. sur la ligne en dessous : $rss .= "\t\t\t J'ai cherché longtemps, mais je comprend pourquoi maintenant le BBcode du site interprète et modifie le code présenté...Au début, au lieu de.....<img src=....il faut mettre (j'espace les lettre volontairement ) & l t ; img src=.......et à la fin.........alt="thumb" / & g t ;il vous faudra donc enlever les espaces entre & l t ; et & g t ; qui sont traduit par < et >Mais après, ça marche nickel !Encore super boulot, merci à vous ! Link to comment Share on other sites More sharing options...
Natsu Posted August 3, 2009 Share Posted August 3, 2009 Oui, désolé je n'ai pas eu le temps de vous reposter le module comme je suis en vacances je suis parti un peu vite .Le code que tu donne dois fonctionner, ceci dit normalement j'avais résolu le problème Link to comment Share on other sites More sharing options...
lehangart Posted February 11, 2010 Author Share Posted February 11, 2010 Je republie le code qui prend en compte directement le nom de domaine...Il peut maintenant s'adapter à un site multilangue avec un nom de domaine (ou sous domaine) différent par langue. C'est intéressant quand vous voulez référencez votre flux dans les différentes langues. <?php include(dirname(__FILE__).'/../../config/config.inc.php'); require_once(dirname(__FILE__).'/../../init.php'); /** * Fonction de conversion de date/heure du format am?icain (AAAA-MM-JJ HH:MM:SS) en Timestamp. * @param string $datetime Date/heure au format am?icain (AAAA-MM-JJ HH:MM:SS) * @return integer Timestamp en seconde */ function datetimeUS2Time($datetime) { list($date, $time) = explode(' ', $datetime); list($hour, $minute, $second) = explode(':', $time); list($year, $month, $day) = explode('-', $date); $timestamp = mktime($hour, $minute, $second, $month, $day, $year); return $timestamp; } // 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='.Tools::getValue('ac') : ''); $datepub = date(DATE_RSS); // Send feed header("Content-Type:text/xml; charset=utf-8"); $rss = ''; $rss .= '<?xml version="1.0" encoding="UTF-8"?>'."\n"; $rss .= ''; $rss .= "\t\n"; $rss .= "\t\t<title><![CDATA[".Configuration::get('PS_SHOP_NAME')."]]></title>\n"; $rss .= "\t\t<link><![CDATA[".'http://'.htmlspecialchars($_SERVER['HTTP_HOST'], ENT_COMPAT, 'UTF-8').__PS_BASE_URI__."]]></link>\n"; $rss .= "\t\t\n"; $rss .= "\t\t<![CDATA[ ".Configuration::get('PS_SHOP_NAME')." ]]>\n"; $rss .= "\t\t".Language::getIsoById(intval($cookie->id_lang))."\n"; $rss .= "\t\thttp://www.rssboard.org/rss-specification\n"; $rss .= "\t\tPrestaShop\n"; $rss .= "\t\tCopyright <![CDATA[ ".Configuration::get('PS_SHOP_NAME')." ]]>.\n"; $rss .= "\t\t".$datepub."\n"; $rss .= "\t\t1\n"; $rss .= "\t\t\n"; $rss .= "\t\t\t<title><![CDATA[ ".Configuration::get('PS_SHOP_NAME')." ]]></title>\n"; $rss .= "\t\t\t<![CDATA[".'http://'.htmlspecialchars($_SERVER['HTTP_HOST'], ENT_COMPAT, 'UTF-8').__PS_BASE_URI__."img/logo.jpg]]>\n"; $rss .= "\t\t\t<link><![CDATA[".'http://'.htmlspecialchars($_SERVER['HTTP_HOST'], ENT_COMPAT, 'UTF-8').__PS_BASE_URI__."]]></link>\n"; $rss .= "\t\t\n"; foreach ($products AS $product) { $logged = date(DATE_RSS, datetimeUS2Time($product['date_upd'])); $image = Image::getImages(intval($cookie->id_lang), $product['id_product']); $rss .= "\t\t\n"; $rss .= "\t\t\t<title><![CDATA[".$product['name']." - ".html_entity_decode(Tools::displayPrice(Product::getPriceStatic($product['id_product']), $currency), ENT_COMPAT, 'UTF-8')." ]]></title>\n"; $rss .= "\t\t\t<link><![CDATA[".'http://'.htmlspecialchars($_SERVER['HTTP_HOST'], ENT_COMPAT, 'UTF-8').htmlspecialchars($link->getproductLink($product['id_product'], $product['link_rewrite'], Tools::getValue('id_category'))).$affiliate."]]></link>\n"; $rss .= "\t\t\t".$logged."\n"; $rss .= "\t\t\t<![CDATA[".'http://'.htmlspecialchars($_SERVER['HTTP_HOST'], ENT_COMPAT, 'UTF-8').htmlspecialchars($link->getproductLink($product['id_product'], $product['link_rewrite'], Tools::getValue('id_category'))).$affiliate."]]>\n"; $rss .= "\t\t\t<img src="http://".htmlspecialchars($_SERVER['HTTP_HOST'], ENT_COMPAT, 'UTF-8').__PS_BASE_URI__."img/p/".$image[0]['id_product']."-".$image[0]['id_image']."-large.jpg" title="".$product['name']."" alt="thumb" /> <![CDATA[".$product['description_short']."]]>\n"; $rss .= "\t\t\n"; } $rss .= "\t\t\n"; $rss .= ""; file_put_contents('./../../rss.xml', $rss); echo $rss; ?> Ps: attention à la remarque précédente sur les BBcodes Link to comment Share on other sites More sharing options...
darkv Posted March 2, 2012 Share Posted March 2, 2012 Salut, j'avais le meme probleme (en fait je recupere mes flux rss de catégories via rss graphiti pour publier sur le facebook et le twitter de ma boutique). Donc a cause des dates absentes du flux rss, le flux n'etait pas repris. J'ai bien essayé le code ci-dessus mais a priori pas compatible avec mon prestashop 1.4.7.0 donc j'ai fait un mix entre le rss.php d'origine de prestashop et les infos trouvée ici. donc j'ai modifié deux parties de rss.php // Get data $number = ((int)(Tools::getValue('n')) ? (int)(Tools::getValue('n')) : 10); $orderBy = Tools::getProductsOrder('by', Tools::getValue('orderby')); $orderWay = Tools::getProductsOrder('way', Tools::getValue('orderway')); $id_category = ((int)(Tools::getValue('id_category')) ? (int)(Tools::getValue('id_category')) : 1); $products = Product::getProducts((int)($cookie->id_lang), 0, ($number > 10 ? 10 : $number), $orderBy, $orderWay, $id_category, true); $currency = new Currency((int)($cookie->id_currency)); $affiliate = (Tools::getValue('ac') ? '?ac='.(int)(Tools::getValue('ac')) : ''); $datepub = date(DATE_RSS); ici, j'ai juste ajouté le $datepub = date(DATE_RSS); Plus loin ... foreach ($products AS $product) { $image = Image::getImages((int)($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<pubDate>".$datepub."</pubDate>\n"; echo "\t\t\t<description>"; $cdata = true; if (is_array($image) AND sizeof($image)) { $imageObj = new Image($image[0]['id_image']); echo "<![CDATA[<img src='"._PS_BASE_URL_._THEME_PROD_DIR_.$imageObj->getExistingImgPath()."-small.jpg' title='".str_replace('&', '', $product['name'])."' alt='thumb' />"; $cdata = false; } if ($cdata) echo "<![CDATA["; echo $product['description_short']."]]></description>\n"; echo "\t\t\t<link><![CDATA[".htmlspecialchars($link->getproductLink($product['id_product'], $product['link_rewrite'], Category::getLinkRewrite((int)($product['id_category_default']), $cookie->id_lang))).$affiliate."]]></link>\n"; echo "\t\t</item>\n"; } ici j'ai ajouté la ligne echo "\t\t<pubDate>".$datepub."</pubDate>\n"; Du coup j'ai bien la date des articles ajoutés et ca poste correctement sur mon facebook et mon twitter. voila ,je laisse ce temoignage pour ceux qui cherchent une solution aussi. a+ Link to comment Share on other sites More sharing options...
manouille Posted March 29, 2012 Share Posted March 29, 2012 Salut à tous. Darkv j'ai essayé ta solution. Le seul problème etait qu'a chaque fois qu'on rechargeait le flux, la date de publication changeait --> du coup rss grafitti remettait en boucle les infos. En outre, une date de publication ou de mise à jour ca doit être fixe ! De même les images n'etaient pas remontées. J'ai bidouillé un truc avec les solutions de ce fil qui marche parfaitement en se servant de la variable date_upd de la table product. Donc ca donne ceci : Pour les images il faut passer en medium car les small sont trop petites pour Rss Grafitti. Et il faut écrire la variable pubdate. J'ai fait d'autre modif pour rendre le flux RSS valide --> Ajout de la donnée Guid, suppression de Mail Voila si ca peut servir je vous mets le fichier rss.php en PJ à mettre dans le module feeder (apres avoir conservé le fichier original). Testé uniquement sur 1.4 rss.php Link to comment Share on other sites More sharing options...
darkv Posted March 29, 2012 Share Posted March 29, 2012 Merci manouille Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now