osCommerce France : Accueil Forum Portail osCommerce France Réponses aux questions Foire aux contributions

Bienvenue invité ( Connexion | Inscription )

7 Pages V  < 1 2 3 4 > »   
Reply to this topicStart new topic
> Google Merchant ou Google Products ou encore Google Shopping, Quelqu'un connait?
Acuponctus
posté 29 Oct 2010, 09:26
Message #26


Ceinture jaune OSC
Icône de groupe

Groupe : Membres
Messages : 68
Inscrit : 18-July 05
Lieu : Paris
Membre no 6539



Bonjour,
ok je vais tester les différentes modifs.

sinon combien de temps mets google à intégrer vos produits ?
pour un site ou j'ai envoyé seulement 22 produits, ca fait 10 jours et ca apparait toujours pas.
j'ai le sablier pour tous les produits (en attente d'évaluation) et pour products ads, c'est inclus dans l'index de recherche.
et pour un produit j'ai même la colonne Impr. avec la valeur 6, je comprends donc 6 impressions.

Bon WE


--------------------
osCommerce MS2
CRE Loaded6 v4 Fr Sp1.2 RC2
Go to the top of the page
 
dvf
posté 29 Oct 2010, 09:27
Message #27


Ceinture orange+ OSC
Icône de groupe

Groupe : Membres
Messages : 346
Inscrit : 21-December 05
Membre no 8273



Types de codage pris en chargePartager Imprimer
Google Shopping prend en charge les codages UTF-8, UTF-16, Latin-1, Windows-1252 et ASCII. Si vous n'êtes pas sûr du codage de votre fichier, sélectionnez l'option Détection automatique.

Si vous utilisez le Bloc-notes pour enregistrer votre fichier, sélectionnez Enregistrer sous, puis choisissez ANSI ou UTF-8 dans Codage. Si votre fichier n'est pas codé dans l'un de ces types de codage, il ne sera pas traité.

Important : Si vous envoyez un fichier XML utilisant le codage Latin-1 ou UTF-16, veillez à le spécifier dans le fichier. Pour ce faire, dans la première ligne de votre fichier de données, remplacez <?xml version=" 1.0"?> par l'un des éléments suivants :

Pour le codage Latin-1 : <?xml version="1.0" encoding="ISO-8859-1"?>
Pour le codage UTF-16 : <?xml version="1.0" encoding="UTF-16"?>
selon vos formats donc
Go to the top of the page
 
mickael34
posté 29 Oct 2010, 09:44
Message #28


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 181
Inscrit : 3-January 08
Membre no 20263



Pour moi, ils ont mis 5 jours à me vérifier mon flux manuellement
(et pour le moment à me le refouler...)


--------------------
Sur OsCommerce 2.2
Go to the top of the page
 
dvf
posté 29 Oct 2010, 09:49
Message #29


Ceinture orange+ OSC
Icône de groupe

Groupe : Membres
Messages : 346
Inscrit : 21-December 05
Membre no 8273



nous on est intégrer depuis hier

http://img146.imageshack.us/img146/2212/googleln.jpg

mais on a beaucoup d "info en base

UPC/ean
Marques
Fabricants
Poids , ect ....

+ d'infos possible , google attend surement des informations complète...

On a fournit quelques milliers d'EAN. ect..
Go to the top of the page
 
Jesam
posté 29 Oct 2010, 10:04
Message #30


Ceinture jaune OSC
Icône de groupe

Groupe : Membres
Messages : 56
Inscrit : 24-April 06
Lieu : Paris
Membre no 10102



Pour dvf

As-tu fais une action quelconque pour que les avis sur ta boutique apparaissent dans le GG Merchant : 4 avis sur le marchand

Ton fichier envoyé était-il en texte ou en XML. Si en XML avais-tu mis "neuf" ou "new" pour la condition du produit ?
Go to the top of the page
 
dvf
posté 29 Oct 2010, 10:33
Message #31


Ceinture orange+ OSC
Icône de groupe

Groupe : Membres
Messages : 346
Inscrit : 21-December 05
Membre no 8273



moi je taff tjs en fichier plat c'est toujours plus simple pour tout le monde que de parser un flux xml. qui peut faire beaucou d'erreur facilement.

ah ces avis de gens qui postent que ceux qui sont pas content et qui ont 2 ans ////

c'est google qui attache.

Faudra du coup que je montre une campagne d'avis sur un comparateur pour avoir des notes dans google ;:)
Go to the top of the page
 
Jesam
posté 29 Oct 2010, 10:56
Message #32


Ceinture jaune OSC
Icône de groupe

Groupe : Membres
Messages : 56
Inscrit : 24-April 06
Lieu : Paris
Membre no 10102



Citation
Faudra du coup que je montre une campagne d'avis sur un comparateur pour avoir des notes dans google ;:)


C'est la même réflexion que je me suis fait quand j'ai vu ces avis.

Go to the top of the page
 
mickael34
posté 29 Oct 2010, 11:39
Message #33


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 181
Inscrit : 3-January 08
Membre no 20263



Dvf, effectivement ton fichier est correct. Merci

GG vient de me valider le flux.
Mes produits sont en lignes.


--------------------
Sur OsCommerce 2.2
Go to the top of the page
 
dvf
posté 29 Oct 2010, 12:34
Message #34


Ceinture orange+ OSC
Icône de groupe

Groupe : Membres
Messages : 346
Inscrit : 21-December 05
Membre no 8273



attention à adapter le tout quand même car je vous ai juste donné le fichier d'export
j'ai fait des modifs dans l'export.php pour avoir les bonnes infos

Go to the top of the page
 
mickael34
posté 29 Oct 2010, 12:43
Message #35


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 181
Inscrit : 3-January 08
Membre no 20263



j'ai effectivement virer les infos dont je n'avais pas besoin : manufacturer2, code barre...


--------------------
Sur OsCommerce 2.2
Go to the top of the page
 
tofquer
posté 4 Nov 2010, 08:33
Message #36


Ceinture jaune OSC
Icône de groupe

Groupe : Membres
Messages : 56
Inscrit : 16-October 06
Lieu : Brest
Membre no 12677



Bonjour,

j'ai réussi à envoyer un fichier de données .txt sans installer UExport en utilisant une base de fichier csv pour un site comparateur. Mes produits sont bien pris en compte sur GGmerchant depuis le 30 octobre mais ils sont toujours en attente d'évaluation ?



--------------------
osCommerce 2.2-MS2 + header tag SEO + SEO url rewriting + loginbox
Go to the top of the page
 
Jesam
posté 4 Nov 2010, 08:51
Message #37


Ceinture jaune OSC
Icône de groupe

Groupe : Membres
Messages : 56
Inscrit : 24-April 06
Lieu : Paris
Membre no 10102



Pour un site:
Upload de 249 produits le 25 octobre.
Sur la page Rapport sur les performances (menu de gauche) en bas de page Rapport hebdomadaire, sous offres je suis à 249 (le nb de produits uploader) depuis hier et aucun n'est actif.

Je suis comme toi. Je ne comprend pas pourquoi c'est si long et qu'aucun produit après plus de 10 jours après l'upload ne soit actif.
Go to the top of the page
 
mickael34
posté 4 Nov 2010, 11:57
Message #38


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 181
Inscrit : 3-January 08
Membre no 20263



La validation de la mise en ligne des produits est faite manuellement par un technicien GG.
Donc effectivement c'est long surtout que c'est le début...

Dans mon secteur d'activité, nous sommes en France plusieurs dizaines de boutiques... Et actuellement nous sommes 2 à être référencé.
C'est la preuve que pour l'instant peu de boutiques sont présentes par rapport au nombre total.



Cela dit, pour ceux que que le tracking intéresse, dans mon code posté plus haut, j'ai modifié la ligne de l'url des produits par :

$output .= tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products['products_id']) . "?utm_source=google&utm_medium=cp&utm_campaign=google-merchant" . "\t";

En effet, GG Shopping m'annonce une quarantaine de clics/jour mais dans GG Analytics, ces clics sont "noyés" dans les visites venant de Google organic.

J'ai donc ajouter le tracking : ?utm_source=google&utm_medium=cp&utm_campaign=google-merchant
basé le l'outil de création d'url de google ici

afin de différencier les visites du référencement naturel et celle de GG Shopping (google-merchant).

Si ça peut interresser smile.gif

Ce message a été modifié par mickael34 - 4 Nov 2010, 12:19.


--------------------
Sur OsCommerce 2.2
Go to the top of the page
 
Acuponctus
posté 4 Nov 2010, 22:10
Message #39


Ceinture jaune OSC
Icône de groupe

Groupe : Membres
Messages : 68
Inscrit : 18-July 05
Lieu : Paris
Membre no 6539



Bonsoir,

effectivement c'est une très très bonne idée :
Citation
J'ai donc ajouter le tracking : ?utm_source=google&utm_medium=cp&utm_campaign=google-merchant


du cout je fais les modifs ce soir.

pour info j'ai un site avec 22 produits qui a mis 2 semaines pour être inséré
un autre avec 6000 produits qui viennent d'être validés, suite à un mail reçu, en 3 semaines
et un autre avec plus de 40000 produits qui est en attente.

c'est effectivement manuel, et c'est sans doute la raison pour laquelle c'est long

Bonne nuit

Ce message a été modifié par Acuponctus - 4 Nov 2010, 22:10.


--------------------
osCommerce MS2
CRE Loaded6 v4 Fr Sp1.2 RC2
Go to the top of the page
 
yyoossssii
posté 5 Nov 2010, 11:16
Message #40


Ceinture blanche+ OSC
Icône de groupe

Groupe : Membres
Messages : 31
Inscrit : 1-November 06
Lieu : Israel
Membre no 12992



Il faut un peu de patience, ils répondent sur ce mail: googlebase-support@google.com.

@mickael34: très bonne idée, merci

yossi
Go to the top of the page
 
tofquer
posté 8 Nov 2010, 08:39
Message #41


Ceinture jaune OSC
Icône de groupe

Groupe : Membres
Messages : 56
Inscrit : 16-October 06
Lieu : Brest
Membre no 12677



Bonjour, smile.gif

Je viens de recevoir un email de GGMerchant refusant mes annonces en raison de quelques petites erreurs que je dois corriger et ensuite répondre au mail reçu pour demander à revoir le flux de mes produits.

1 semaine en gros d'attente, pour moi, pour que GGM regarde mes données.


--------------------
osCommerce 2.2-MS2 + header tag SEO + SEO url rewriting + loginbox
Go to the top of the page
 
optimum
posté 15 Nov 2010, 11:15
Message #42


Ceinture blanche OSC
Icône de groupe

Groupe : Membres
Messages : 2
Inscrit : 15-November 10
Membre no 28292



bonjour,

tout d'abord merci à tous pour votre contrib... bien utile pour un newbie comme moi smile.gif

j'ai cependant un problème... le code de "dvf" marche bien, sauf que pour l'image, étant donné que j'ai pour chaque produit une petite image et une image plus grosse, il me prend la petite image, ce qui ne plait pas a Google apparement puisqu'il ne l'affiche pas dans mes fiches produits..

quelle modif puis-je faire sur le code pour que la grosse image soit prise en compte ?

Go to the top of the page
 
Acuponctus
posté 15 Nov 2010, 11:22
Message #43


Ceinture jaune OSC
Icône de groupe

Groupe : Membres
Messages : 68
Inscrit : 18-July 05
Lieu : Paris
Membre no 6539



il faut simplement modifier le code afin qu'il prenne la grande image


--------------------
osCommerce MS2
CRE Loaded6 v4 Fr Sp1.2 RC2
Go to the top of the page
 
optimum
posté 15 Nov 2010, 11:27
Message #44


Ceinture blanche OSC
Icône de groupe

Groupe : Membres
Messages : 2
Inscrit : 15-November 10
Membre no 28292



merci beaucoup Acuponctus, le probleme est que je ne sais pas quel code il faut modifier pour que ca marche !

j'ai bien compris que le code de l'image était celui la "$output .= HTTP_SERVER . DIR_WS_HTTP_CATALOG . DIR_WS_IMAGES . $products['products_image'] ."\t";"

mais comment le modifier pour que ce soit la grosse image prise en compte?

Ce message a été modifié par optimum - 15 Nov 2010, 11:30.
Go to the top of the page
 
Acuponctus
posté 15 Nov 2010, 13:30
Message #45


Ceinture jaune OSC
Icône de groupe

Groupe : Membres
Messages : 68
Inscrit : 18-July 05
Lieu : Paris
Membre no 6539



ca dépend de la base données
y a t il une contrib particulière pour les images gérées ?
peux tu mettre un exemple de la table products


--------------------
osCommerce MS2
CRE Loaded6 v4 Fr Sp1.2 RC2
Go to the top of the page
 
xawaks
posté 29 Nov 2010, 23:01
Message #46


Ceinture marron OSC
Icône de groupe

Groupe : Membres
Messages : 1315
Inscrit : 17-March 04
Lieu : Gard
Membre no 2145



blink.gif

Salut à tous...

Je craque avec notre pote Google !!!

Il m'est absolument impossbile d'envoyer mes produit sur google merchant.

J'ai essayé diverses façons (flux rss, google base, google feeder, export universel) et à chaque fois il y a un problème.

Après de multiples tentatives, j'ai des produits mais le prix est HT...

Vous auriez une piste ?

Voici le fichier qui fonctionne ... presque wink.gif
Code
<?php
//  Title: Google Base / Froogle Data Feeder 2.5
//  Last Update: 12/25/09 by Jack_mcs at oscommerce-solution.com


/*************** BEGIN MASTER SETTINGS ******************/

define('SEO_ENABLED','false');    //Change to 'false' to disable if Ultimate SEO URLs is not installed
define('FEEDNAME', 'test.txt');       //from your googlebase account
define('DOMAIN_NAME', 'www.lxxxxx'); //your correct domain name (don't include www unless it is used)
define('FTP_USERNAME', 'googleFTP-username'); //created from within your googlebase account
define('FTP_PASSWORD', 'googleFTP-password'); //created from within your googlebase account
define('FTP_ENABLED', '0');      //set to 0 to disable
define('CONVERT_CURRENCY', '0'); //set to 0 to disable - only needed if a feed in a difference currecny is required
define('CURRENCY_TYPE', 'EUR');  //(eg. USD, EUR, GBP)
define('DEFAULT_LANGUAGE', 1);   //Change this to the id of your language.  BY default 1 is english
define('QUOTES_CATEGORY_NAME',''); //if the Quotes contribution is installed, enter the name of the quotes category here

define('OPTIONS_ENABLED', 1);
define('OPTIONS_ENABLED_AGE_RANGE', 0);
define('OPTIONS_ENABLED_ATTRIBUTES', 0);
define('OPTIONS_ENABLED_BRAND', 1);
define('OPTIONS_ENABLED_CONDITION', 1);
define('OPTIONS_ENABLED_CURRENCY', 0);
define('OPTIONS_ENABLED_FEED_LANGUAGE', 0);
define('OPTIONS_ENABLED_FEED_QUANTITY', 0);
define('OPTIONS_ENABLED_MADE_IN', 0);
define('OPTIONS_ENABLED_MANUFACTURER', 1);         //displays the manufacturer name
define('OPTIONS_ENABLED_PAYMENT_ACCEPTED', 0);
define('OPTIONS_ENABLED_PRODUCT_MODEL', 0); //displays the product model
define('OPTIONS_ENABLED_PRODUCT_TYPE', 0);
define('OPTIONS_ENABLED_SHIPPING', 0);
define('OPTIONS_ENABLED_INCLUDE_TAX', 0);
define('OPTIONS_ENABLED_UPC', 0);
define('OPTIONS_ENABLED_WEIGHT', 0);

//the following only matter if the matching option is enabled above.
define('OPTIONS_AGE_RANGE', '0-9');
define('OPTIONS_BRAND', '');
define('OPTIONS_CONDITION', 'New');  //possible entries are New, Refurbished, Used
define('OPTIONS_DEFAULT_CURRENCY', 'EUR');
define('OPTIONS_DEFAULT_FEED_LANGUAGE', 'fr');
define('OPTIONS_LOWEST_SHIPPING', ''); //this is not binary.  Custom Code is required to provide the shipping cost per product.  ###needs to be an array for per product.
define('OPTIONS_MADE_IN', 'USA');
define('OPTIONS_MANUFACTURERS_NAME_IGNORE', ''); //list if comma separated manufacturer names to be skipped - e.g. Matrox,Fox
define('OPTIONS_PAYMENT_ACCEPTED_METHODS', ''); //Acceptable values: cash, check, GoogleCheckout, Visa, MasterCard, AmericanExpress, Discover, wiretransfer
define('OPTIONS_TAX_RATE', 0); //default = 0 (e.g. for 17.5% tax use 17.5)
define('OPTIONS_WEIGHT_ACCEPTED_METHODS', 'kg'); //Valid units include lb, pound, oz, ounce, g, gram, kg, kilogram.

/*************** END MASTER SETTINGS ******************/

/*************** NO EDITS NEEDED BELOW THIS LINE *****************/

require_once('../includes/configure.php');

if (! function_exists("tep_not_null"))
{
  function tep_not_null($value) {
    if (is_array($value)) {
      if (sizeof($value) > 0) {
        return true;
      } else {
        return false;
      }
    } else {
      if (($value != '') && (strtolower($value) != 'null') && (strlen(trim($value)) > 0)) {
        return true;
      } else {
        return false;
      }
    }
  }
}

if(SEO_ENABLED=='true'){
  //********************
  // Modification for SEO
  // Since the ultimate SEO was only installed on the public side, we will include our files from there.
  require_once('../includes/filenames.php');
  require_once('../includes/database_tables.php');
  
  include_once('../' .DIR_WS_CLASSES . 'seo.class.php');
  $seo_urls = new SEO_URL(DEFAULT_LANGUAGE);

  function tep_href_link($page = '', $parameters = '', $connection = 'NONSSL', $add_session_id = true, $search_engine_safe = true) {
     global $seo_urls;
     return $seo_urls->href_link($page, $parameters, $connection, $add_session_id);
  }
}

//********************
//  Start TIMER
//  -----------
$stimer = explode( ' ', microtime() );
$stimer = $stimer[1] + $stimer[0];
//  -----------


$OutFile = "../feeds/" . FEEDNAME;
$destination_file = FEEDNAME;  
$source_file = $OutFile;
$imageURL = 'http://' . DOMAIN_NAME . '/images/';
if(SEO_ENABLED=='true'){
   $productURL = 'product_info.php'; // ***** Revised for SEO
   $productParam = "products_id=";   // ***** Added for SEO
}else{
   $productURL = 'http://' . DOMAIN_NAME . '/product_info.php?products_id=';
}

$already_sent = array();
$taxCalc = (OPTIONS_ENABLED_INCLUDE_TAX ? (OPTIONS_TAX_RATE/100) + 1 : 1);  //Do not edit

if(CONVERT_CURRENCY)
{
   if(SEO_ENABLED=='true'){
       $productParam="currency=" . CURRENCY_TYPE . "&products_id=";
   }else{
       $productURL = "http://" . DOMAIN_NAME . "/product_info.php?currency=" . CURRENCY_TYPE . "&products_id=";  //where CURRENCY_TYPE is your currency type (eg. USD, EUR, GBP)
   }
}

$feed_exp_date = date('Y-m-d', time() + 2505600 );

if (!($link=mysql_connect(DB_SERVER,DB_SERVER_USERNAME,DB_SERVER_PASSWORD)))
{
echo "Error when connecting itself to the data base";
exit();
}
if (!mysql_select_db( DB_DATABASE , $link ))
{
echo "Error the data base does not exist";
exit();
}

$quotes = '';
if (QUOTES_CATEGORY_NAME !== '') {
  $quotes = " and products.customers_email_address = '' and products.quotes_email_address = ''";
}  
  
$sql = "
SELECT concat( '" . $productURL . "' ,products.products_id) AS product_url,
products_model AS prodModel,
manufacturers.manufacturers_name AS mfgName,
manufacturers.manufacturers_id,
products.products_id AS id,
products_description.products_name AS name,
products_description.products_description AS description,
products.products_quantity AS quantity,
products.products_status AS prodStatus,
products.products_weight AS prodWeight,
FORMAT( IFNULL(specials.specials_new_products_price, products.products_price) * " . $taxCalc . ",2) AS price,
CONCAT( '" . $imageURL . "' ,products.products_image) AS image_url,
products_to_categories.categories_id AS prodCatID,
categories.parent_id AS catParentID,
categories_description.categories_name AS catName
FROM (categories,
categories_description,
products,
products_description,
products_to_categories)

left join manufacturers on ( manufacturers.manufacturers_id = products.manufacturers_id )
left join specials on ( specials.products_id = products.products_id AND ( ( (specials.expires_date > CURRENT_DATE) OR (specials.expires_date is NULL) OR (specials.expires_date = 0) ) AND ( specials.status = 1 ) ) )

WHERE products.products_id=products_description.products_id
AND products.products_id=products_to_categories.products_id
AND products_to_categories.categories_id=categories.categories_id
AND categories.categories_id=categories_description.categories_id " . $quotes . "
ORDER BY
products.products_id ASC
";

$quotes = '';
if (QUOTES_CATEGORY_NAME !== '') {
  $quotes = " and categories_description.categories_name NOT LIKE '" . QUOTES_CATEGORY_NAME . "' ";
}

$catInfo = "
SELECT
categories.categories_id AS curCatID,
categories.parent_id AS parentCatID,
categories_description.categories_name AS catName
FROM
categories,
categories_description
WHERE categories.categories_id = categories_description.categories_id " . $quotes;

function findCat($curID, $catTempPar, $catTempDes, $catIndex)
{
    if( (isset($catTempPar[$curID])) && ($catTempPar[$curID] != 0) )
    {
        if(isset($catIndex[$catTempPar[$curID]]))
        {
            $temp=$catIndex[$catTempPar[$curID]];
        }
        else
        {
            $catIndex = findCat($catTempPar[$curID], $catTempPar, $catTempDes, $catIndex);
            $temp = $catIndex[$catTempPar[$curID]];
        }
    }
    if( (isset($catTempPar[$curID])) && (isset($catTempDes[$curID])) && ($catTempPar[$curID] == 0) )
    {
        $catIndex[$curID] = $catTempDes[$curID];
    }
    else
    {
        $catIndex[$curID] = $temp . ", " . $catTempDes[$curID];
    }
    return $catIndex;

}

$catIndex = array();
$catTempDes = array();
$catTempPar = array();
$processCat = mysql_query( $catInfo )or die( $FunctionName . ": SQL error " . mysql_error() . "| catInfo = " . htmlentities($catInfo) );
while ( $catRow = mysql_fetch_object( $processCat ) )
{
    $catKey = $catRow->curCatID;
    $catName = $catRow->catName;
    $catParID = $catRow->parentCatID;
    if($catName != "")
    {
        $catTempDes[$catKey]=$catName;
        $catTempPar[$catKey]=$catParID;
    }
}

foreach($catTempDes as $curID=>$des)  //don't need the $des
{
    $catIndex = findCat($curID, $catTempPar, $catTempDes, $catIndex);
}

$_strip_search = array(
"![\t ]+$|^[\t ]+!m", // remove leading/trailing space chars
'%[\r\n]+%m'); // remove CRs and newlines
$_strip_replace = array(
'',
' ');
$_cleaner_array = array(">" => "&gt;", "&reg;" => "", "Æ" => "", "&trade;" => "", "ô" => "", "\t" => "", "    " => "", "<" => "&lt;", "&" => "&amp;");

if ( file_exists( $OutFile ) )
unlink( $OutFile );

$output = "link\ttitle\tdescription\texpiration_date\tprice\timage_link\tproduct_type\tid";
$attributesColumns = array();

//create optional section
if(OPTIONS_ENABLED == 1)
{
    if(OPTIONS_ENABLED_AGE_RANGE == 1)
        $output .= "\tage_range";
    if(OPTIONS_ENABLED_BRAND == 1)
        $output .= "\tbrand";
    if(OPTIONS_ENABLED_CONDITION == 1)
        $output .= "\tcondition";
    if(OPTIONS_ENABLED_CURRENCY == 1)
        $output .= "\tcurrency";
    if(OPTIONS_ENABLED_FEED_LANGUAGE == 1)
        $output .= "\tlanguage";
    if(OPTIONS_ENABLED_FEED_QUANTITY == 1)
        $output .= "\tquantity";
    if(OPTIONS_ENABLED_MADE_IN == 1)
        $output .= "\tmade_in";
    if(OPTIONS_ENABLED_MANUFACTURER == 1)
        $output .= "\tmanufacturer";
    if(OPTIONS_ENABLED_PAYMENT_ACCEPTED == 1)
        $output .= "\tpayment_accepted";
    if(OPTIONS_ENABLED_PRODUCT_MODEL == 1)
        $output .= "\tmpn";
    if(OPTIONS_ENABLED_PRODUCT_TYPE == 1)
        $output .= "\tproduct_type";
    if(OPTIONS_ENABLED_SHIPPING == 1)
        $output .= "\tshipping";
    if(OPTIONS_ENABLED_UPC == 1)
        $output .= "\tupc";
    if(OPTIONS_ENABLED_WEIGHT == 1)
        $output .= "\tweight";
    
  if (OPTIONS_ENABLED_ATTRIBUTES == 1)
  {  
    $products_options_name_query = mysql_query("select distinct popt.products_options_id, popt.products_options_name from products_options popt, products_attributes patrib where popt.language_id = '" . (int)1 . "' order by popt.products_options_name") or die(mysql_error());
    while ($products_options_name = mysql_fetch_object($products_options_name_query)) {
      $attributesColumns[] = $products_options_name->products_options_name;
      $name = strtolower($products_options_name->products_options_name);
      $name = str_replace(" ","_", $name);  
      $output .= "\tc:" . $name;
    }
    
    /*
    //If you want to only show particular attributes, comment out the above and uncomment this section.
    //Then enter two lines for each one you want to show. For example, if the atttributes you want to
    //show are named Color and Fabric, the entries would appear as follows:
    
    $attributesColumns[] = "Color";
    $attributesColumns[] = "Fabric";
    
    $output .= "\tc:" . strtolower("Color");
    $output .= "\tc:" . strtolower("Fabric");
    */  
  }
}
$output .= "\n";


$result=mysql_query( $sql )or die( $FunctionName . ": SQL error " . mysql_error() . "| sql = " . htmlentities($sql) );

//Currency Information
if(CONVERT_CURRENCY)
{
    $sql3 = "
    SELECT
    currencies.value AS curUSD
    FROM
    currencies
    WHERE currencies.code = '" . CURRENCY_TYPE . "'";

    $result3=mysql_query( $sql3 )or die( $FunctionName . ": SQL error " . mysql_error() . "| sql3 = " . htmlentities($sql3) );
    $row3 = mysql_fetch_object( $result3 );
}

$loop_counter = 0;

while( $row = mysql_fetch_object( $result ) )
{
    if (isset($already_sent[$row->id])) continue; // if we've sent this one, skip the rest of the while loop

    if( $row->prodStatus == 1 || (OPTIONS_ENABLED == 1 && $quantity == 1) )
    {
        if (CONVERT_CURRENCY)
        {
            $row->price = ereg_replace("[^.0-9]", "", $row->price);
            $row->price = $row->price *  $row3->curUSD;
            $row->price = number_format($row->price, 2, '.', ',');
        }
            
      if(SEO_ENABLED=='true'){
            $output .= tep_href_link($productURL,$productParam . $row->id) . "\t" .
            preg_replace($_strip_search, $_strip_replace, strip_tags( strtr($row->name, $_cleaner_array) ) ) . "\t" .
            preg_replace($_strip_search, $_strip_replace, strip_tags( strtr($row->description, $_cleaner_array) ) ) . "\t" .
            $feed_exp_date . "\t" .
            $row->price . "\t" .
            $row->image_url . "\t" .
            $catIndex[$row->prodCatID] . "\t" .
            $row->id;
      }else{
              $output .= $row->product_url . "\t" .
              preg_replace($_strip_search, $_strip_replace, strip_tags( strtr($row->name, $_cleaner_array) ) ) . "\t" .
              preg_replace($_strip_search, $_strip_replace, strip_tags( strtr($row->description, $_cleaner_array) ) ) . "\t" .
              $feed_exp_date . "\t" .
              $row->price . "\t" .
              $row->image_url . "\t" .
              $catIndex[$row->prodCatID] . "\t" .
              $row->id;
      }    

      //optional values section
      if(OPTIONS_ENABLED == 1)
      {
         if(OPTIONS_ENABLED_AGE_RANGE == 1)
            $output .= " \t " . OPTIONS_AGE_RANGE;
         if(OPTIONS_ENABLED_BRAND == 1)
            $output .= " \t " . OPTIONS_BRAND;
         if(OPTIONS_ENABLED_CONDITION == 1)
            $output .= " \t " . OPTIONS_CONDITION;
         if(OPTIONS_ENABLED_CURRENCY == 1)
            $output .= " \t " . OPTIONS_DEFAULT_CURRENCY;
         if(OPTIONS_ENABLED_FEED_LANGUAGE == 1)
            $output .= " \t " . OPTIONS_DEFAULT_FFEED_LANGUAGE;
         if(OPTIONS_ENABLED_FEED_QUANTITY == 1)
            $output .= " \t " . $row->quantity;
         if(OPTIONS_ENABLED_MADE_IN == 1)    
            $output .= " \t " . OPTIONS_MADE_IN;
         if(OPTIONS_ENABLED_MANUFACTURER == 1)
            $output .= " \t " . (in_array($row->mfgName,explode(",",OPTIONS_MANUFACTURERS_NAME_IGNORE)) ? '' : $row->mfgName);
         if(OPTIONS_ENABLED_PAYMENT_ACCEPTED == 1)
            $output .= " \t " . OPTIONS_PAYMENT_ACCEPTED_METHODS;
         if(OPTIONS_ENABLED_PRODUCT_MODEL == 1)
            $output .= " \t " . $row->prodModel;
         if(OPTIONS_ENABLED_PRODUCT_TYPE == 1)
         {
            $catNameTemp = strtolower($catName);
            $output .= " \t " . $row->catName;
         }
         if(OPTIONS_ENABLED_SHIPPING == 1)
            $output .= " \t " . OPTIONS_LOWEST_SHIPPING;
         if(OPTIONS_ENABLED_UPC == 1)
            $output .= " \t " . "Not Supported";
         if(OPTIONS_ENABLED_WEIGHT == 1)
            $output .= " \t " . $row->prodWeight . ' ' .OPTIONS_WEIGHT_ACCEPTED_METHODS;
        
         /******************* BEGIN HANDLING THE ATTRIBUTES ********************/
         if (OPTIONS_ENABLED_ATTRIBUTES == 1)
         {
            $products_attributes_query = mysql_query("select count(*) as total from products_options popt, products_attributes patrib where patrib.products_id='" . $row->id . "' and patrib.options_id = popt.products_options_id and popt.language_id = '" . (int)1 . "'");
            $products_attributes = mysql_fetch_object($products_attributes_query);
            if ($products_attributes->total > 0) {
              $products_options_name_query = mysql_query("select distinct popt.products_options_id, popt.products_options_name from products_options popt, products_attributes patrib where patrib.products_id='" . (int)$row->id . "' and patrib.options_id = popt.products_options_id and popt.language_id = '" . (int)1 . "' order by popt.products_options_name") or die(mysql_error());
        
              $trackTabs = '';
              
              while ($products_options_name = mysql_fetch_object($products_options_name_query)) {
                $products_options_array = array();      
                $products_options_query = mysql_query("select pov.products_options_values_id, pov.products_options_values_name, pa.options_values_price, pa.price_prefix from products_attributes pa, products_options_values pov where pa.products_id = '" . (int)$row->id . "' and pa.options_id = '" . $products_options_name->products_options_id . "' and pa.options_values_id = pov.products_options_values_id and pov.language_id = '" . (int)1 . "'");
                while ($products_options = mysql_fetch_object($products_options_query)) {
                  $products_options_array[] = array('id' => $products_options->products_options_values_id, 'text' => $products_options->products_options_values_name);
                }
        
                for ($a = 0; $a < count($attributesColumns); ++$a)
                {
                   if ($products_options_name->products_options_name == $attributesColumns[$a])
                   {
                     if ($a == 0)
                       $trackTabs = "\t";
                     else
                     {
                       if (empty($trackTabs))
                         $trackTabs = str_repeat("\t", $a);
                       $trackTabs .= "\t";  
                     }    
                  
                     $output .= $trackTabs;
                     foreach ($products_options_array as $arr)
                       $output .=  $arr['text'] . ',';
                     $output = substr($output, 0, -1);  
                   }
                }
              }
            }
         }
         /******************* END HANDLING THE ATTRIBUTES ********************/                  
      }
      $output .= " \n";
   }
  
   $already_sent[$row->id] = 1;
   $loop_counter++;

   if ($loop_counter>750) {
      $fp = fopen( $OutFile , "a" );
      $fout = fwrite( $fp , $output );
      fclose( $fp );
      $loop_counter = 0;
      $output = "";
   }
}

$fp = fopen( $OutFile , "a" );
$fout = fwrite( $fp , $output );
fclose( $fp );
echo "File completed: <a href=\"" . $OutFile . "\" target=\"_blank\">" . $destination_file . "</a><br>\n";
chmod($OutFile, 0777);


//Start FTP

function ftp_file( $ftpservername, $ftpusername, $ftppassword, $ftpsourcefile, $ftpdirectory, $ftpdestinationfile )
{
// set up basic connection
$conn_id = ftp_connect($ftpservername);
if ( $conn_id == false )
{
echo "FTP open connection failed to $ftpservername <BR>\n";
return false;
}

// login with username and password
$login_result = ftp_login($conn_id, $ftpusername, $ftppassword);

// check connection
if ((!$conn_id) || (!$login_result)) {
echo "FTP connection has failed!<BR>\n";
echo "Attempted to connect to " . $ftpservername . " for user " . $ftpusername . "<BR>\n";
return false;
} else {
echo "Connected to " . $ftpservername . ", for user " . $ftpusername . "<BR>\n";
}

if ( strlen( $ftpdirectory ) > 0 )
{
if (ftp_chdir($conn_id, $ftpdirectory )) {
echo "Current directory is now: " . ftp_pwd($conn_id) . "<BR>\n";
} else {
echo "Couldn't change directory on $ftpservername<BR>\n";
return false;
}
}

ftp_pasv ( $conn_id, true );
// upload the file
$upload = ftp_put( $conn_id, $ftpdestinationfile, $ftpsourcefile, FTP_ASCII );

// check upload status
if (!$upload) {
echo "$ftpservername: FTP upload has failed!<BR>\n";
return false;
} else {
echo "Uploaded " . $ftpsourcefile . " to " . $ftpservername . " as " . $ftpdestinationfile . "<BR>\n";
}

// close the FTP stream
ftp_close($conn_id);

return true;
}

if (FTP_ENABLED)
ftp_file( "uploads.google.com", FTP_USERNAME, FTP_PASSWORD, $source_file, "", $destination_file);

//End FTP


//  End TIMER
//  ---------
$etimer = explode( ' ', microtime() );
$etimer = $etimer[1] + $etimer[0];
echo '<p style="margin:auto; text-align:center">';
printf( "Script timer: <b>%f</b> seconds.", ($etimer-$stimer) );
echo '</p>';
//  ---------

?>


Merci de votre aide


--------------------
Pax Vobiscum

MS2 fr (merci sieur Delaballe) + collisimo + Administration access level V2.3 + Down for maintenance + payment cards infobox + Cybermut + catalog PDF + titre pages référencement thematrixisme + adaptation pop_up loup solitaire + Star products + no double clics by JeanLuc + Must agree to terms + Ship in cart V1.90 + personnal invoice number + vente croisée by Decad7 + loginbox + Flux RSS perso-Manmachine + Onglets perso + salemaker + product on order + tabs + CCGV + featured products + expeditor inet + numero tracking perso + edit order + box newsletter perso + intégration blog dotclear/boutique perso + popup perso pour adresse hotmail lors de la création de compte + export perso-gnidhal pour les factures en csv + stock tacking cost + reclamaposte + notifications rupture de stock perso
---------------------------------------
Le tout sur VDS1024 : Apache 1.3.41 + Linux 2.6.24-18-server + PHP 5.2.6 + MySQL 5.0.18
---------------------------------------
Et en local sous MAC OS X 10.5.8
Go to the top of the page
 
Jesam
posté 29 Nov 2010, 23:30
Message #47


Ceinture jaune OSC
Icône de groupe

Groupe : Membres
Messages : 56
Inscrit : 24-April 06
Lieu : Paris
Membre no 10102



Je viens de voir ton post avant d'aller me coucher. M'a l'air bien complexe.

Pourquoi ne pas partir de l'export universel et du fichier transmis soit pour générer un fichier XML soit un fichier texte.

L'intérêt du fichier XML est que tu sais s'il y a des erreurs quand tu l'envoie à GG Merchant et tu peux corriger facilement.

Je serais toi, je reprendrais l'EU et le fichier pour export XML et tu nous dis ce qui ne vas pas, en commençant par générer un fichier simple et minimal.
Go to the top of the page
 
Gnidhal
posté 29 Nov 2010, 23:35
Message #48


5eme dan OSC
Icône de groupe

Groupe : Administrateur
Messages : 9221
Inscrit : 4-March 03
Lieu : Pau
Membre no 927



Je vois 2 lignes dans ton code :
33 : define('OPTIONS_ENABLED_INCLUDE_TAX', 0);
47 : define('OPTIONS_TAX_RATE', 0); //default = 0 (e.g. for 17.5% tax use 17.5)

donc passe la première variable à 1 et la seconde à 19.6 par exemple. Mais dans ce cas il faut envoyer des prix ttc
or ton code récupère le prix des produits en HT ($row->price) sans se soucier de la tva
Il n'utilise d'ailleurs pas les fonction natives osC, ce qui est dommage car il existe un tep_add_tax dans la bibliothèque osc de base.
Il manque dans ta requete la récup du tax_class_id dans la table products et la conversion de cet id en ratio via la table tax_rates. La classe currencies peut aussi mettre en forme tes prix plutôt que de convertir les affichages : (lignes 331 à 336)

Ces parties de code me semble complètement à revoir.


--------------------
Tout d'abord : - Ni Hotline ni Service Après Vente, ces forums sont un lieu d'échange. BIEN POSER SA QUESTION (généralités)
Les "Informations Importantes" que vous devez ABSOLUMENT avoir lues :
Règlement, Bien poser sa question dans ces forums et Bien utiliser les Forums.
Les raccourcis pour gagner du temps : la FAQ, les PDF de la Doc (MS2-fr): PDF-V1 et PDF-V2, le moteur de Recherche sur les forums , la Liste des Contributions de Corbin.

----------------------------- Quelques sites de référence ---------------------------
PHP: Le site du Zéro et PHP Débutant avec la DOC en français -- HTML: Self HTML - WebProgrammation -- CSS: OpenWeb - AlsaCréations - CSS/Edge -- Autres ressources: - XajaX - highslide js
Les bons outils : EasyPHP - WAMP-5 - - Notepad++ - Firefox et son extension WebDeveloper
Le gène idéal c'est le gène original. Le génie des halles est un Génie des Alpages qui tente d'être à la page. (Merci f'murrr pour les cours de philosophie de chien)
Go to the top of the page
 
xawaks
posté 29 Nov 2010, 23:39
Message #49


Ceinture marron OSC
Icône de groupe

Groupe : Membres
Messages : 1315
Inscrit : 17-March 04
Lieu : Gard
Membre no 2145



Merci à vous deux pour les pistes...

Le soucis Gnidhal c'est que j'ai deux TVA (19,6 et 5,5) ben oui sinon c'est pas drôle wink.gif

Bon je vais re-regarder ça.


--------------------
Pax Vobiscum

MS2 fr (merci sieur Delaballe) + collisimo + Administration access level V2.3 + Down for maintenance + payment cards infobox + Cybermut + catalog PDF + titre pages référencement thematrixisme + adaptation pop_up loup solitaire + Star products + no double clics by JeanLuc + Must agree to terms + Ship in cart V1.90 + personnal invoice number + vente croisée by Decad7 + loginbox + Flux RSS perso-Manmachine + Onglets perso + salemaker + product on order + tabs + CCGV + featured products + expeditor inet + numero tracking perso + edit order + box newsletter perso + intégration blog dotclear/boutique perso + popup perso pour adresse hotmail lors de la création de compte + export perso-gnidhal pour les factures en csv + stock tacking cost + reclamaposte + notifications rupture de stock perso
---------------------------------------
Le tout sur VDS1024 : Apache 1.3.41 + Linux 2.6.24-18-server + PHP 5.2.6 + MySQL 5.0.18
---------------------------------------
Et en local sous MAC OS X 10.5.8
Go to the top of the page
 
Gnidhal
posté 30 Nov 2010, 00:06
Message #50


5eme dan OSC
Icône de groupe

Groupe : Administrateur
Messages : 9221
Inscrit : 4-March 03
Lieu : Pau
Membre no 927



ok, perso j'utilise ce code pour gg merchant :
Code
<?php
/*
$Id: g_merchant.php,v 1 20/11/2010 18:30:26:fxm - gnidhal Exp $

osCommerce, Open Source E-Commerce Solutions

Copyright © 2010 osCommerce

Released under the GNU General Public License
*/
function clean_desc($t){
   $t = nl2br($t);
   $t = strip_tags(preg_replace('`<br(\s?\/)?'.'>`i', "\n",html_entity_decode($t)));
   $t = htmlspecialchars($t);
   return $t;
}
require('includes/application_top.php');


define ('DISPLAY_PRICE_WITH_TAX', true);

  $content = '<?xml version="1.0" encoding="ISO-8859-1"?'.'>'."\n";
  $content .= '<rss version="2.0"
  xmlns:g="http://base.google.com/ns/1.0">'."\n";
  $content .= '  <channel>'."\n";
  $content .= '<title>Catalogue de '. HTTP_SERVER . DIR_WS_HTTP_CATALOG.'</title>'."\n";
  $content .= '<link>'. HTTP_SERVER . DIR_WS_HTTP_CATALOG.'</link>'."\n";
  $content .= '<description>Description du site</description>'."\n";

// On vérifie la langue utilisée dans le catalogue
$language_code = (isset($HTTP_GET_VARS['language']) && tep_not_null($HTTP_GET_VARS['language'])) ? $HTTP_GET_VARS['language'] : DEFAULT_LANGUAGE;


// Requête identifiant les produits disponibles dans le catalogue
$products_query = tep_db_query("SELECT p.*, pd.products_name, pd.products_description as description FROM " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd WHERE p.products_id = pd.products_id AND p.products_status = 1 AND pd.language_id = FLOOR($languages_id) ORDER BY p.products_price, pd.products_name ");

$product_num = 0;

while($products = tep_db_fetch_array($products_query)) {

if (intval($products['manufacturers_id']) > 0) {
  $manufacturers_query = tep_db_query("SELECT manufacturers_name FROM " . TABLE_MANUFACTURERS . " WHERE manufacturers_id = " . $products['manufacturers_id']);
  $manufacturers_result = tep_db_fetch_array($manufacturers_query);
  $products['manufacturers_name'] = $manufacturers_result['manufacturers_name'];
}

$special_query = tep_db_query("SELECT specials_new_products_price  FROM " . TABLE_SPECIALS . " WHERE products_id = " . $products['products_id']);
if ($special_result = tep_db_fetch_array($special_query))
  $products['products_price'] = $special_result['specials_new_products_price'];

$product_num++;
$content .= "<item>\n";
$content .= "\t<title>".$products['products_name']."</title>\n";
$content .= "\t<link>".tep_href_link("product_info.php?products_id=". $products['products_id'])."</link>\n";
$content .= "\t<description>".clean_desc($products['description'])."</description>\n";
$content .= "\t<g:image_link>".HTTP_SERVER . DIR_WS_HTTP_CATALOG . DIR_WS_IMAGES . $products['products_image']."</g:image_link>\n";
$content .= "\t<g:price>".preg_replace('`€`',' EUR',$currencies->display_price($products['products_price'], tep_get_tax_rate($products['products_tax_class_id'])))."</g:price>\n";
$content .= "\t<g:brand>".$products['manufacturers_name']."</g:brand>\n";
$content .= "\t<g:condition>new</g:condition>\n";
$content .= "\t<g:availability>in stock</g:availability>\n";
$content .= "\t<g:shipping_weight>".round($products['products_weight'])." kg</g:shipping_weight>\n";
$content .= "\t<g:id>".$products['products_model'].'_'.$products['products_id']."</g:id>\n";
$content .= "</item>\n";
}

$content .= "</channel>\n";
$content .= "</rss>\n";
/** Activer la ligne suivante pour écrire un fichier rss xml à la racine, attention uniquement PHP5!**/
//file_put_contents('g_merchant.xml', $content);
// tep_redirect('g_merchant.xml'); // optionnel
Header( 'Content-Type: text/xml' );
echo $content;
require(DIR_WS_INCLUDES . 'application_bottom.php');
?>

c'est réduit à l'essentiel mais ça fonctionne.

Attention si les descriptions sont longues, il faudra peut-être les tronquer.
Enfin les lignes 26 et 28 sont à personnaliser pour le site.


--------------------
Tout d'abord : - Ni Hotline ni Service Après Vente, ces forums sont un lieu d'échange. BIEN POSER SA QUESTION (généralités)
Les "Informations Importantes" que vous devez ABSOLUMENT avoir lues :
Règlement, Bien poser sa question dans ces forums et Bien utiliser les Forums.
Les raccourcis pour gagner du temps : la FAQ, les PDF de la Doc (MS2-fr): PDF-V1 et PDF-V2, le moteur de Recherche sur les forums , la Liste des Contributions de Corbin.

----------------------------- Quelques sites de référence ---------------------------
PHP: Le site du Zéro et PHP Débutant avec la DOC en français -- HTML: Self HTML - WebProgrammation -- CSS: OpenWeb - AlsaCréations - CSS/Edge -- Autres ressources: - XajaX - highslide js
Les bons outils : EasyPHP - WAMP-5 - - Notepad++ - Firefox et son extension WebDeveloper
Le gène idéal c'est le gène original. Le génie des halles est un Génie des Alpages qui tente d'être à la page. (Merci f'murrr pour les cours de philosophie de chien)
Go to the top of the page
 

7 Pages V  < 1 2 3 4 > » 
Reply to this topicStart new topic
2 utilisateur(s) sur ce sujet (2 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



RSS Version bas débit Nous sommes le : 19th March 2024 - 09:13
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)