Google Merchant ou Google Products ou encore Google Shopping, Quelqu'un connait? |
Bienvenue invité ( Connexion | Inscription )
Google Merchant ou Google Products ou encore Google Shopping, Quelqu'un connait? |
21 Feb 2011, 15:42
Message
#76
|
|
Ceinture blanche OSC Groupe : Membres Messages : 17 Inscrit : 8-July 10 Membre no 27784 |
Merci beaucoup chrysalide
En effet, les slashs sont partis mangés par l'éditeur Je sais que c'est pas très bien les produits sans description mais ca concerne que peut de produits. Par contre, je viens de me rendre compte dans le schéma Google qu'il faut que je sépare en plus avec une virgule et bien sur, je sais pas ou mettre la virgule pour qu'elle apparaisse entre les attributs. Ce message a été modifié par stefstef - 21 Feb 2011, 15:43. |
|
21 Feb 2011, 16:52
Message
#77
|
|
5eme dan OSC Groupe : Administrateur Messages : 7634 Inscrit : 28-December 03 Lieu : Hollywood les Granits Membre no 1773 |
Code $output .= substr(strip_tags(html_entity_decode(str_replace(array('<BR>','<br>','<P>'), " ",str_replace("\r\n", "", $products['products_description'])))),0,250) . "\t"; Ca, ca nettoie, une vraie ptite fée. -------------------- |
|
21 Feb 2011, 18:25
Message
#78
|
|
Ceinture blanche OSC Groupe : Membres Messages : 17 Inscrit : 8-July 10 Membre no 27784 |
Merci oneill.
J'ai essayé mais ca ne va pas. J'arrive pas à me dépatouiller avec ce fichier, j'ai à chaque fois une erreur avec Google. Mon fichier est généré correctement mais pour l'instant j'ai pas les virgules entre les attributs je n'ai que la tabulation. Comment fait on un séparateur avec virgule au lieu de la tabulation? Voici 2 lignes de mon fichier export (généré avec le code PHP ci dessous) id title price link image link description brand condition "go950" "titre de produit" "prix" "http://www.url_produit.html" "http://www.url_image_produit.jpg" "description produit" "marque" "new" "go228" "titre de produit" "prix" "http://www.url_produit.html" "http://www.url_image_produit.jpg" "description produit" "marque" "new" Les erreurs avec Google sont les suivantes: Nombre de tabulations trop élevé (2000 erreurs) Vos articles contiennent plus d'attributs que ceux indiqués dans la ligne d'en-tête. En savoir plus Ligne de flux de données endommagée (50 erreurs) Impossible d'associer les attributs de vos articles à ceux de la ligne d'en-tête, car le codage est incorrect. Veuillez vous assurer que tous les caractères sont conformes au codage choisi. Si quelqu'un a la solution, je suis preneur. CODE $comp = array("GOOGLE");
$header = "Content-type: text/plain"; $head = "id\ttitle\tprice\tlink\timage link\tdescription\tbrand\tcondition\n"; $output .= "\""."go" . $products['products_id'] ."\"\t"; $output .= "\"".netoyage_html($products['products_name'], 80) . "\"\t"; $output .= "\"".$price ."\"\t"; $output .= "\"".tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products['products_id']) . $libre . "\"\t"; $output .= "\"".HTTP_SERVER . DIR_WS_HTTP_CATALOG . DIR_WS_IMAGES . $products['products_image'] ."\"\t"; $output .= "\"".netoyage_html($products['products_description'], 250) . "\"\t"; $output .= "\"".$products['manufacturers_name'] . "\"\t"; $output .= "\""."new"."\"\t"; $output .= "\n"; $foot = ''; ?> Ce message a été modifié par stefstef - 21 Feb 2011, 18:32. |
|
21 Feb 2011, 19:00
Message
#79
|
|
Ceinture bleue OSC Groupe : Modérateurs Messages : 1085 Inscrit : 29-November 04 Membre no 3935 |
Pourquoi coller des guillemets partout ?
si c'est ta description qui est problématique utilises des guillemets uniquement sur celle-ci edit : pourquoi mettre des virgules entre les attributs et qu'appelles tu des "attributs" car au dernières nouvelles l'utilisation des virgules c'est pour séparer les product_type dans la même cellule et pas ailleurs -------------------- Petit guide pour résoudre tout vos problèmes avec Oscommerce
FORK perso a base de MS2 RC1 FR avec deux trois contribs + pas mal de dev perso + beaucoup (trop ?) d'Ajax + un peu mais pas trop de flash + virer la structure tableau + de feuille de style + pas mal de <DIV id="****">.......... en gros ca ressemble plus trop a l'originale |
|
21 Feb 2011, 19:07
Message
#80
|
|
Ceinture blanche OSC Groupe : Membres Messages : 17 Inscrit : 8-July 10 Membre no 27784 |
A priori, si j'utilise les guillemets, je dois les utiliser sur les autres attributs. C'est comme ca que je l'ai compris en lisant ce tuto de Google.
http://www.google.com/support/merchants/bi...y?answer=160037 Je trouve pas la solution du séparateur avec virgule? Peux tu me renseigner? Merci Les attributs sont $head = "id\ttitle\tprice\tlink\timage link\tdescription\tbrand\tcondition\n"; actuellement le séparateur est la tabulation mais je pense que c'est ce qui pose problème. Ce message a été modifié par stefstef - 21 Feb 2011, 19:10. |
|
21 Feb 2011, 19:15
Message
#81
|
|
Ceinture bleue OSC Groupe : Modérateurs Messages : 1085 Inscrit : 29-November 04 Membre no 3935 |
j'ai eu 0 pbs avec les tabulations pourtant j'ai des descriptions a rallonge
as tu essayer d'importer ton fichier sous Excel ou Open Office pour voir le résultat de sortie ? EDIT: As tu essayé le script que j'ai filé la semaine dernière ? -------------------- Petit guide pour résoudre tout vos problèmes avec Oscommerce
FORK perso a base de MS2 RC1 FR avec deux trois contribs + pas mal de dev perso + beaucoup (trop ?) d'Ajax + un peu mais pas trop de flash + virer la structure tableau + de feuille de style + pas mal de <DIV id="****">.......... en gros ca ressemble plus trop a l'originale |
|
22 Feb 2011, 08:13
Message
#82
|
|
5eme dan OSC Groupe : Administrateur Messages : 7634 Inscrit : 28-December 03 Lieu : Hollywood les Granits Membre no 1773 |
Même question, pourquoi utiliser les virgules comme séparateur ?
La virgule étant un signe de ponctuation courant de la langue francaise, il n'est pas facile d'extraire du texte en faisant le distingo entre les "vrais" et les "séparateurs". La tabulation présente bien des avantages. Même si tu as des virgules ou des guillements dans tes textes ou tes attributs, il suffit que tu déclares sans guillemet et uniquement en tabulation. Va voir cette page et expand les exemples de google. http://www.google.com/support/merchants/bi...y?answer=188494 Arrete de t'entêter avec les virgules et les guillements. Mon premier envoi à google a été refusé une fois car mes titres étaient en majuscules aucun soucis de virgules, de guillemets ou je ne sais quoi. Le deuxième était bon. On commence à ne plus comprendre pourquoi tu te fais du mal à ce point la. -------------------- |
|
22 Feb 2011, 09:06
Message
#83
|
|
Ceinture blanche OSC Groupe : Membres Messages : 17 Inscrit : 8-July 10 Membre no 27784 |
Oui, merci oneill.
C'est clair et d'ailleurs j'ai arrêté car cela a fini par me faire perdre patience! J'ai repris la contrib retouchée par dvf mais cette fois ci en français et ca marche. A priori c'était le problème, car me concernant avec la version anglaise (je parle des attributs id/price/...) ca marchait pas (pourtant Google est censé faire la distinction!) donc résolu, merci à tous. J'ai quand même appris des choses, donc c'est plutôt positif. chrysalide, j'avais essayé ton nouveau script mais sans résultat. Peut être que ma version os ne colle pas. Ce message a été modifié par stefstef - 22 Feb 2011, 09:14. |
|
22 Feb 2011, 16:04
Message
#84
|
|
Ceinture bleue OSC Groupe : Modérateurs Messages : 1085 Inscrit : 29-November 04 Membre no 3935 |
Salut stefstef,
Peux tu me donner des précisions sur les pbs que tu as rencontré car j'ai bien vérifier de ne faire appel qu'a des infos présentes dans une base Oscommerce de base et avec ExU de base ? As tu suivi toute la procédure ou piqué uniquement le script ? Chez moi ça marche nickel et du premier coup. EDIT : Si quelqu'un a essayé d'utiliser ou utilise la méthodologie que j'ai pondu la semaine dernière dites moi ci ça marche ou pas car si il y a des soucis je corrigerai et ca servira a d'autres. -------------------- Petit guide pour résoudre tout vos problèmes avec Oscommerce
FORK perso a base de MS2 RC1 FR avec deux trois contribs + pas mal de dev perso + beaucoup (trop ?) d'Ajax + un peu mais pas trop de flash + virer la structure tableau + de feuille de style + pas mal de <DIV id="****">.......... en gros ca ressemble plus trop a l'originale |
|
22 Feb 2011, 18:13
Message
#85
|
|
Ceinture blanche OSC Groupe : Membres Messages : 17 Inscrit : 8-July 10 Membre no 27784 |
Salut chrysalide,
Je viens de retester ta solution et ca marche. Je suis désolé de t'avoir dit le contraire car c'est moi qui n'avait pas installé correctement les fichiers En effet, j'avais mis les dossiers ExU dans les fichiers respectifs english et french comme ceci /catalog/includes/languages/french/ExU ou lieu de les mettre dans "modules" Toutes mes félicitations, on peux aussi générer le catalogue anglais! |
|
25 Feb 2011, 14:29
Message
#86
|
|
Ceinture bleue OSC Groupe : Modérateurs Messages : 1085 Inscrit : 29-November 04 Membre no 3935 |
Petit retour d'expérience:
J'ai soumis un catalogue il y a quinze jours et celui-ci vient d'être validé ! J'en ai soumis un autre hier je verrai bien le temps qu'il faudra a celui-ci pour être validé. -------------------- Petit guide pour résoudre tout vos problèmes avec Oscommerce
FORK perso a base de MS2 RC1 FR avec deux trois contribs + pas mal de dev perso + beaucoup (trop ?) d'Ajax + un peu mais pas trop de flash + virer la structure tableau + de feuille de style + pas mal de <DIV id="****">.......... en gros ca ressemble plus trop a l'originale |
|
2 Mar 2011, 11:35
Message
#87
|
|
Ceinture orange OSC Groupe : Membres Messages : 171 Inscrit : 14-March 07 Lieu : Paris Membre no 15916 |
Bonjour à tous,
Je me permet de prendre ce fil en cours, en effet je m'étonne que personne n'ai utilisé de flux RSS afin d'automatisé toute mise à jour de façon quotidienne. Pour ce faire je suis parti de la contrib RSS feed que j'ai modifié pour avoir les sorties voulu par Google Merchand Center. Très simple à modifié et totalement automatique une fois mis en place. Si quelqu'un est intéressé par cette solution n'hésitez pas... -------------------- Garga.
Le developpement est un hobby pour moi et non mon metier. Je ne gere qu'un site web, le mien. Merci de votre indulgence. Version OSC & ADDs: oscommerce-2.2rc1-FR-w3c-3 + CCGV_fixed5xx + infoBox_Admin_v2_25_1 + CenterShop + Banner in Header + AntiRobotRegistrationValidation-3.1 + Scrolling Specials + shop by price + login box in header + Quick Stock + French Colissimo Shipping + French Letter Max + Individual Product Shipping Methods + ... |
|
2 Mar 2011, 12:11
Message
#88
|
|
5eme dan OSC Groupe : Administrateur Messages : 7634 Inscrit : 28-December 03 Lieu : Hollywood les Granits Membre no 1773 |
Oh surement parce qu'on est un petit peu fainéant ici...
Merci pour le rss -------------------- |
|
2 Mar 2011, 12:28
Message
#89
|
|
Ceinture bleue OSC Groupe : Modérateurs Messages : 1085 Inscrit : 29-November 04 Membre no 3935 |
L'automatisation n'a rien a voir avec un flux RSS. la maj du flux peut très bien se faire avec un fichier texte et panifier de façon quotidienne depuis google merchant.
-------------------- Petit guide pour résoudre tout vos problèmes avec Oscommerce
FORK perso a base de MS2 RC1 FR avec deux trois contribs + pas mal de dev perso + beaucoup (trop ?) d'Ajax + un peu mais pas trop de flash + virer la structure tableau + de feuille de style + pas mal de <DIV id="****">.......... en gros ca ressemble plus trop a l'originale |
|
2 Mar 2011, 12:41
Message
#90
|
|
Ceinture orange OSC Groupe : Membres Messages : 171 Inscrit : 14-March 07 Lieu : Paris Membre no 15916 |
C'est vrai que l'automatisation n'est pas lié au flux en lui même mais l'adresse de màj auto est bcp plus simple que http://www.MONSITE.com/export.php?format=r...e=fr&libre=, ca donne plutot une adresse du genre http://www.MONSITE.com/RSSGoogle.php
Enfin bref, si ca vous tente, après avoir installé la contrib RSS Feed, créez un fichier RSSGoogle.php et coller le code ci dessous: CODE <?php /* $Id: rssgoogle.php,v 2.0 2007/05/12 19:30:06 hpdl Exp $ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright © 2003 osCommerce Released under the GNU General Public License */ /* * Include the application_top.php script */ require('includes/application_top.php'); require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_RSS); $navigation->remove_current_page(); // If the language is not specified $lang_query = tep_db_query("select languages_id, code from " . TABLE_LANGUAGES . " where languages_id = '" . (int)$languages_id . "'"); // Recover the code (fr, en, etc) and the id (1, 2, etc) of the current language if (tep_db_num_rows($lang_query)) { $lang_a = tep_db_fetch_array($lang_query); $lang_code = $lang_a['code']; } define(RSS_STRIP_HTML_TAGS,false); // If the default of your catalog is not what you want in your RSS feed, then // please change this three constants: // Enter an appropriate title for your website define(RSS_TITLE, STORE_NAME); // Enter your main shopping cart link define(WEBLINK, HTTP_SERVER); // Enter a description of your shopping cart define(DESCRIPTION, TITLE); ///////////////////////////////////////////////////////////// //That's it. No More Editing (Unless you renamed DB tables or need to switch //to SEO links (Apache Rewrite URL) ///////////////////////////////////////////////////////////// $store_name = STORE_NAME; $rss_title = RSS_TITLE; $weblink = WEBLINK; $description = DESCRIPTION; $email_address = STORE_OWNER_EMAIL_ADDRESS; $subtitle = ''; function replace_problem_characters($text) { $formattags = array("&"); $replacevals = array("&"); $text = str_replace($formattags, $replacevals, $text); //$in[] = '@&(amp|#038);@i'; $out[] = '&'; $in[] = '@&(#036);@i'; $out[] = '$'; $in[] = '@&(quot);@i'; $out[] = '"'; $in[] = '@&(#039);@i'; $out[] = '\''; $in[] = '@&(nbsp|#160);@i'; $out[] = ' '; $in[] = '@&(eacute|#233);@i'; $out[] = 'é'; $in[] = '@&(egrave|#232);@i'; $out[] = 'è'; $in[] = '@&(hellip|#8230);@i'; $out[] = '...'; $in[] = '@&(copy|#169);@i'; $out[] = '©'; $in[] = '@&(trade|#129);@i'; $out[] = ''; $in[] = '@&(lt|#60);@i'; $out[] = '<'; $in[] = '@&(gt|#62);@i'; $out[] = '>'; $in[] = '@&(laquo);@i'; $out[] = '«'; $in[] = '@&(raquo);@i'; $out[] = '»'; $in[] = '@&(deg);@i'; $out[] = '°'; $in[] = '@&(mdash);@i'; $out[] = '—'; $in[] = '@&(reg);@i'; $out[] = '®'; $in[] = '@&(–);@i'; $out[] = '-'; $text = preg_replace($in, $out, $text); return $text; } function strip_html_tags($str) { // $document should contain an HTML document. // This will remove HTML tags, javascript sections // and white space. It will also convert some // common HTML entities to their text equivalent. $search = array ("'<script[^>]*?>.*?</script>'si", // Strip out javascript "'<[/!]*?[^<>]*?>'si", // Strip out HTML tags //"'([rn])[s]+'", // Strip out white space "'&(quot|#34);'i", // Replace HTML entities "'&(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"); // evaluate as php $replace = array ("", "", //"\1", "\"", "&", "<", ">", " ", chr(161), chr(162), chr(163), chr(169), "chr(\1)"); return preg_replace($search, $replace, $str); } if(!function_exists('eval_rss_urls')) { function eval_rss_urls($string) { // rewrite all local urls to absolute urls return preg_replace_callback("/(href|src|action)=[\"']{0,1}(\.{0,2}[\\|\/]{1})(.*?)[\"']{0,1}( .*?){0,1}>/is","rewrite_rss_local_urls",$string); //"/(href|src|action)=[\"']{0,1}(\.{2}[\\|\/]{1})(.*?)[\"']{0,1}( .*?){0,1}>/is" } } function rewrite_rss_local_urls($string) { $repl_text = $string[0]; $repl_by = HTTP_SERVER.'\\'; $repl_len = 0; $index_pos = strpos ( $repl_text , '..'); if ($index_pos > -1) { $repl_len = 2; } else { $index_pos = strpos ( $repl_text , '\"\\'); if ($index_pos > -1) { $repl_len = 0; $index_pos+=1; } } if ($index_pos > -1) { substr_replace($repl_text, $repl_by, $index_pos,2 ); } ob_start(); echo $repl_text; $return = ob_get_contents(); ob_end_clean(); return $return; } // to strip html or not to strip html tags if (isset($HTTP_GET_VARS['html'])) { if ($HTTP_GET_VARS['html']=='false') { $strip_html_tags = true; } else { $strip_html_tags = false; } } else { $strip_html_tags = RSS_STRIP_HTML_TAGS; } // show the products of a specified manufacturer if (isset($HTTP_GET_VARS['manufacturers_id'])) { if (isset($HTTP_GET_VARS['filter_id']) && tep_not_null($HTTP_GET_VARS['filter_id'])) { // We are asked to show only a specific category $listing_sql = "select " . $select_column_list . " p.products_id, p.manufacturers_id, p.products_model, p.products_price, p.products_image, p.products_date_added, pd.products_name, pd.products_description, m.manufacturers_name, cd.categories_name, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS . " p left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_MANUFACTURERS . " m, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c LEFT JOIN " . TABLE_CATEGORIES_DESCRIPTION . " cd ON p2c.categories_id = cd.categories_id where p.products_status = '1' and p.products_to_rss='1' and p.manufacturers_id = m.manufacturers_id and m.manufacturers_id = '" . (int)$HTTP_GET_VARS['manufacturers_id'] . "' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '" . (int)$languages_id . "' and p2c.categories_id = '" . (int)$HTTP_GET_VARS['filter_id'] . "' GROUP BY p.products_id ORDER BY p.products_id DESC LIMIT ". (int)MAX_RSS_ARTICLES.""; } else { // We show them all $listing_sql = "select " . $select_column_list . " p.products_id, p.manufacturers_id, p.products_model, p.products_price, p.products_image, p.products_date_added, pd.products_name, pd.products_description, m.manufacturers_name, cd.categories_name, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS . " p left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_MANUFACTURERS . " m, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c LEFT JOIN " . TABLE_CATEGORIES_DESCRIPTION . " cd ON p2c.categories_id = cd.categories_id where p.products_status = '1' and p.products_to_rss='1' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "' and p.manufacturers_id = m.manufacturers_id and m.manufacturers_id = '" . (int)$HTTP_GET_VARS['manufacturers_id'] . "' GROUP BY p.products_id ORDER BY p.products_id DESC LIMIT ". (int)MAX_RSS_ARTICLES.""; } $subtitle = tep_db_query("select manufacturers_name from " . TABLE_MANUFACTURERS . " where manufacturers_id = '" . (int)$HTTP_GET_VARS['manufacturers_id'] . "'"); $subtitle = tep_db_fetch_array($subtitle); $subtitle = $subtitle['manufacturers_name']; $rss_title = BOX_INFORMATION_RSS_MANUFACTURER; } else if (tep_not_null($current_category_id)) { // show the products in a given categorie if (isset($HTTP_GET_VARS['filter_id']) && tep_not_null($HTTP_GET_VARS['filter_id'])) { // We are asked to show only specific catgeory $listing_sql = "select " . $select_column_list . " p.products_id, p.manufacturers_id, p.products_model, p.products_price, p.products_image, p.products_date_added, pd.products_name, pd.products_description, m.manufacturers_name, cd.categories_name, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS . " p left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_MANUFACTURERS . " m, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c LEFT JOIN " . TABLE_CATEGORIES_DESCRIPTION . " cd ON p2c.categories_id = cd.categories_id where p.products_status = '1' and p.products_to_rss='1' and p.manufacturers_id = m.manufacturers_id and m.manufacturers_id = '" . (int)$HTTP_GET_VARS['filter_id'] . "' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '" . (int)$languages_id . "' and p2c.categories_id = '" . (int)$current_category_id . "' GROUP BY p.products_id ORDER BY p.products_id DESC LIMIT ". (int)MAX_RSS_ARTICLES.""; } else { // We show them all $listing_sql = "select " . $select_column_list . " p.products_id, p.manufacturers_id, p.products_model, p.products_price, p.products_image, p.products_date_added, pd.products_name, pd.products_description, m.manufacturers_name, cd.categories_name, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS . " p left join " . TABLE_MANUFACTURERS . " m on p.manufacturers_id = m.manufacturers_id left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c LEFT JOIN " . TABLE_CATEGORIES_DESCRIPTION . " cd ON p2c.categories_id = cd.categories_id where p.products_status = '1' and p.products_to_rss='1' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '" . (int)$languages_id . "' and p2c.categories_id = '" . (int)$current_category_id . "' GROUP BY p.products_id ORDER BY p.products_id DESC LIMIT ". (int)MAX_RSS_ARTICLES.""; } $subtitle= tep_db_query("select cd.categories_name, c.categories_image from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.categories_id = '" . (int)$current_category_id . "' and cd.categories_id = '" . (int)$current_category_id . "' and cd.language_id = '" . (int)$languages_id . "'"); $subtitle = tep_db_fetch_array($subtitle); $subtitle = $subtitle['categories_name']; $rss_title = BOX_INFORMATION_RSS_CATEGORY; } else { // show realy al products $listing_sql = "select " . $select_column_list . " p.products_id, p.manufacturers_id, p.products_model, p.products_price, p.products_image, p.products_date_added, pd.products_name, pd.products_description, m.manufacturers_name, cd.categories_name, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS . " p left join " . TABLE_MANUFACTURERS . " m on p.manufacturers_id = m.manufacturers_id left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c LEFT JOIN " . TABLE_CATEGORIES_DESCRIPTION . " cd ON p2c.categories_id = cd.categories_id where p.products_status = '1' and p.products_to_rss='1' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '" . (int)$languages_id . "' GROUP BY p.products_id ORDER BY p.products_id DESC LIMIT ". (int)MAX_RSS_ARTICLES.""; $rss_title = BOX_INFORMATION_RSS; } // echo $listing_sql; // Execute SQL query and get result $query = tep_db_query($listing_sql); /* * If there are returned rows... * Basic sanity check */ if ( tep_db_num_rows($query) > 0 ){ if ($subtitle != '') $rss_title .= ' - '.$subtitle; // Encoding to UTF-8 $store_name = utf8_encode (replace_problem_characters($store_name)); $rss_title = utf8_encode (replace_problem_characters($rss_title)); $weblink = utf8_encode ($weblink); $description = utf8_encode (replace_problem_characters($description)); $email_address = utf8_encode ($email_address); // SQL header(Last-Modified) $last_modified = ''; $sql = "SELECT MAX(products_date_added) as mPla, MAX(products_last_modified) as mPlm FROM products WHERE products_to_rss = '1' ORDER BY products_id DESC LIMIT 1"; $sql_result = tep_db_query($sql); $row = tep_db_fetch_array($sql_result); if ($row['mPlm'] != '') { $last_modified = $row['mPlm']; } else { $last_modified = $row['mpla']; } if(!function_exists('getallheaders')){ function getallheaders(){ settype($headers,'array'); foreach($_SERVER as $h => $v){ if(ereg('HTTP_(.+)',$h,$hp)){ $headers[$hp[1]] = $v; } } return $headers; } } $headers = getallheaders(); $refresh = 1; // refresca por defecto $etag = md5($last_modified); if(isset($headers["If-Modified-Since"])) { // Verificamos fecha enviada por el lector RSS $since = strtotime($headers["If-Modified-Since"]); if($since >= strtotime($last_modified)) { $refresh = 0; } } if(isset($headers["If-None-Match"])) { // Verificamos el ETag if(strcmp($headers["If-None-Match"], $etag) == 0) { $refresh = 0; } else { $refresh = 1; } } if($refresh == 0) { header("HTTP/1.1 304 Not changed"); // La primera línea de los headers debe ser el status // sino el Netcrap se lía y da "No Data" ob_end_clean(); // Descartamos los contenidos del búfer de salida en cola y lo deshabilitamos } // Begin sending of the data header('Content-Type: application/rss+xml; charset=UTF-8'); //header("Last-Modified: " . tep_date_raw($last_modified)); header('Last-Modified: ' .gmdate("D, d M Y G:i:s", strtotime($last_modified)). ' GMT'); //header('Last-Modified: ' .gmdate("D, d M Y G:i:s T",strtotime($last_modified)) . ' GMT'); header("ETag: " . md5($etag)); echo '<?xml version="1.0"?>' . "\n"; ?> <rss version="2.0" xmlns:g="http://base.google.com/ns/1.0"> <channel> <title><?php echo $rss_title; ?></title> <link><?php echo $weblink;?></link> <description><?php echo $description; ?></description> <?php // Format results by row while( $row = tep_db_fetch_array($query) ){ $id = $row['products_id']; // RSS Links for Ultimate SEO (Gareth Houston 10 May 2005) $link = tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $id, 'NONSSL', false); $model = $row['products_model']; $image = $row['products_image']; $added = date(r,strtotime($row['products_date_added'])); // Setting and cleaning the data $name = $row['products_name']; $desc = eval_rss_urls($row['products_description']); // Encoding to UTF-8 if ($strip_html_tags ==true) { $name = strip_html_tags($name); $desc = strip_html_tags($desc); } $name = utf8_encode(replace_problem_characters($name)); $desc = utf8_encode(replace_problem_characters($desc)); $link = utf8_encode($link); $manufacturer = $row['manufacturers_name']; $manufacturer = utf8_encode ($manufacturer); $price = tep_add_tax($row['products_price'], tep_get_tax_rate($row['products_tax_class_id'])); if( $discount = tep_get_products_special_price($id) ) { $offer = tep_add_tax($discount, tep_get_tax_rate($row['products_tax_class_id'])); } else { $offer = tep_add_tax($row['products_price'], tep_get_tax_rate($row['products_tax_class_id'])); } if ( $offert=''){ $offert=$row['products_price']; } $cat_name = $row['categories_name']; // Encoding to UTF-8 $cat_name = utf8_encode (replace_problem_characters(strip_html_tags($cat_name))); // Setting the URLs to the images and buttons $relative_image_url = tep_image(DIR_WS_IMAGES . $image, $name, SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT, 'style="float: left; margin: 0px 8px 8px 0px;"'); $relative_image_url = str_replace('">', '', $relative_image_url); $relative_image_url = str_replace('<img src="', '', $relative_image_url); $image_url = HTTP_SERVER . DIR_WS_CATALOG . $relative_image_url; $relative_buy_url = tep_image_button('button_shopping_cart.gif', IMAGE_BUTTON_IN_CART, 'style="margin: 0px;"'); $relative_buy_url = str_replace('">', '', $relative_buy_url); $relative_buy_url = str_replace('<img src="', '', $relative_buy_url); $buy_url = HTTP_SERVER . DIR_WS_CATALOG . $relative_buy_url; $relative_button_url = tep_image_button('button_more_info.gif', IMAGE_BUTTON_MORE_INFO, 'style="margin: 0px;"'); $relative_button_url = str_replace('">', '', $relative_button_url); $relative_button_url = str_replace('<img src="', '', $relative_button_url); $button_url = HTTP_SERVER . DIR_WS_CATALOG . $relative_button_url; // http://www.w3.org/TR/REC-xml/#dt-chardata // The ampersand character (&) and the left angle bracket (<) MUST NOT appear in their literal form $name = str_replace('&','&',$name); $desc = str_replace('&','&',$desc); $link = str_replace('&','&',$link); //$cat_name = str_replace('&','&',$cat_name); $name = str_replace('<','<',$name); $desc = str_replace('<','<',$desc); $link = str_replace('<','<',$link); $cat_name = str_replace('<','<',$cat_name); $name = str_replace('>','>',$name); $desc = str_replace('>','>',$desc); $link = str_replace('>','>',$link); $cat_name = str_replace('>','>',$cat_name); $buy_link = tep_href_link(FILENAME_PRODUCT_INFO, tep_get_all_get_params(array('action')) . 'action=buy_now&products_id=' . $id); // Encoding to UTF-8 $buy_link = utf8_encode ($buy_link); $buy_link = str_replace('&','&',$buy_link); $buy_link = str_replace('<','<',$buy_link); $buy_link = str_replace('>','>',$buy_link); // Writing the output echo '<item>' . "\n"; echo ' <title>' . $name . '</title>' . "\n"; echo ' <link>' . $link . '</link>' . "\n"; echo ' <description>' . $desc . '</description>' . "\n"; echo ' <g:image_link>' . HTTP_SERVER . DIR_WS_HTTP_CATALOG . DIR_WS_IMAGES . $image . '</g:image_link>' . "\n"; echo ' <g:price>'. $offer . '</g:price>' . "\n"; echo ' <g:condition>new</g:condition>' . "\n"; echo ' <g:id>' . $id . '</g:id>' . "\n"; echo '</item>' . "\n"; } } echo '</channel>' . "\n"; echo '</rss>' . "\n"; /* * Include the application_bottom.php script */ include_once('includes/application_bottom.php'); ?> Et hop vous avez un flux compatible avec Google Merchant. -------------------- Garga.
Le developpement est un hobby pour moi et non mon metier. Je ne gere qu'un site web, le mien. Merci de votre indulgence. Version OSC & ADDs: oscommerce-2.2rc1-FR-w3c-3 + CCGV_fixed5xx + infoBox_Admin_v2_25_1 + CenterShop + Banner in Header + AntiRobotRegistrationValidation-3.1 + Scrolling Specials + shop by price + login box in header + Quick Stock + French Colissimo Shipping + French Letter Max + Individual Product Shipping Methods + ... |
|
11 Mar 2011, 23:13
Message
#91
|
|
Ceinture jaune OSC Groupe : Membres Messages : 66 Inscrit : 23-August 05 Lieu : 33 Membre no 6879 |
Bonjour,
J'utilise le script de dvf que j'ai modifié comme ceci : Code <?php /* $Id: export.php, version 1.2 Vendredi 5 Octobre 2007 Vaisonet Exp $ Contribution Export universel http://www.dvfstore.com (google export csv) Copyright © 2007 Vaisonet Released under the GNU General Public License */ $comp = array("GOOGLE"); $header = "Content-type: text/plain"; $head = "id\ttitle\tprice\tlink\timage link\tdescription\tbrand\tcondition\n"; $output .= "go" . $products['products_id'] ."\t"; $output .= netoyage_html($products['products_name'], 80) . "\t"; $output .= $price ."\t"; $output .= tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products['products_id']) . $libre . "\t"; $output .= HTTP_SERVER . DIR_WS_HTTP_CATALOG . DIR_WS_IMAGES . $products['products_image'] ."\t"; $output .= netoyage_html($products['products_description'], 250) . "\t"; $output .= $products['manufacturers_name'] . "\t"; $output .= "new\t"; $output .= "\n"; $foot = ''; ?> Cependant cela me rajoute un espace à la fin de chaque ligne et google me dit : "Nombre de tabulations trop élevé Vos articles contiennent plus d'attributs que ceux indiqués dans la ligne d'en-tête" Si quelqu'un peut me dire comment supprimer cet foutu espace, je le remercie par avance -------------------- MS2
|
|
22 Mar 2011, 13:21
Message
#92
|
|
Ceinture orange OSC Groupe : Membres Messages : 195 Inscrit : 26-June 10 Membre no 27742 |
Bonjour à tous,
J'ai importé mes produits sous google Merchant center. Techniquement, ils ont bien été remontés à part 5. Après 3 jours, je viens de découvrir sous mon tableau de bord un graphique qui dit que tous mes produits ont été rejetés sous google shopping. Mon problème est de savoir pourquoi ? Je viens d'envoyer un mail à Google à l'adresse mail donnée par yyoossssii pour leur demander mais j'ai peur du délai de réponse. Sur leur forum d'aide, ils disent que ca peut provenir du moyen de paiement. Ma question est peut être bête : sur mon site actuel (pas encore oscommerce), je n'ai pas de page sécurisée sauf celle de la caisse d'épargne (seul moyen de paiement actuellement à part le chèque). Cela est suffisant à google shopping pour être considéré comme pouvant vendre des produits ? Je ne sais pas si je suis claire dans ma question !!! Quelles erreurs classiques avez-vous rencontrées qui ne soient pas détectées en automatique mais unqiuement en manuel ? Cela m'aiderait peut être à trouver pourquoi mes produits sont tous rejetés ... Merci de votre aide. Loulou |
|
22 Mar 2011, 14:12
Message
#93
|
|
Ceinture bleue OSC Groupe : Modérateurs Messages : 1085 Inscrit : 29-November 04 Membre no 3935 |
rien de bien grave Loulou1976,
il vont apparaitre dans le graph comme rejetés tant qu'il n'auront pas été examinés. tu peux le voir dans le menu "produits" tu dois encore avoir le petit sablier qui va bien sur chaque ligne de produit. EDIT: Au fait, ca peut être long ! -------------------- Petit guide pour résoudre tout vos problèmes avec Oscommerce
FORK perso a base de MS2 RC1 FR avec deux trois contribs + pas mal de dev perso + beaucoup (trop ?) d'Ajax + un peu mais pas trop de flash + virer la structure tableau + de feuille de style + pas mal de <DIV id="****">.......... en gros ca ressemble plus trop a l'originale |
|
22 Mar 2011, 17:01
Message
#94
|
|
Ceinture orange OSC Groupe : Membres Messages : 195 Inscrit : 26-June 10 Membre no 27742 |
Merci Chrysalide,
Faut donc que je patiente alors jusqu'à ce que je vois autre chose qu'un sablier dans produit. Ca a pris longtemps pour toi ? et pour vous les autres ? Ce que j'aimes pas, c'est le manque d'infos de la part de Google. ??: Heureusement qu'il existe des forums comme celui-ci. |
|
22 Mar 2011, 17:14
Message
#95
|
|
Ceinture bleue OSC Groupe : Modérateurs Messages : 1085 Inscrit : 29-November 04 Membre no 3935 |
Combien de temps? c'est variable.
J'ai un flux qui été intégré en 15 jours, j'en ai deux autres soumis il y a 1 mois et j'attends toujours. D'après mes divers lectures, la tendance ne va pas dans le sens d'une intégration rapide...... -------------------- Petit guide pour résoudre tout vos problèmes avec Oscommerce
FORK perso a base de MS2 RC1 FR avec deux trois contribs + pas mal de dev perso + beaucoup (trop ?) d'Ajax + un peu mais pas trop de flash + virer la structure tableau + de feuille de style + pas mal de <DIV id="****">.......... en gros ca ressemble plus trop a l'originale |
|
22 Mar 2011, 17:36
Message
#96
|
|
Ceinture orange OSC Groupe : Membres Messages : 195 Inscrit : 26-June 10 Membre no 27742 |
ok Chrysalide ça me déprime un peu les délais que tu m'annonces mais bon ... "la patiente est de rigueur" comme m'a dit Gnidhal un jour.
Quand, c'est ok on voit quoi dans produit alors à la place du sablier ??? Merci des tes réponses et bonne soirée Loulou |
|
22 Mar 2011, 17:46
Message
#97
|
|
Ceinture bleue OSC Groupe : Modérateurs Messages : 1085 Inscrit : 29-November 04 Membre no 3935 |
une coche verte
-------------------- Petit guide pour résoudre tout vos problèmes avec Oscommerce
FORK perso a base de MS2 RC1 FR avec deux trois contribs + pas mal de dev perso + beaucoup (trop ?) d'Ajax + un peu mais pas trop de flash + virer la structure tableau + de feuille de style + pas mal de <DIV id="****">.......... en gros ca ressemble plus trop a l'originale |
|
22 Mar 2011, 17:56
Message
#98
|
|
Ceinture orange OSC Groupe : Membres Messages : 195 Inscrit : 26-June 10 Membre no 27742 |
J'aime les coches vertes ... vive les coches vertes.
Bonne soirée en attendant. |
|
22 Mar 2011, 18:19
Message
#99
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 154 Inscrit : 3-May 09 Lieu : var Membre no 25242 |
Bonjour,
Si cela peut aider moi après plusieurs tentaives j'ai créer mes fichiers manuellement ....... Code <?xml version="1.0"?><rss version="2.0" xmlns:g="[url="http://base.google.com/ns/1.0"]http://base.google.com/ns/1.0"><channel[/url]> <title>Brique tempete </title> <link>http://www.charmbijoux.com</link> <description>Réalisation de gravure photo sur briquet tempete, zippo, cendrier</description> <item> <title>Briquet "e-light" graver avec texte gratuit</title> <g:link>http://www.charmbijoux.com/product_info.php?products_id=817</g:link> <description>Briquet "e-light"en acier inoxydable avec gravure texte offerte. Rechargeable à gaz. Dimensions du briquet: 80mm x 20mm. Possibilité de graver sur le briquet un texte (prénom, date de naissance,...) au recto et verso. Livré dans sa boîte cadeau. </description> <g:image_link>http://www.charmbijoux.com/images/photos/gravure/acce-fumeur/G/zorr-Flamme.jpg</g:image_link> <g:price>15</g:price> <g:id>light</g:id> <shipping><country>FR</country> <service>Lettre Max</service> <price>5.50</price></shipping> <g:availability>in stock</g:availability> <g:condition>new</g:condition> </item> </channel> </rss> C'est long mais mes produits sont en ligne sous 24H sans rejet de la part de google. Pour info attention au régle standart de l'orthographe !!!! Une seul majuscule par phrase. Si plusieurs majsucules dans la phrase elle est rejetée par google. -------------------- Tout vient à point à qui c'est attendre !!! LOL
Os commerce v2.2 RC2a |
|
23 Mar 2011, 04:38
Message
#100
|
|
Ceinture orange OSC Groupe : Membres Messages : 183 Inscrit : 18-November 09 Membre no 26560 |
C'est long mais mes produits sont en ligne sous 24H sans rejet de la part de google. Ce n'est pas très commode comme solution, il existe des taches automatiques, cependant tu a choisis, à l'instar de beaucoup de personnes ici, le bon format C'est ce que je fais pour mes clients et ca fonctionne à la perfection. Pour info attention au régle standart de l'orthographe !!!! Ta recommandation est pertinente, sauf qu'elle comporte 3 fautes dans la même phrase -------------------- The value of a man resides in what he gives and not in what he is capable of receiving. - Albert Einstein
|
|
Version bas débit | Nous sommes le : 28th March 2024 - 16:53 |
Ce site est déclaré auprès de la commision Nationale de l'Informatique et des Libertés (déclaration n°: 1043896) |