Flux direct Google shopping

Imprimer

Note des utilisateurs: / 0
MauvaisTrès bien 

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 :

  1. Vous ne serez pas maître du flux, et ce n'est pas la  meilleur chose vis à vis de Google.
  2.  Si vous avez des erreurs, vous ne pourrez pas les corriger manuellement dans le fichier.
  3.  Vous allez devoir corriger vous même l'encodage du fichier, et peut être manuellement corriger des données dans votre site, ce qui est un comble car je suppose que vous avez commençé votre référencement.
  4. Le composant com_export est fait pour que chacun puisse facilement l'adapter à ses besoins, à son site.

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;
?>