Jump to content

[CONTRIBUTION] Generation auto du Sitemap Google + correctif Gsitemap 1.2.4


moncler

Recommended Posts

Bonjour,

Voici un script a placer a la racine de votre shop afin de generer automatiquement le fichier sitemap.

Il appelle simplement le module gsitemap a regenerer le sitemap, lit le fichier xml et l affiche, il est donc necessaire de l avoir installer avant.

L'interet est que ce dernier beneficie des maj prestashop, ce qui minimise les updates a faire sur ce script.

Installation:
Telecharger le fichier getsitemap.php et le placer a la racine du repertoire ou est installer votre boutiqueremplacer dans Dans google tools remplacer le fichier sitemap.xml par getsitemap.php

Merci a ceux qui l' essaye de faire un petit retour (si il marche ou pas)

Edit:

Inclus ci dessous le correctif pour le module gsitemap sur la 1.2.4 (basé sur le correctif par la team sur le SVN)

Edit:
_________ v1.5
19/10/09
Correction bug T_INCLUDE sur certain serveur


@+

getsitemap.php

gsitemap.php

  • Like 1
Link to comment
Share on other sites

Merci :)

J'ai fait une petite mise a jour, maintenant le script verifie automatiquement que Gsitemap est bien installé avant de regenerer le sitemap.
Dans le cas contraire un message d'erreur est afficher.

Pour info google accepte bien l'extention php, il n y a pas besoin de modifier les regles htaccess pour lui donner l'extention xml (soumettre directement getsitemap.php dans google web tools)

Link to comment
Share on other sites

Salut,

En fait c'est tout l interet du script, il se debrouille seul.

J'ai vu sur le forum anglais un script dans le meme but mais l avantage ici est que c'est le module gsitemap integré a prestashop qui est appellé a generer le sitemap, ce qui garantit la compatibilité pour les futures version de presta.

Link to comment
Share on other sites

Bonjour,

Moi j'ai cela quand je le test via firefox, il devrait normalement me montrer le sitemap non ?

vs 1.2.4 avec module gsitemap activé

Parse error: syntax error, unexpected T_STRING in /home/montru/public_html/getsitemap.php on line 1



Cordialement

Link to comment
Share on other sites

Bonjour,

Je m apercois que la version dispo en dl n'etais pas la derniere version que j'avais mis a jour, celle ci verifie avant que le module est bien installé et affiche un message d erreur s il ne l est pas.
Je l'ai reuploader ds le 1er post


Baballe oui normalement il devrait l'afficher
Peux tu donner le lien de ton site, ou me dire ce qui est afficher (cliquer droit sur la souris et "view page source")
est ce tu as bien installer le script a la racine de ton shop et verifie si tu as la même erreur en lisant directement le xml generé par gsitemap

Link to comment
Share on other sites

>Farinet

Tu peux essayer avec la 1.3?

Autrement je vais voir d ou ca peut venir.
Si tu peux me dire aussi si tu es sur un mutu, et est ce que tu as fait une maj pour passer en 1.2.4

Merci a ceux qui ont essayer le script de faire un petit retour (si marche ou pas)

@+

Link to comment
Share on other sites

oups :red: j'avais pas vu !

voila avec la 1.3 . même prob

voici les seuls modifs que j'ai fait sur le prestahop 1.2.4

a+



-----
module modifier
paypla ipn
images et texte
-----

UPDATE ps_category_product SET id_category = '342' WHERE id_category = '18';
-----------
pour générer sitemap
ajouter config/config.inc.php
@ini_set(‘memory_limit’,‘128M’);


-----------
J’avais besoin de trier les articles par quantité , j’ai donc ajouté la ligne suivante ( ligne 54 du fichier Admin->Tabs->AdminPPreferences.php)

'PS_PRODUCTS_ORDER_BY' => array('title' => $this->l('Default order by:'), 'desc' => $this->l('Default order by for product list'), 'type' => 'select', 'list' =>
array(
array('id' => '0', 'name' => $this->l('Product name')),
array('id' => '1', 'name' => $this->l('Product price')),
array('id' => '2', 'name' => $this->l('Product added date')),
array('id' => '4', 'name' => $this->l('Position inside category')),
array('id' => '5', 'name' => $this->l('Manufacturer')),
array('id' => '6', 'name' => $this->l('Quantity')),//ajout tri par quantite
array('id' => '3', 'name' => $this->l('Product modified date'))
), 'identifier' => 'id')
Et de traduire Quantity en Quantité dans l’outil de traduction, coté Admin

-------------
case “newsletter” soit “pré-cochée” et dans ce cas le client devra la décocher s’il ne veut pas être inscrit !
authentication.tpl qui se trouve dans votre thème courant (themes>montheme)

Vous trouverez vers la ligne 136 (chez moi en tout cas) le code suivant:
<input type=“checkbox” name=“newsletter” id=“newsletter” value=“1” {if isset($smarty.post.newsletter) AND $smarty.post.newsletter == 1} checked=“checked”{/if} />

Rajoutez ça: checked=“checked” juste après id=“newsletter”
Bref: ça doit donner ça:
<input type=“checkbox” name=“newsletter” id=“newsletter” checked=“checked” value=“1” {if isset($smarty.post.newsletter) AND $smarty.post.newsletter == 1} checked=“checked”{/if} />
------------
dans : /themes/prestashop/category.tpl
et remplacer la ligne 7 comme ceci :
{$nb_products|intval} {if $nb_products>1}{l s=‘products’}{else}{l s=‘product’}{/if}
par
{if $nb_products>1}{ $nb_products}{/if} {if $nb_products>1}{l s='products'}{else}{l s=''}{/if}

comme ça si quantité article =0 pas d’affichage et si quantité article >0 on affiche la quantité
Link to comment
Share on other sites

Bonjour,

monclerc voilà j'ai fait un clique droit
et je te colle le résultat dessous


Parse error: syntax error, unexpected T_INCLUDE in /home/*****/public_html/getsitemap.php on line 1




J'ai mis le fichier à la racine de mon site là ou il y a mon htaccess
Link to comment
Share on other sites

Oui j'ai bien la vs 1.4 du fichier / presta vs 1.2.4 / php vs 5.2.9

C'est peut être dû à une configuration particulière du serveur mutualisé.

et c'est vrai pourquoi la ligne 1 ?
mais moi avec notepad++ le code ne commence pas à la ligne 24 mais 23 par ceci include(dirname(__FILE__).'/config/config.inc.php');

Link to comment
Share on other sites

Oui ligne 23 c'est bien ca.
Ca vient peut etre de la version php 5.2.9 (qui a des pb avec les images d apres la team: image management/upload broken) mais ce type d include se fait souvent dans les autres fichiers de presta (surtout le 1er) sans que tu ais d'autre soucis a priori.

essaye peut etre de commenter un a un les includes pour voir lequel pose probleme (en supposant que l'erreur est levée dans le fichier inclu..)

Link to comment
Share on other sites

Bon après avoir commenté les includes 1 par 1 c'est toujours pareil / j'ai essayé en remplaçant les fichiers presta 1.2.4 appelés par ceux du svn ... mais rien ne change, donc je pencherai pour ma vs php 5.2.9 à confirmer par quelqu'un qui à cette vs php.
Lors de la prochaine mise à jour de Prestashop je tenterai encore le coup et je donnerai le résultat ici.
En tout cas merci moncler

Link to comment
Share on other sites

Bonjour

PHP Version 5.2.6

Parse error: syntax error, unexpected T_INCLUDE in /home/mondomaine/public_html/getsitemap.php on line 1


Même problème que baballe mais suis pas sur le même serveur, je suis sur un compte revendeur hébergement.

A la racine du site

Version de getsitemap.php 1.4 enfin c'est ce qui est écris :-)
Link to comment
Share on other sites

Bonjour

Parse error, syntax error unpexted
Cette erreur, fréquente, se produit notamment lorsqu'un guillemet est présent dans une chaîne délimitée par ce même type ...

en français
"Erreur d'analyse du code: il y a une erreur de syntaxe, fin de code inattendue".
En fait, cette erreur signifie que Php a fini d'analyser votre code, mais que vous avez oublié de fermer un symbole quelque part dans votre page ou dans celles qui ont été incluses.

Oublié de fermer un guillemets donc il va chercher un guillemet, une accolade, une parenthèse ou un point virgule.
D'après mon expérience souvent c'est le ; qui fait défaut.

FROM `'._DB_PREFIX_.'module` m WHERE

le ` après From est-ce normal je le vois aussi après module mais nul part ailleurs

(source commentçamarche)

Link to comment
Share on other sites

Bonjour,

moncler j'ai toujours la même erreur avec la vs 1.45, quelle est la permission fichier normalement pour ce script ? 644 c'est bon ?

Oron j'ai testé sans "`" mais c'est idem

Moi mon serveur tourne avec SuPHP qui permet d'utiliser les scripts php avec les droits utilisateurs au lieu de celui du serveur web pour une meilleur sécurité. Oron sais tu si le tien aussi tourne sur SuPHP ?

Link to comment
Share on other sites

Re

Non aucune idée s'il tourne avec SuPHP, je viens de regarder dans info.php rien trouver de tel.
J'ai aussi 644 pour les fichiers.
Là j'ai enlever la ligne include comme indiqué, et quand je vais sur monsite/getsitemap.php il y a que du blanc et rien dans la source, il devrait pas indiquer le sitemap en xml ?

Link to comment
Share on other sites

Bonjour,

moncler j'ai toujours la même erreur avec la vs 1.45, quelle est la permission fichier normalement pour ce script ? 644 c'est bon ?

Oron j'ai testé sans "`" mais c'est idem

Moi mon serveur tourne avec SuPHP qui permet d'utiliser les scripts php avec les droits utilisateurs au lieu de celui du serveur web pour une meilleur sécurité. Oron sais tu si le tien aussi tourne sur SuPHP ?

Salut,
idem pour les droit, c'est bon pour 644.

Dans le doute on peut essayer de virer tous ce qui est de la ligne 27 a 43.
Voir meme de tous virer en ne laissant que les 2 include lol, puis decommenter une a une les lignes de 43 a 52 en verifiant qd l'erreur apparait.
Link to comment
Share on other sites

Bonjour à tous, bonjour Moncler

je suis en PS 1.2.4 et un peu novice dans la partie...

- J'ai installé gsitemap.php (disponible sur le 1er post) directement à la racine du site
- J'ai mis une 744 sur les droits de ce fichier
- j'ai bien lu tout ce fil en entier afin de vérifier qu'il se lance tout seul (pas besoin de CRON)
- Google Sitemap V1.4 est bien installé dans mon BO

Puis j'ai patienté une heure : il ne se passe RIEN...
Ni mise à jour, ni message d'erreur.

Questions :
qu'elle est la fréquence de rafraichissement de ce fichier "auto update" ?
Ai je oublié une manip ?

Merci

Gilles

Link to comment
Share on other sites

Bonjour Moncler

Oui : mon site est www.luxuryspirit.com

et OUI, j'ai bien mis le fichier getsitemap.php à la racine du site.

J'ai mis les permissions 755 sur ce fichier...

Pour finir, je viens de faire le même test que toi en tapant l'URL www.luxuryspirit.com/getsitemap.php qui me donne un 404.

As tu une piste, car j'ai tenté de suivre à la lettre toutes les instructions de ce fil sans parvenir au résultat.

NB : je suis hébergé chez PlanetHister (www.planetHoster.net)

Merci et bonne journée

Gilles

Link to comment
Share on other sites

Bonsoir Moncler

j'ai peut être une piste ...

Mon getsitemap.php est sur une SEULE ligne quand je l'ouvre avec mon éditeur PHP / HTML.

Je pense que j'ai récupéré en fait un mauvais fichier et que mes problèmes pourraient venir de là .. ???

Donc afin de commencer par le commencement, pourrais tu me transmettre ton fichier getsitemap.php ?

Ensuite, si cela ne fonctionne toujours pas, je passerai aux autres étapes ...

Merci d'avance

Gilles

Link to comment
Share on other sites

Pour moi, Le sitemap est reconstruit lors d'un appel par le robot google. As tu bien déclaré dans les outils pour webmasters l'acces au php ?


- Le robot passe bien à intervalles réguliers.
- quand aux outils pour les webmasters, j'ai déclaré le sitemap.xml, MAIS PAS le getsitemap.php.

Faut il déclarer chez Google ce fichier également ?

merci
Link to comment
Share on other sites

Bonsoir Gilles,
Le bon fichier est celui sur le 1er post.
Effectivement ce n'est pas normal que ce soit sur une seul ligne, bizzare aussi que le fichier soit bien present apparement et que l'erreur soit 404

Ensuite si le script fonctionne il faut supprimer le sitemap.xml de chez google et le remplacer par getsitemap.php

Link to comment
Share on other sites

Bonsoir Moncler

on avance, on avance ....

Concernant le PB sur lequel tu me donnes un coup de main (et je t'en remercie), j'ai les élements suivants :

1 - mon hébergeur (www.planethoster.net) me confirme que les fichiers placés directement à la racine ne sont pas exécutables et qu'ils doivent être placé dans "public_html".
Je viens donc de placer getsitemap.php directement dans ce dossier (et je me suis assuré que je suis bien reparti du fichier source qui se trouve en 1ère page de ce post).

2 - je viens de lancer http://www.monsite.com/getsitemap.php et le fichier s'ouvre bien à présent, donc on a bien les droits (on n'a plus le "404 NOT FOUND)

Par contre, j'ai le magnifique message d'erreur suivant :
Parse error: syntax error, unexpected T_INCLUDE in /home/luxurysp/public_html/getsitemap.php on line 1

Qu'est ce qu'une PARSE ERROR.

Moncler ou une autre personne (afin de cesser de le soliciter) peut il me conseiller ?

Merci

Giles

Link to comment
Share on other sites

Bon,
j'ai reussit a reproduire le bug en installant le script sur un serveur mutualisé (je ne sais pas si c'est lié mais ca a l air),
c'est la class php dom que ne semble pas apprecier le serveur, j ai donc remplacer par une lecture simple de fichier de sitemap.xml.

Le bug a été donc a priori corrigé, mais des retours sont les bienvenus :)

(derniére version v1.5 sur le 1er post)

Link to comment
Share on other sites

j ai donc remplacer par une lecture simple de fichier de sitemap.xml.


Une petite question que d'autres personnes vont se poser : que signifie exactement la phrase ci dessus ?

Dans le sitemap de Google, on envoi le fichier sitemap.xml ou bien getsitemap.php ?

Merci
Link to comment
Share on other sites

Il faut mettre getsitemap.php
sitemap.xml sera mis a jour a chaque fois que getsitemap sera soliciter (qui le lira et transmettra son contenu a google)
C'est le principe du script il fait juste l'intermediaire entre les 2 fichiers mais avec la mise a jour en temps réelle.

Link to comment
Share on other sites

Bonjour Moncler

je te confirme que ta tout dernière version de ton fichier getsitemap.php fonctionne bien sur un serveur mutualisé.

Merci encore

Je ne sais pas mettre un post en [RESOLU], mais on semble être plusieurs à confirmer le bon fonctionnement...

Merci

Gilles

Link to comment
Share on other sites

Merci :)
Par contre j'ai remarqué que sur la 1.2.4 le module gsitemap est buggé, dans certain cas on peut avoir par exemple des url du type:

http://www.monsite.fr/www.monsite.fr

Ce probleme a été corriger par la team dans la version SVN (et sera present dans la 1.3) , cependant elle n'est pas directement compatible avec la 1.2.4, j'ai donc modifié le module pour la 1.2.4 en me basant sur la correction de la SVN.
Le fichier getsitemap.php est a priori compatible avec la futur 1.3

Le correctif pour la 1.2.4 est telechargeable dans le 1er post

Link to comment
Share on other sites

  • 10 months later...

2 questions viennent à l'esprit d'un noob comme moi :
1 - quel est l'intérêt de ce script par rapport au sitemap.xml par défaut ?
2 - pourquoi y'a il un fichier getsitemap et un autre gsitemap, faut-il installer les 2 ?
je suis en 1.4b1, alors sinon lequel adopter ?
merci.
taper>

Link to comment
Share on other sites

  • 4 months later...

C'est assez simple : le fichier à placer à la racine du site est getsitemap.php.

Ce fichier génère automatiquement, quand il est appelé, un nouveau fichier sitemap.xml (qui ne sert plus à grand chose, sauf à afficher son contenu dans getsitemap.php une fois généré).

Par conséquent, lorsque le moteur Google appelle l'url http://www.monsite.com/getsitemap.php, il obtient un sitemap xml tout neuf. Reste à lui indiquer cette adresse dans Google Outils pour webmaster.

C'est une bonne idée, mais il vaut mieux penser à le renommer avec un nom suffisamment compliqué, car le petit plaisantin qui va appeler ce fichier quelques centaines de fois par seconde via un script de trois lignes risque de faire chauffer un peu le serveur ;-)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...