Écrit par Selige Mercredi, 30 Mars 2011 15:45
Il a été demandé un flux direct. Un flux pour Google shopping sans avoir à refaire un export RSS. Bien que je ne sois pas pour le faire, j'ai pris 5 minutes.Je ne suis pas pour avoir un tel flux pour plusieurs raisons :
Un flux direct suppose que l'on fasse un fichier en php. Il y a déjà un tel fichier sur le forum Joomla! concernant un flux pour Leguide.com. Il ne reste plus qu'à l'adapter.
Alors en premier, vérifiez bien que vous avez mis le nom de votre site, la description et le titre de votre flux.
Si ce n'est pas le cas, vous aurez des problèmes.
Enregistrez ce code dans une nouvelle page en php que vous appelerez googleflux.php par exemple, mettez le en racine de votre site et testez le sur votre navigateur.
>?php define('DOMAIN', 'http://'.$_SERVER['HTTP_HOST'].'/', true); set_time_limit(0); ignore_user_abort(); error_reporting(E_ALL ^ E_NOTICE); function remplacetxt($document){ $search = array('@<script[^>]*?>.*?</script>@si', '@<style[^>]*?>.*?</style>@siU', '@<[?]php[^>].*?[?]>@si', '@<[?][^>].*?[?]>@si', '@<[\/\!]*?[^<>]*?>@si', '@<![\s\S]*?--[ \t\n\r]*>@', '@([\r\n])[\s]+@', '@&(quot|#34);@i', '@&(amp|#38);@i', '@&(lt|#60);@i', '@&(gt|#62);@i', '@&(nbsp|#160);@i', '@&(iexcl|#161);@i', '@&(cent|#162);@i', '@&(pound|#163);@i', '@&(copy|#169);@i', '@&#(\d+);@e' ); $text = preg_replace($search, '', $document); return $text; } function getampers($document){ $text = preg_replace('#&#', 'et', $document); return $text; } $absolute_path_config = "./"; // Include configuration file if(!file_exists($absolute_path_config . "configuration.php")) { exit('<HTML><HEAD><TITLE>404 Not Found</TITLE></HEAD><BODY>Not Found</BODY></HTML>'); } else { require_once($absolute_path_config . "configuration.php"); } // Used for compatibility with Joomla 1.5 if (file_exists($absolute_path_config . 'administrator/components/com_virtuemart/compat.joomla1.5.php')) { define( '_VALID_MOS', 1 ); define( '_JEXEC', 1 ); include_once($absolute_path_config . 'administrator/components/com_virtuemart/compat.joomla1.5.php' ); } define('VMPREFIX', '$vm',true); // Connect to the database $conn = @mysql_connect($mosConfig_host, $mosConfig_user, $mosConfig_password); if (mysql_error()) { print "<HTML><HEAD><TITLE>404 Not Found</TITLE></HEAD><BODY>Not Found <p>Connection error. Please check the connection settings. Bye bye...</p></BODY></HTML>"; exit; } else { @mysql_select_db($mosConfig_db, $conn); if (mysql_error()) { print "<HTML><HEAD><TITLE>404 Not Found</TITLE></HEAD><BODY>Not Found</BODY></HTML>"; exit; } } Header( 'Content-Type: text/xml' ); $export = '<?xml version="1.0" encoding="UTF-8"?>'; $export .= '<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0">'; $export .='<channel>'; $export .='<title>titre</title>'; $export .='<link>'.DOMAIN.'</link>'; $export .='<description>70 caracteres maxi</description>'; $sql=@mysql_query('SELECT category_id , category_name , category_flypage from '.$vm.'vm_category'); while($res=@mysql_fetch_assoc($sql)) { $cat[$res['category_id']]=$res['category_name']; $catf[$res['category_id']]=$res['category_id']; } $sql=@mysql_query('SELECT * from '.$vm.'vm_product_category_xref'); while($res=@mysql_fetch_assoc($sql)) { $cats[$res['product_id']][strtolower($cat[$res['category_id']])]=strtoupper(substr($cat[$res['category_id']],0,1)).strtolower(substr($cat[$res['category_id']],1,10000)); $catId[$res['product_id']][$res['category_id']]=$categoryid; } $sql=@mysql_unbuffered_query('SELECT DISTINCT * FROM '.$vm.'vm_product LEFT JOIN '.$vm.'vm_product_discount ON '.$vm.'vm_product.product_discount_id = '.$vm.'vm_product_discount.discount_id LEFT JOIN '.$vm.'vm_product_mf_xref ON '.$vm.'vm_product_mf_xref.product_id = '.$vm.'vm_product.product_id LEFT JOIN '.$vm.'vm_manufacturer ON '.$vm.'vm_product_mf_xref.manufacturer_id = '.$vm.'vm_manufacturer.manufacturer_id LEFT JOIN '.$vm.'vm_product_price ON '.$vm.'vm_product_price.product_id = '.$vm.'vm_product.product_id LEFT JOIN '.$vm.'vm_tax_rate ON '.$vm.'vm_tax_rate.tax_rate_id = '.$vm.'vm_product.product_tax_id where product_publish= \'Y\' and product_price IS NOT NULL'); while($res=@mysql_fetch_assoc($sql)) { $price=round(100*(($res['product_price']*$res['tax_rate'])+$res['product_price']))/100; $export .= '<item>'; $export .= '<g:id>'.$res['product_sku'] .'</g:id>'; $export .= '<g:condition>new</g:condition>'; $export .= '<g:quantity>'.$res['product_in_stock'].'</g:quantity>'; $export .= '<g:brand>'.remplacetxt($res['mf_name']) .'</g:brand>'; $export .= '<description>'.remplacetxt(substr(strip_tags(str_replace(array('<BR>',' '), "</P>\n<P>",$res['product_desc'])),0,244)) .'</description>'; $export .= '<title>'.remplacetxt($res['product_name']) .'</title>'; $export .= '<g:product_type>'.remplacetxt(getampers(strip_tags(implode('>',$cats[$res['product_id']])))) .'</g:product_type>'; $export .= '<g:price>'. $price .' EUR</g:price>'; $export .= '<link>'.DOMAIN.'index.php?page=shop.product_details&product_id='. $res['product_id'] .'&option=com_virtuemart&Itemid=29</link>'; $export .= '<g:image_link>'.DOMAIN.'components/com_virtuemart/shop_image/product/'. $res['product_thumb_image'].'</g:image_link>'; $export .= '</item>'; } $export .='</channel>'; $export .= '</rss>'; echo $export; ?>




Commentaires
Le titre du flux doit résumer votre boutique. Vous pouvez mettre le nom de votre boutique, mais il vaut mieux que ce soit un titre référençable.
Pour ce qui est de l insertion, j ai fait une intro dessus sur http://blog.selige.fr/Ameliorer-Virtuemart/developpement-virtuemartjoomla/google-shopping.html
Je suis pas a votre niveau. Mais j'ai besoin d'aide.
Que dois je écrire à : Titre de votre flux ? Un nom en rapport a l'activité ? Et je ne vois pas noter la différence entre: nouveau flux de donnée et nouveau flux de donnée texte ? Et pouquoi sont ils écrit chacun 2 fois ? Ou dois je rentrer mes données produits.
Je viens chercher de l'aide.
J'avoue ne rien comprendre à votre echange plus haut.
J'ai une ptite question qui va sûrement vous paraître idiote,mais par pitié si vous pouviez me repondre, je pourrais passer a l'étape suivante.
Mon problème ::
J'ai valider mon Url, et je dois maintenant enregistrer mes flux (donc mes produits à vendre, si j'ai bien compris).
Mon souci est :
1/ que doit on marquer au niveau de " titre de votre flux " ?
Est ce le domaine d'activité ???
2/ et a quel moment dois je entrer mes données sur mes produits : nom produit, prix, description. ....
3/et pourquoi y a t-il :
a) nouveau flux de données
b)nouveau flux de données test
que dois je faire et ne pas faire?
Je sais que par rapport à vos échanges plus haut, mes.questions ont l'air stupides
Merci pour les aides, S'il vous plait explication simples demandées !!!Urgent Bien à vous .Koumy
Merci Stéphane pour ce code, je vais essayer de mettre en place en flux test.
C'est vrai que com-export est déjà très bien fait et facile à utiliser
S’abonner au flux RSS pour les commentaires de cet article.