Aller au contenu

Spip 1.7.2 et la syndication sortante


Guest Vampyre

Sujets conseillés

Guest 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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

Guest Vampyre

Ben non...

C'est ca le plus marrant... :(

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 ... :(

Si ton diagnostic est bon, cela va se résorber au fil des nouveaux articles encodés directement sous spip ?

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

Guest 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...

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

Guest Vampyre

Ok, je commence à comprendre... :)

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

Lien vers le commentaire
Partager sur d’autres sites

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

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

Lien vers le commentaire
Partager sur d’autres sites

Guest Vampyre

Impeccable :)

J'essayerai cela lorsque j'aurai reçu mon nouveau design :D

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 :(

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:

Décidément, suis-je fais pour Spip ? :yoot:

Lien vers le commentaire
Partager sur d’autres sites

Guest Vampyre

Le mystère s'épaissit... :(

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 :(

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 :(

Modifié par Vampyre
Lien vers le commentaire
Partager sur d’autres sites

Guest 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>« decode_htmlentities »</b> non défini</title>

---------------------------^

Et voici mon fichier backend

<rss version="0.91" xmlns:dc=&quot;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>[<img src="#URL_SITE_SPIP/IMG/(#LOGO_ARTICLE|fichier)" align="left" hspace="4" vspace="4"> ][(#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>[<img src="#URL_SITE_SPIP/IMG/(#LOGO_ARTICLE|fichier)" align="left" hspace="4" vspace="4"> ][(#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 :D

Modifié par Vampyre
Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

Guest 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 (...)</description>

-----------------------------------------------------------------------------------------------^

Visiblement, c'est pas ca le problème :(

Décidément :(

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

Je teste ca rapidos...

Modifié par Vampyre
Lien vers le commentaire
Partager sur d’autres sites

Guest Vampyre

En fait cela semble fonctionner :)

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

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

Merci énormément de ton aide :)

Lien vers le commentaire
Partager sur d’autres sites

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 (...)"

Lien vers le commentaire
Partager sur d’autres sites

Guest 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...

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

Lien vers le commentaire
Partager sur d’autres sites

Erreur typique :)

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

Lien vers le commentaire
Partager sur d’autres sites

Guest Vampyre

Bon, voici ce que j'ai placé dans mon code backend

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

<rss version="0.91" xmlns:dc=&quot;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>[<img src="#URL_SITE_SPIP/IMG/(#LOGO_ARTICLE|fichier)" align="left" hspace="4" vspace="4"> ][(#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::shutup:

Lien vers le commentaire
Partager sur d’autres sites

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\"?".">";

?>

Lien vers le commentaire
Partager sur d’autres sites

Guest 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é ;)

Super gros merci ! Encore une fois, j'ai appris de nouvelles choses...

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...