Annonce

Écrire une réponse

Veuillez écrire votre message et l'envoyer

Cliquez dans la zone sombre de l'image pour envoyer votre message.

Retour

Résumé de la discussion (messages les plus récents en premier)

h2o
2010-06-18 13:38:48

hum, j'ai trouvé une solution, je décode d'abord l'UTF-8.

Code:

function html_entity2xml($string) {  
        $string = utf8_decode($string)     
        $string = strip_tags($string);         
        $string = html_entity_decode($string, ENT_QUOTES);
        $trouve = array("‘", "’");
        $replace = array("'", "'");
        $string = str_replace($trouve, $replace, $string);
        $string = utf8_encode($string);
        return $string;                
    }

Tiré par les cheveux mais ça marche.

tosca
2010-06-18 12:18:43

h2o a écrit:

Si j'injecte directement (par un echo) mon texte (recupéré dans la base de donnée) j'ai des caractère refusé par
le standart XML, comme par exemple les caractères encodés au format HTML.

Et dans la tripotée de fonctions PHP existantes pour faire ce genre de transcodage, il n'y en a pas une qui fait l'affaire ?

h2o
2010-06-18 12:05:58

Version beta 0.6.

J'ai soumis ça à google qui n'y trouve pas d'erreur.

J'ai un problème d'encodage que j'ai un peux de mal à résoudre, malgré une tentative de compréhension des encodages (faudra interner le responsable de ce bor***, ou lui débrancher son clavier, je sais pas).

Voila le problème que j'ai:

Je récupère dans la base de donnée les champs 'name' et  'comment' de la table IMAGES_TABLE pour les injecter dans mon document XML.

Mon document XML est en UTF-8 ("Content-Type: text/xml; charset=UTF-8").

Si j'injecte directement (par un echo) mon texte (recupéré dans la base de donnée) j'ai des caractères refusés par le standart XML, comme par exemple les caractères encodés au format HTML.

J'utilise donc une petite fonction que j'ai créé:

Code:

function html_entity2xml($string) {               
        $string = strip_tags($string);         
        $string = html_entity_decode($string, ENT_QUOTES);
        $trouve = array("‘", "’");
        $replace = array("'", "'");
        $string = str_replace($trouve, $replace, $string);
        $string = utf8_encode($string);
        return $string;                
    }

Elle me supprime les tags HTML, me décode les caractère spéciaux en HTML puis m'encode le résultat en UTF-8.
C'est sans doute pas le code de l'année, mais bon ça marche.

Par contre si j'analyse le résultat j'ai ceci:

Code:

<image:title>Amitié</image:title> 
    <image:caption> 
  « Plus je vieillis et plus je trouve qu'on ne peut vivre qu'avec les êtres qui vous libèrent, qui vous aiment d'une affection aussi légère à porter que forte à éprouver. » Lettre de Albert Camus à René Char, le 17 septembre 1957.
</image:caption>

Curieusement le mot 'libère' est bien encodé, mais le mot 'Amitié' à été traduit en Amitié.

Diantre, mais comment se fait t'il ? Si dans notre beau royaume un preux chevalier savait comment me résoudre ça !

tosca
2010-06-16 19:45:45

h2o a écrit:

tosca a écrit:

....faire tourner cette moulinette où (et quand) on veut, et placer seulement le résultat (donc le fichier sitemap) ensuite sur le site, par exemple.

Ce qui retire l'intérêt de mon script, RV_sitemap fait ça très bien...
Ce que je veux c'est fournir aux robots des moteurs de recherche ce qu'il veux au moment ou il passe, pas avant ni après...

C'était juste un exemple de raison pour laquelle il me paraissait impossible que Google pose une contrainte sur la manière dont est constitué le sitemap, donc sur l'outil qui le constitue.
;-)

VDigital
2010-06-16 19:45:33

h2o a écrit:

tosca a écrit:

....faire tourner cette moulinette où (et quand) on veut, et placer seulement le résultat (donc le fichier sitemap) ensuite sur le site, par exemple.

Ce qui retire l'intérêt de mon script, RV_sitemap fait ça très bien...
Ce que je veux c'est fournir aux robots des moteurs de recherche ce qu'il veux au moment ou il passe, pas avant ni après...

Contacte rvelices, il saura te conseiller (Cf. le module map.php qui est généré par un plugin dans une autre arborescence).

h2o
2010-06-16 19:43:07

tosca a écrit:

....faire tourner cette moulinette où (et quand) on veut, et placer seulement le résultat (donc le fichier sitemap) ensuite sur le site, par exemple.

Ce qui retire l'intérêt de mon script, RV_sitemap fait ça très bien...
Ce que je veux c'est fournir aux robots des moteurs de recherche ce qu'il veux au moment ou il passe, pas avant ni après...

VDigital
2010-06-16 19:41:20

tosca a écrit:

..., et placer seulement le résultat (donc le fichier sitemap) ensuite sur le site, par exemple.

En automatique (auto-sitemap) => Safe mode ne doit pas actif (mais on s'en fiche php va rendre cette contrainte obsolète).
;-)

VDigital
2010-06-16 19:36:06

h2o a écrit:

Faire un plugin je peux y réflechir, mais disons que je ne souhaites pas faire de l'ombre à un plugin déjà existant. J'ai encore pas mal de boulot de toute façon avant de proposer quelques choses d' exploitable en toute sécurité.

Tu peux éventuellement envoyer un MP à rvelices pour lui demander des conseils.
Il n'est pas trop disponible mais tu ne lui feras certainement pas de l'ombre.
Quand bien même tu croirais ça, nous ne permettrions pas de juger des compétences de l'un ou de l'autre.
;-)

Exemple de concurrence saine: repie38 et moi-même offrons chacun un plugin d'affichage des images panoramiques ce que l'un fait l'autre le fait déjà ou le fera peut-être bientôt, ou pas.
Nous sommes tous les 2 dans l'équipe, j'apprécie tout à fait les apports de repié38 y compris au travers de son plugin, ses compétences ne font aucun doute pour moi et je ne serai pas étonné qu'il pense un peu pareil.
;-)

tosca
2010-06-16 19:26:30

Je relis certains éléments de ta réponse :

h2o a écrit:

il faut indiquer à google OU se trouve le fichier de sitemap (peux importe sont nom). Et il faut que ce sitemap sois de niveau égale ou inférieur aux liens qu'il référence. Le contraire ne marche pas si je me réfère à la doc:

http://www.google.com/support/webmaster … swer=35738

URL non autorisée: Google a constaté que certaines URL correspondent à un niveau supérieur ou à un domaine différent de l'emplacement du sitemap. Si cette erreur se produit, essayez de placer votre sitemap à un niveau supérieur de votre site et de le renvoyer.
Par exemple, si votre sitemap figure sous http://www.example.com/monsite/sitemap.xml, les URL ci-après seront considérées comme incorrectes :

http://www.example.com/ : pointe vers un niveau supérieur à celui du sitemap.
http://www.example.com/votresite/ : il s'agit d'un répertoire parallèle à celui dans lequel se trouve le sitemap.

... qui me paraissent bien confirmer que la seule contrainte porte sur le fichier de sitemap proprement dit (il doit se trouver au plus haut niveau d'arborescence par rapport aux URL qu'il référence).

Je ne vois pas d'obligation particulière sur l'outil de création de ce sitemap ... et je ne vois d'ailleurs pas comment il pourrait y en avoir, parce que l'on peut très bien faire tourner cette moulinette où (et quand) on veut, et placer seulement le résultat (donc le fichier sitemap) ensuite sur le site, par exemple.

tosca
2010-06-16 17:55:27

h2o a écrit:

Disont que le probleme est le suivant: il faut indiquer à google OU se trouve le fichier de sitemap (peux importe sont nom). Et il faut que ce sitemap sois de niveau égale ou inférieur aux liens qu'il référence. Le contraire ne marche pas si je me réfère à la doc:

Ca m'étonne un peu ...
J'utilise un CMS qui me génère un sitemap.xml à la racine de mon site, et son contenu ressemble à ça (extraits) :

Code:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
  <url><loc>http://www.cevennes-plurielles.com/vue-densemble.html</loc></url>
  <url><loc>http://www.cevennes-plurielles.com/mont-lozere.html</loc></url>
  <url><loc>http://www.cevennes-plurielles.com/causses-et-gorges.html</loc></url>
  <url><loc>http://www.cevennes-plurielles.com/vallees-cevenoles.html</loc></url>
  <url><loc>http://www.cevennes-plurielles.com/massif-de-laigoual.html</loc></url>

etc.

Quand au xxxx.php qui génère le sitemap, je ne sais même pas dans quel répertoire il se trouve, mais pas à la racine en tout cas.

h2o
2010-06-16 17:41:06

tosca a écrit:

Il n'y a pas moyen de lui indiquer un "path" pour qu'il travaille à partir de la racine, sans pourtant y être lui-même physiquement installé ?

oui bien sur.

Disont que le probleme est le suivant: il faut indiquer à google OU se trouve le fichier de sitemap (peux importe sont nom). Et il faut que ce sitemap sois de niveau égale ou inférieur aux liens qu'il référence. Le contraire ne marche pas si je me réfère à la doc:

http://www.google.com/support/webmaster … swer=35738

URL non autorisée: Google a constaté que certaines URL correspondent à un niveau supérieur ou à un domaine différent de l'emplacement du sitemap. Si cette erreur se produit, essayez de placer votre sitemap à un niveau supérieur de votre site et de le renvoyer.
Par exemple, si votre sitemap figure sous http://www.example.com/monsite/sitemap.xml, les URL ci-après seront considérées comme incorrectes :

http://www.example.com/ : pointe vers un niveau supérieur à celui du sitemap.
http://www.example.com/votresite/ : il s'agit d'un répertoire parallèle à celui dans lequel se trouve le sitemap.

tosca
2010-06-16 17:26:14

h2o a écrit:

Faire un plugin je peux y réflechir, mais disons que je ne souhaites pas faire de l'ombre à un plugin déjà existant.

Il n'est pas question de "faire de l'ombre", mais plutôt de susciter une "saine émulation" ;-)
C'est de toute manière l'intérêt de l'utilisateur final que d'avoir une bonne solution, ou éventuellement le choix entre plusieurs qui traiteront le problème un peu différemment.

h2o a écrit:

Il faut de toute façon que mon executable (autositemap.php) soit à la racine du site sinon ça ne marche pas ...

Il n'y a pas moyen de lui indiquer un "path" pour qu'il travaille à partir de la racine, sans pourtant y être lui-même physiquement installé ?

h2o
2010-06-16 17:19:54

Faire un plugin je peux y réflechir, mais disons que je ne souhaites pas faire de l'ombre à un plugin déjà existant. J'ai encore pas mal de boulot de toute façon avant de proposer quelques choses d' exploitable en toute sécurité.

Il faut de toute façon que mon executable (autositemap.php) soit à la racine du site sinon ça ne marche pas, je ne sais pas si un plugin peux forcer le déplacement d'un bout de script  à la racine de Piwigo ?

SNF69
2010-06-16 17:06:34

VDigital a écrit:

SNF69 a écrit:

Merci pour cette réponse beaucoup plus précise en effet ;o)
Je ne suis pas sur de l'utiliser mais il est fort probable que ça intéressera du monde et si un jour ça peut être un vrai plugin là ce serait le top.
Bonne continuation.


Seb

+1
C'est certain que le succès d'une solution comme celle de h2o passe par la mise en place d'un plugin.
D'autant plus que les modules dans le répertoire de base de Piwigo, on ne peut pas dire que c'est recommandé.
C'est en théorie le core de piwigo et une procédure de migration pourrait entrainer une suppression sans avertissement de ces modules...
Alors que si h2o en fait un plugin, la procédure de migration l'indiquera dans la liste des plugins désactivés.
Donc, autant faire un plugin, ce n'est pas très compliqué.
;-)

Je suis sur qu'il va être motivé pour nous faire un plugin et avoir son nom au panthéon des fonctions additionnelles de notre super outil :o))


Seb

VDigital
2010-06-16 17:05:02

SNF69 a écrit:

Merci pour cette réponse beaucoup plus précise en effet ;o)
Je ne suis pas sur de l'utiliser mais il est fort probable que ça intéressera du monde et si un jour ça peut être un vrai plugin là ce serait le top.
Bonne continuation.


Seb

+1
C'est certain que le succès d'une solution comme celle de h2o passe par la mise en place d'un plugin.
D'autant plus que les modules dans le répertoire de base de Piwigo, on ne peut pas dire que c'est recommandé.
C'est en théorie le core de piwigo et une procédure de migration pourrait entrainer une suppression sans avertissement de ces modules...
Alors que si h2o en fait un plugin, la procédure de migration l'indiquera dans la liste des plugins désactivés.
Donc, autant faire un plugin, ce n'est pas très compliqué.
;-)

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2024 · Contact