Version complète: sur le forum Webmaster Hub : Spip 1.7.2 et la syndication sortante
Webmaster Hub > Création et exploitation de Sites Internet > Systèmes de publication
Vampyre
Bonjour à tous !

Et bien voilà, je suis actuellement en train d'effectuer une batterie de tests sous Spip 1.7.2 (il les passe bien pour l'instant)...

Sauf pour un seul point relevé...

Afin d'être rapidement compréhensible, je vous demande de bien vouloir vous rendre sur cette page et de bien observer.

Pour ma part, je vois des caractères étranges en lieu et place des caractères accentués.

Je me suis penché sur le problème, et ai vérifié mes paramètres linguistiques qui sont correctement placé (langue principale sur français, et Alphabet occidental (iso-8859-1))

J'ai voulu vérifier la compatibilité avec RSS Reader en flux sortant, et à mon grand désespoir, je ne peux afficher aucun flux à cause de ces caractères étranges.

Voici la configuration sur lesquelles j'ai remarqué ce problème (Win Xp et 2000, Linux, IE, Firefox (linux et 2000 et xp)

Je pense donc à une erreur quelque part, mais où ?

Spip a été installé de base sur la 1.7.2 (aucune upgrade)

Si vous décidez de surfer sur le site même, vous êtes les bienvenus, mais ne vous attendez pas à des prouesses, mon design est en cours de réalisation ! C'est donc le squelette de base de spip...

Merci de votre temps et de vos réponses...

Vampyre
Dan
Bonjour,

C'est vraisemblablement au fait que tu t'es laissé séduire par une rédaction d'article sous Word... et fait un copier/coller.

Le problème de Word est qu'il utilise un jeu de caractères propre à Windows, et que les codes ne sont donc pas reconnus sur le Web.

Dan
Vampyre
Ben non...

C'est ca le plus marrant... sad.gif

En fait, le site de base fonctionne sous Artiphp, et tous les articles ont été directement encodés sous Artiphp). Je suis en train de remonter tous mes articles sous Spip, et voilà ce que ca me donne

Il est vrai que c'est du copier coller de mon artiphp vers spip. Mais bon... même en retapant manuellement les caractères, rien n'y fait ... sad.gif

Si ton diagnostic est bon, cela va se résorber au fil des nouveaux articles encodés directement sous spip ?
Dan
On a Spip 1.7.2 pour les publications du Hub, et ce problème n'apparaît pas. Si tu vidais ton cache Spip complètement ?

Dan
Vampyre
J'y avais également pensé, mais cela ne change rien.

J'ai aussi initialisé totalement les langues sur unicode, puis rétabli le français en iso

Rien ne change non plus... C'est étrange, car la syndication sous artiphp fonctionnait sans problème...
Cariboo
Ca me rappelle un pb que j'ai eu avec mes propres fils rss, sur un spip 1.6 il y'a un an.

Le problème et la solution trouvée :

Il s'avère que spip, dans ses boucles, laisse passer les "html special chars". Pour une page web, ce n'est pas un problème, dans un flux xml, si...

J'avais donc ajouter un filtre de mon cru pour éliminer le problème. Dans la 1.7.2, le filtre ad-hoc existe, mais il faut le rajouter dans le backend je crois, par défaut il n'existe pas dans le code (il faudra que je vérifie).

Le problème provenait du fait que le backend fonctionne tant que l'on tape les articles en ISO pur. Les ennuis arrivent quand le contenu des articles comporte des specialchars ou autres caractères bizarres.

Comme le dit Dan c'est un problème typique qui se voit avec des articles qui ont fait l'objet d'un copier coller.
Vampyre
Ok, je commence à comprendre... smile.gif

Comme je faisais partie du staff de dev de Artiphp, j'ai replongé dans le code, car ton message m'a fait penser à quelque chose...

Lorsque l'on publie un article dans artiphp, il est passé dans trois filtres successifs (html special char, strip slashes, entre autres).

Ceci pourrait donc expliquer cela. Et mes textes sont en effet copiés collés depuis mes pages web (la source est impossible à réutiliser sans repasser par tous ces filtres (style bdd avec des trucs comme l\\\'espace

Maintenant, je me pose une question.

A partir du moment où j'utiliserai uniquement spip, en iso caractère français, aucun copié collé ne se fera plus. Le problème se stoppera-t-il de par lui même ? Et dans ce cas, au bout de X articles publiés sous Spip, le fichier XML redeviendrait-il standard ?

Merci de vos réponses, et vraiment désolé de vous ennuyer avec si peu finalement smile.gif
Cariboo
Effectivement... Sauf si un tordu tape "  " dans un article (ce qui arrive quand même).

J'ai retrouvé ça dans mon fichier "mes_fonctions.php3";

function decode_htmlentities($texte)
{
// fonction qui enlève les entités html des flux spips. Utile pour les flux RSS et XML
$corr=html_entity_decode($texte);
return $corr;
}

Et la syntaxe d'utilisation dans le backend.html

CODE
<BOUCLE_1(RUBRIQUES){id_secteur=103}{par titre}>
<item>
    <title>[(#TITRE|decode_htmlentities)]</title>
    <link>#URL_SITE_SPIP/#URL_RUBRIQUE</link>
    <description>[(#DESCRIPTIF|decode_htmlentities)]</description>
</item>
</BOUCLE_1>
</channel>  
Vampyre
Impeccable smile.gif

J'essayerai cela lorsque j'aurai reçu mon nouveau design biggrin.gif

Autre petite question, soit dit en passant...

Je viens de tenter de faire une recherche avec le moteur de recherche standard.

Or, il semble que rien ne fonctionne (j'ai essayé avec depa billaba, puis depa, puis billaba, puis star (qui se trouve dans presque tous mes articles)).

Or le résultat de la recherche ne donne rien du tout.

Je suis allé voir dans les tables, et les tables index sont toutes vides.

J'ai vidé le cache, j'ai rajouté des articles, j'ai vérifié que le moteur de recherche était bien activé et... rien sad.gif

Rien n'y fait, mes tables restent mortellement vides. Y a-t-il une explication à celà ? (mon site doit au final recenser près de 1000 articles, et les visiteurs ont bien plus facile à taper un nom (je recherche Zam Wesell, donc je tape Zam Wesell, et je ne dois pas chercher dans la hiérarchie où je peux trouver l'article)).

J'ai vu qu'il semblait que c'était un bug connu de la 1.7. Mais comment l'activer ? huh.gif

Décidément, suis-je fais pour Spip ? :yoot:
Vampyre
Le mystère s'épaissit... sad.gif

Je viens de créer deux articles, uniquement avec des à é è ù et autres... 100% créés dans Spip. Un sous IE, l'autre sous Firefox (je surfe toujours sur Fox)

Résultat : Idem sad.gif

Je pense donc que je vais devoir implémenter ton code, en espérant qu'il fonctionne (ca m'ennuyerait profondément de ne pas avoir de flux rss correct, et vraiment bête de ne pas utiliser spip juste pour ca).

J'ai regardé ton code, mais n'ai pas réussi à voir dans quels fichiers les insérer (je ne comprends même pas comment tu appelles ton fichier mes_fonctions.php3

Mais j'avoue, je ne me suis pas encore penché sur le code des templates, le mien n'étant pas encore terminé.

Je vais donc bosser sur le code des templates, et voir comment je peux implémenter ton code sous spip...

Arfff... Et y a qu'à moi que ca arrive sad.gif
Vampyre
Suis occupé avec ton code, mais résultat négatif pour l'instant...

J'arrive à rajouter |decode_htmlentities après le titre, et le contenu :/

Dois-je déclarer quelque part mes_fonctions.php3 ?

Après implémentation, voici mon fichier d'erreur :

XML Parsing Error: undefined entity
Location: http://www.fanwars.com/spip/backend.php3
Line Number 4, Column 28: <title>Erreur : filtre <b>&laquo; decode_htmlentities &raquo;</b> non d&eacute;fini</title>
---------------------------^

Et voici mon fichier backend

CITATION
<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.1/">

<channel>
<title>[(#NOM_SITE_SPIP|texte_backend|decode_htmlentities)]</title>
<link>#URL_SITE_SPIP/</link>
<description></description>
<language>#LANG</language>

<image>
  <title>[(#NOM_SITE_SPIP|texte_backend|decode_htmlentities)]</title>
  <url>#URL_SITE_SPIP/IMG/ruboff0.gif</url>
  <link>#URL_SITE_SPIP/</link>
  <description></description>
</image>

<BOUCLE_10recents(ARTICLES){lang ?}{branche ?}{par date}{inverse}{0,10}{unique}>
  <item>
  <title>[(#TITRE|texte_backend|decode_htmlentities)]</title>
  <link>#URL_SITE_SPIP/#URL_ARTICLE</link>
  <date>#DATE</date>
  <description>[&lt;img src="#URL_SITE_SPIP/IMG/(#LOGO_ARTICLE|fichier)" align="left" hspace="4" vspace="4"&gt; ][(#INTRODUCTION|texte_backend|decode_htmlentities)]</description>
  <author><BOUCLE_auteurs(AUTEURS){id_article}{", "}>[(#NOM|texte_backend|decode_htmlentities)]</BOUCLE_auteurs></author>
  <dc:date>[(#DATE|date_iso)]</dc:date>
  <dc:format>text/html</dc:format>
  <dc:language>#LANG</dc:language>
  <dc:creator><BOUCLE_auteursb(AUTEURS){id_article}{", "}>[(#NOM|texte_backend|decode_htmlentities)]</BOUCLE_auteursb></dc:creator>
  </item>
</BOUCLE_10recents>
<BOUCLE_tres_recents(ARTICLES){lang ?}{branche ?}{par date}{inverse}{age<3}{unique}>
  <item>
  <title>[(#TITRE|texte_backend|decode_htmlentities)]</title>
  <link>#URL_SITE_SPIP/#URL_ARTICLE</link>
  <date>#DATE</date>
  <description>[&lt;img src="#URL_SITE_SPIP/IMG/(#LOGO_ARTICLE|fichier)" align="left" hspace="4" vspace="4"&gt; ][(#INTRODUCTION|texte_backend|decode_htmlentities)]</description>
  <author><BOUCLE_auteurs_t(AUTEURS){id_article}{","}>[(#NOM|texte_backend|decode_htmlentities)]</BOUCLE_auteurs_t></author>
  <dc:date>[(#DATE|date_iso)]</dc:date>
  <dc:format>text/html</dc:format>
  <dc:language>#LANG</dc:language>
  <dc:creator><BOUCLE_auteurs_tb(AUTEURS){id_article}{", "}>[(#NOM|texte_backend|decode_htmlentities)]</BOUCLE_auteurs_tb></dc:creator>
  </item>
</BOUCLE_tres_recents>

</channel>

</rss>


Vous voyez une erreur quelque part ?

Merci beaucoup pour votre extrême patience biggrin.gif
Cariboo
en fait, il suffit de créer un fichier appelé "mes_fonctions.php3" pour ajouter tes propres filtres à SPIP.

Le code mentionné plus haut, il te suffit de l'intégrer dans ce nouveau fichier, tu le places dans le répertoire où sont situés tes squelettes spip, et hop ! le tour est joué

Tu n'as rien à paramétrer, spip s'attend à trouver des fonctions personnalisées dans ce fichier...

Les nouvelles erreurs que tu as viennent du fait que tu utilises un filtre inconnu. Elles devraient disparaître une fois la fonction ajoutée dans le fichier mes_fonctions...
Vampyre
Bon, j'ai tout repris depuis zéro, et j'ai un nouveau type d'erreur à présent...

XML Parsing Error: undefined entity
Location: http://www.fanwars.com/spip/backend.php3
Line Number 23, Column 406:<br />Les v�hicules utilitaires de surface utilis�s pour le transport de passagers et de cargo, les skiff, sont de simples plateformes � r�pulseur qui flottent gr�ce aux champs antigravit�. Jabba le Hutt utilisait un skiff cargo de 9m20 de long comme accompagnateur de son �norme barge � voiles. A simple pilote pouvait tenir la barre de direction � l'arri�re du skiff et guidait le v�hicule en manipulant&nbsp;(...)</description>
-----------------------------------------------------------------------------------------------^

Visiblement, c'est pas ca le problème sad.gif

Décidément sad.gif

A moins que ce ne soit possible que sur les nouveaux articles ?

Je teste ca rapidos...
Cariboo
Il ne reconnait pas le filtre, donc il y'a forcément une erreur de syntaxe quelque part...

Quelle version de php utilises tu ?
Vampyre
Oups, j'ai édité mon post, pendant que tu y répondais...
Vampyre
En fait cela semble fonctionner smile.gif

Je viens de créer un nouveau post avec éèàù, et on dirait qu'il est passé à la ligne suivante.

Donc ca marche maintenant sur les nouveaux posts smile.gif

Je te tiendrai au courant lorsque j'aurai écrit assez d'articles pour confirmer que le flux fonctionne smile.gif

Merci énormément de ton aide smile.gif
Cariboo
Il est évident que tes articles sont tapés dans une autre table de caractères que celle que tu prévois dans le fichier xml généré par le backend !

Vérifie que tu as bien un attribut encoding défini dans la balise <xml à la première ligne.
ex : encoding="iso-8859-1" soit la table de caractères européennes, avec les accents

Vérifie que tu utilises bien cette table de caractères dans ton site... Ta sortie ressemble plutôt à un codage simplifié, tous les caractères supérieurs à 127 ne sont pas reconnus ? Ou un codage mac peut être ?

Tant que tu envoies des codes non reconnus dans un flux xml, tu auras ces messages d'erreur.

Et tu as bien des htmlspecialchars à supprimer en plus.

"v�hicule en manipulant&nbsp;(...)"
Vampyre
Salut !

Bon, je viens de placer le code pour encoding="iso....", car mon feed commençait par <rss....>

au lieu de <?xml..... ?>

Maintenant, cela me donne une nouvelle erreur... :/ Décidément...


CITATION
XML Parsing Error: junk after document element
Location: http://www.fanwars.com/spip/backend.php3
Line Number 2, Column 1:<b>Parse error</b>:  parse error, unexpected T_STRING in <b>/home/www/vampyre/www/spip/CACHE/0/spip-backend.1c2399.NEW</b> on line <b>2</b><br />
^


Commence à faire chier gravos ce truc lol...

Je suis même allé à éditer le rss de webmaster-hub pour m'en inspirer, et j'ai carrément recopié les lignes de codes à l'intérieur de ton fichier xml...

Et j'obtiens cette erreur... Aaaaarrrrrrggggghhhhhhh...
Cariboo
Erreur typique smile.gif

Euh, tu n'aurais pas écrit un truc du genre

echo "<?xml"

dans ton code ? Parce que c'est une mauvaise idée...

<? dans une page php, c'est la balise php... Donc ton backend génère une ligne, puis une erreur de syntaxe php en ligne 2...

déjà ça, ça marche mieux : echo "<"."?xml
Vampyre
Bon, voici ce que j'ai placé dans mon code backend

CITATION
echo "<"."?xml version=\"1.0\" encoding=\"iso-8859-1\"?".">"
<rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.1/">

<channel>
<title>[(#NOM_SITE_SPIP|texte_backend)]</title>
<link>#URL_SITE_SPIP/</link>
<description></description>
<language>fr-fr</language>

<image>
  <title>[(#NOM_SITE_SPIP|texte_backend)]</title>
  <url>#URL_SITE_SPIP/IMG/ruboff0.gif</url>
  <link>#URL_SITE_SPIP/</link>
  <description></description>
</image>

<BOUCLE_10recents(ARTICLES){par date}{inverse}{0,10}{unique}>
  <item>
  <title>[(#TITRE*|texte_backend)]</title>
  <link>#URL_SITE_SPIP/#URL_ARTICLE</link>
  <date>#DATE</date>
  <description>[&lt;img src="#URL_SITE_SPIP/IMG/(#LOGO_ARTICLE|fichier)" align="left" hspace="4" vspace="4"&gt; ][(#INTRODUCTION*|texte_backend)]</description>
  <author><BOUCLE_auteurs(AUTEURS){id_article}{", "}>[(#NOM|texte_backend)]</BOUCLE_auteurs></author>
  <dc:date>[(#DATE|date_iso)]</dc:date>
  <dc:format>text/html</dc:format>
  <dc:language>fr-fr</dc:language>
  <dc:creator><BOUCLE_auteursb(AUTEURS){id_article}{", "}>[(#NOM|texte_backend)]</BOUCLE_auteursb></dc:creator>
  </item>
</BOUCLE_10recents>

</channel>

</rss>


Je suis allé voir dans la BDD, et mes titres sont bien inscrits avec les accents dans la BDD. Il semble donc que ce soit un problème d'interprétation entre la BDD et le XML.

J'ai donc tenté de placer la balise * (conformément au manuel de référence de spip, tentant donc de bypasser les corrections et filtres de spip pour afficher directement le contenu de la BDD).

Mais le problème persiste toujours.

Avec le fichier en l'état, j'obtiens XML Parsing Error: syntax error
Location: http://www.fanwars.com/spip/backend.php3
Line Number 1, Column 1:echo "<"."?xml version=\"1.0\" encoding=\"iso-8859-1\"?".">"
^

De même si je place echo "<"."?xml version="1.0" encoding="iso-8859-1"?".">"

1eye.gif shutup.gif
Cariboo
Ah oui mais non !

echo c'est du php, donc il faut placer l'instruction entre des balises <?php et ?> sans oublier le ; à la fin

<?php
echo "<"."?xml version=\"1.0\" encoding=\"iso-8859-1\"?".">";
?>
Vampyre
YOUHOUUUUU

C'est bon !!!!!

Plus rien bouger !!!

Ca marche ! J'ai mes accents ! lollll

Ouffff... ce fut dur dur dur ! lollll

Un énorme merci à toi Cariboo...

Me reste plus qu'un truc qui ne fonctionne pas dans mon spip, mais je vais ouvrir un autre post plus adapté wink.gif

Super gros merci ! Encore une fois, j'ai appris de nouvelles choses...
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.