E-commerce: Google Shopping e osCommerce

E’ da inizio mese che Google Shopping ha fatto il suo ingresso anche in Italia.
Utilizzando il motorone di Mountain View sarà possibile navigare e cercare tra i prodotti di proprio interesse, pubblicati dai vari merchant.
Una grande e scomoda concorrenza per tutti quei portali che offrono servizi di comparazione prezzi.
Ecco alcuni link utili per approfondire:

Inviare l’elenco dei prodotti presenti nel proprio e-commerce non è difficile, basta estrarre tutti i record e seguire alcune linee guida.

Un mio cliente che aveva una versione vecchia ma personalizzata di osCommerce desiderava essere presente in Google Shopping.
Ci sono alcuni plugin che permettono di interfacciarsi con Google Shopping ma li ho trovati macchinosi e, spesso, difficili da configurare.
Ho scelto, così, come metodo di invio dei dati, la pubblicazione del datafeed sotto forma di file di testo scritto da uno script PHP.

Nota bene che c’è un set di dati obbligatori da estrarre dal db e inserire nel datafeed (vedi qui) e altri che sono consigliati.
AGGIORNAMENTO: Il valore MPN è diventato praticamente obbligatorio

Lo condivido sperando che possa essere utile a qualcun altro.

<?php
// connessione
$dbhost = ‘tuohost’;
$dbuser = ‘tuouser’;
$dbpass = ‘tuapass’;

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die (‘Error connecting to mysql’);

$dbname = ‘nometuodb’;
mysql_select_db($dbname);

$query = ”
select p.products_id,
pd.products_name,
pd.products_description,
manufacturers.manufacturers_name as mfgName,
manufacturers.manufacturers_id,
p.products_price,
p.products_image,
p.products_weight,
p.products_quantity
from products p
left join products_description pd on p.products_id = pd.products_id
left join manufacturers on manufacturers.manufacturers_id = p.manufacturers_id
where p.products_status = ‘1’ and p.products_quantity > ‘0’ order by p.products_id”;

// nome del file txt. Il nome può essere uno qualsiasi
$datafile=”miodominio-googlebase.txt”;

// lancio la query
$products_query = mysql_query($query);

// apro il file per scriverci
$file = fopen($datafile, “w”);

// scrivo le intestazioni dei dati che voglio inviare.
// Il separatore predefinito che ho scelto è il tab
$file_header = “id\tcondizione\tlink\ttitolo\tmarca\tdescrizione\tprezzo\tpeso spedizione\tlink_immagine\tquantit&agrave;\tmpn\n”;
fwrite($file, $file_header);

// ciclo attraverso i risultati per scrivere il datafeed
while ($products = mysql_fetch_array($products_query)) {

// i maggiori problemi sono dati dai caratteri della descrizione del prodotto
// la “pulizia” avviene in due passaggi
$descr_clean = preg_replace(“/^[^a-z0-9]?(.*?)[^a-z0-9]?$/i”, “$1”, strip_tags($products[‘products_description’]));

$_strip_search = array(
“![\t ]+$|^[\t ]+!m”, // rimuove spazi avanti e dietro che possono essere confusi con i tab
‘%[\r\n]+%m’); // rimuove a capo
$_strip_replace = array(
”,
‘ ‘);
$_cleaner_array = array(“>” => “> “, “&reg;” => “”, “®” => “”, “&trade;” => “”, “™” => “”, “\t” => “”, ”    ” => “”); //rimuove caratteri speciali

$descr_clean = preg_replace($_strip_search, $_strip_replace, strip_tags(strtr($products[‘products_description’], $_cleaner_array)));

// cerco se esiste l’immagine del prodotto altrimenti metto il no_image.png (questo file può variare da installazione a installazione di osCommerce)
if(!file_exists(“images/”.$products[‘products_image’])) {
$image = “http://www.miodominio.com/images/no_image.png”;
} else {
$image = “http://www.miodominio.com/images/”.$products[‘products_image’];
}

$price = number_format($products[‘products_price’], 2, ‘.’, ”); //formattazione euro

$prod_line = $products[‘products_id’].”\tnuovo\thttp://www.miodominio.com/product_info.php?products_id=”.$products[‘products_id’].”\t”.$products[‘products_name’].”\t”.$products[‘mfgName’].”\t”.substr($descr_clean, “0”, “400”).”\t”.$price.”\t”.$products[‘products_weight’].”\t”.$image.”\t”.$products[‘products_quantity’].”\t”.$products[‘products_id’].”\n”;

$line_to_write = htmlentities($prod_line);

fwrite($file, $line_to_write);
}

fclose($file);
?>

Lanciando questo script che io ho chiamato datafeedgoogle.php si crea un file di testo (miodominio-googlebase.txt) che poi deve essere segnalato nel pannello merchant di Google.
Ovviamente si può settare un cron job sul server in modo che ogni sera venga lanciato lo script per la creazione del file txt.
In questo modo, nello stesso pannello di configurazione del merchant, potremo segnalare che l’aggiornamento dei prodotti avviene giornalmente.

Link: Google Shopping

Scarica il file dell’esempio

Google Shopping
Google Merchant Center
la guida al Google Merchant Center
il blog di Google Merchant Center center
il punto di partenza per

Sergio Gandrus

Da marzo 2018 lavoro come Technical Manager presso PayClick
Programmo in ambiente LAMP e Angular 6.
Realizzo app mobile con Ionic Framework.
Sono papà e marito. Nel (poco) tempo libero mi piace leggere, il buon vino e viaggiare.

Ah, questo blog ha cambiato uso

Latest posts by Sergio Gandrus (see all)