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

Bienvenue invité ( Connexion | Inscription )

7 Pages V  « < 2 3 4 5 6 > »   
Reply to this topicStart new topic
> Google Merchant ou Google Products ou encore Google Shopping, Quelqu'un connait?
stefstef
posté 21 Feb 2011, 15:42
Message #76


Ceinture blanche OSC
Icône de groupe

Groupe : Membres
Messages : 17
Inscrit : 8-July 10
Membre no 27784



Merci beaucoup chrysalide wink.gif
En effet, les slashs sont partis mangés par l'éditeur wink.gif
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.
blink.gif

Ce message a été modifié par stefstef - 21 Feb 2011, 15:43.
Go to the top of the page
 
oneill
posté 21 Feb 2011, 16:52
Message #77


5eme dan OSC
Icône de groupe

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.


--------------------
Go to the top of the page
 
stefstef
posté 21 Feb 2011, 18:25
Message #78


Ceinture blanche OSC
Icône de groupe

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. blink.gif

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.
Go to the top of the page
 
chrysalide
posté 21 Feb 2011, 19:00
Message #79


Ceinture bleue OSC
Icône de groupe

Groupe : Modérateurs
Messages : 1085
Inscrit : 29-November 04
Membre no 3935



Pourquoi coller des guillemets partout ? blink.gif

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 dry.gif


--------------------
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
Go to the top of the page
 
stefstef
posté 21 Feb 2011, 19:07
Message #80


Ceinture blanche OSC
Icône de groupe

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
smile.gif

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.
Go to the top of the page
 
chrysalide
posté 21 Feb 2011, 19:15
Message #81


Ceinture bleue OSC
Icône de groupe

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
Go to the top of the page
 
oneill
posté 22 Feb 2011, 08:13
Message #82


5eme dan OSC
Icône de groupe

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.


--------------------
Go to the top of the page
 
stefstef
posté 22 Feb 2011, 09:06
Message #83


Ceinture blanche OSC
Icône de groupe

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.
smile.gif
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.
Go to the top of the page
 
chrysalide
posté 22 Feb 2011, 16:04
Message #84


Ceinture bleue OSC
Icône de groupe

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
Go to the top of the page
 
stefstef
posté 22 Feb 2011, 18:13
Message #85


Ceinture blanche OSC
Icône de groupe

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!
Go to the top of the page
 
chrysalide
posté 25 Feb 2011, 14:29
Message #86


Ceinture bleue OSC
Icône de groupe

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é ! smile.gif

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
Go to the top of the page
 
Garga
posté 2 Mar 2011, 11:35
Message #87


Ceinture orange OSC
Icône de groupe

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 + ...
Go to the top of the page
 
oneill
posté 2 Mar 2011, 12:11
Message #88


5eme dan OSC
Icône de groupe

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... biggrin.gif

Merci pour le rss


--------------------
Go to the top of the page
 
chrysalide
posté 2 Mar 2011, 12:28
Message #89


Ceinture bleue OSC
Icône de groupe

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
Go to the top of the page
 
Garga
posté 2 Mar 2011, 12:41
Message #90


Ceinture orange OSC
Icône de groupe

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('&','&amp;',$name);
$desc = str_replace('&','&amp;',$desc);
$link = str_replace('&','&amp;',$link);
//$cat_name = str_replace('&','&amp;',$cat_name);

$name = str_replace('<','&lt;',$name);
$desc = str_replace('<','&lt;',$desc);
$link = str_replace('<','&lt;',$link);
$cat_name = str_replace('<','&lt;',$cat_name);

$name = str_replace('>','&gt;',$name);
$desc = str_replace('>','&gt;',$desc);
$link = str_replace('>','&gt;',$link);
$cat_name = str_replace('>','&gt;',$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('&','&amp;',$buy_link);
$buy_link = str_replace('<','&lt;',$buy_link);
$buy_link = str_replace('>','&gt;',$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 + ...
Go to the top of the page
 
alexb
posté 11 Mar 2011, 23:13
Message #91


Ceinture jaune OSC
Icône de groupe

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 smile.gif


--------------------
MS2
Go to the top of the page
 
loulou1976
posté 22 Mar 2011, 13:21
Message #92


Ceinture orange OSC
Icône de groupe

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
Go to the top of the page
 
chrysalide
posté 22 Mar 2011, 14:12
Message #93


Ceinture bleue OSC
Icône de groupe

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
Go to the top of the page
 
loulou1976
posté 22 Mar 2011, 17:01
Message #94


Ceinture orange OSC
Icône de groupe

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. confused.gif??:
Heureusement qu'il existe des forums smile.gif comme celui-ci.
Go to the top of the page
 
chrysalide
posté 22 Mar 2011, 17:14
Message #95


Ceinture bleue OSC
Icône de groupe

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
Go to the top of the page
 
loulou1976
posté 22 Mar 2011, 17:36
Message #96


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 195
Inscrit : 26-June 10
Membre no 27742



ok Chrysalide blink.gif ç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
Go to the top of the page
 
chrysalide
posté 22 Mar 2011, 17:46
Message #97


Ceinture bleue OSC
Icône de groupe

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
Go to the top of the page
 
loulou1976
posté 22 Mar 2011, 17:56
Message #98


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 195
Inscrit : 26-June 10
Membre no 27742



J'aime les coches vertes ... biggrin.gif vive les coches vertes.

Bonne soirée en attendant.
Go to the top of the page
 
stbo
posté 22 Mar 2011, 18:19
Message #99


Ceinture jaune+ OSC
Icône de groupe

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
Go to the top of the page
 
telede
posté 23 Mar 2011, 04:38
Message #100


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 183
Inscrit : 18-November 09
Membre no 26560



Citation (stbo @ 22 Mar 2011, 18:19) *
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 wink.gif

C'est ce que je fais pour mes clients et ca fonctionne à la perfection.

Citation (stbo @ 22 Mar 2011, 18:19) *
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 tongue.gif


--------------------
The value of a man resides in what he gives and not in what he is capable of receiving. - Albert Einstein
Go to the top of the page
 

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

 



RSS 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)