Tronquer_texte et distrib

Bonjour,

Je reposte mon message de ce week end au cas où vous l'auriez pas vu :wink:

J'ai tester la fonction ci après trouvée dans les archives :

<?

function tronquer_titre($texte) {
  return couper_texte($texte, 200);
  
}

function couper_texte($texte, $limite) {
  if (strlen($texte) <= $limite) return $texte;
  $texte = nl2br($texte);
  $pos = strpos(substr($texte, $limite), " ");
  if (is_integer($pos) && $pos) return substr($texte, 0, $limite+$pos) . "";
  else return $texte;
}

?>

Elle fonctionne très bien dans Spip mais lorsque j'essaye de l'utiliser dans
le fichier distrib.html (pour un appel en javascript) ben marche pas :-//

Quelqu'un peut il me dire ce que je dois faire et surtout si c'est
possible...

Merci d'avance,

Bonne journée à tous

Cseagle

Bonjour bonjour...
Voilà, ça fait quelques mois que je bosse toujours sur mon squelette SPIP "inspiré d'EVA" pour mon site Cyna.net (basé sur le moteur SPIP 1.6 RC1 légèrement modifié), il y a quelques temps j'avais demandé de l'aide pour accélérer la gestion des archives de mon blog par mois, et on m'avait pointé vers le code mis à jour de SPIP 1.6 qui permettait de faire un tri par date, ce qui m'a bien aidé merci beaucoup... :slight_smile:
Ces temps-ci je m'attache à essayer d'améliorer le moteur de recherche de base pour lui donner une allure plus Googlienne.
Mes buts étaient donc de :
- donner une arborescence aux articles trouvés
- reproduire, pour chaque article, la première portion où l'on peut trouver le mot cherché, en mettant en gras le mot en question.

Alors ma question ne sera pas "Comment faire ?", et à ce propos je vous invite à visiter le squelette de la page recherche, où j'ai effectivement pu implémenter cette solution (qui logiquement devrait pouvoir fonctionner sur tout type de site) avec un peu de PHP :
http://cyna.net/recherche.html (*)
Mais ça serait plutôt "Comment accélérer le résultat ?", afin d'éviter, comme pour mon premier problème, le fameux problème de timeout...
En effet, Google est des plus rapides, mais ici je peine à renvoyer la première page de résultats en moins de 5 secondes...!
http://cyna.net/recherche.php3?recherche=seiya
"Seiya" est un mot très utilisé sur mon site (logique, il est consacré principalement à Saint Seiya). J'ai 184 articles qui comprennent le mot, et les 5 premiers sont des articles assez longs, voire carrément très longs (15 à 30ko je crois). Le problème c'est que j'ai souvent un timeout sur la première page, alors que les suivants donnent des résultats acceptables, comme :
http://cyna.net/recherche.php3?recherche=seiya&debut_lb=140
Qui prend quoi ? 2-3 secondes à s'afficher... Ce qui me paraît tout à fait "correct".

Alors donc voilà, je suis un peu perdu, et je ne sais pas trop comment accélérer le système... Je suppose qu'il va falloir tripatouiller dans le code de SPIP pour ça... :-/
Est-ce que quelqu'un aurait une idée ? Je pense que le squelette que j'ai développé hier pourrait être utile à beaucoup de gens, donc ça serait bien de l'optimiser tous ensemble !

Sinon, il me reste aussi globalement deux petits problèmes à régler :

- Toujours dans le moteur de recherche, la colonne de gauche affiche, dans ses liens, des "?var_recherche" qui ne devraient pas s'y trouver, et qui n'ont aucun rapport avec le mot actuellement recherché....! Ici il me donne "maman", un mot que j'ai utilisé une seule fois hier pour tester le moteur (le reste du temps j'utilisais d'autres mots). Les URL utilisent simplement #URL_RUBRIQUE, et on peut trouver le source de cette colonne ici : http://cyna.net/leftheader.html
Je suppose qu'il s'agit d'un problème avec inc-urls, que je pourrais régler aisément en enlevant la ligne concernant la recherche de la section qui détermine l'URL des rubriques... Mais il s'agit peut-être aussi d'un bug ? Y gagnerais-je vraiment à passer à SPIP 1.6 final, sachant que je n'utilise pas les fonctionnalités multilingues ?

- Sous MSIE, quand je passe d'une page à une autre (deux pages déjà chargées dans le cache de MSIE), il y a toujours un reload implicite. Alors que sur mon encyclopédie (cyna.net/ency.html), quand je passe d'une page à une autre, c'est instantané ! (Je précise que c'est la seule section de mon site à ne pas être réalisée sous SPIP et à ne pas bénéficier d'un cache interne...!)
J'avoue ne pas comprendre... :-/

- Enfin, j'ai des difficultés avec le système de commentaires... Quand on envoie un post en réponse à un autre commentaire, il apparaît au final comme un post "à part" ; j'ai vérifié la base de données, et les entrées id_parent sont toutes à zéro... Je ne sais pas quel changement j'ai pu faire au code de SPIP (ou à celui de mon squelette ?) pour en arriver là... :-/

En attendant j'espère que le site vous plaira, son design est quasiment terminé et là j'en suis vraiment aux derniers petits détails... Dans l'ensemble je suis très content, il ne reste plus qu'à le remplir, le moins dur à mon goût :wink:

(*) Mon code utilise un filtre, que j'ai placé dans ecrire/inc_filtres.php3, mais qu'on peut mettre dans mes_fonctions.php3 aussi j'imagine :

// Texte_brut + texte_script pour travail sous PHP
function extrait($texte) {
         $texte = ereg_replace("[\n\r]+", " ", $texte);
         $texte = eregi_replace("<(p|br)([[:space:]][^>]*)?".">", " ", $texte);
         $texte = ereg_replace("^\n+", "", $texte);
         $texte = ereg_replace("\n+$", "", $texte);
         $texte = ereg_replace("\n +", " ", $texte);
         $texte = ereg_replace("<[^>]*>", "", $texte);
         $texte = ereg_replace("(&nbsp;| )+", " ", $texte);
         $texte = str_replace('<br>', ' ', $texte);
         $texte = str_replace('\\', '\\\\', $texte);
         $texte = str_replace('\'', '\\\'', $texte);
         return $texte;
}

--
Rene-Gilles Deberdt
kyodai.com & cyna.net

Ces fonctions sont des fonctions php et sont exécutées sur le serveur ; elles ne sont donc pas utilisables en javascript qui, lui, est exécuter sur la machine cliente.
Utilise la fonction subString du javascript.
Jean

-----Message d'origine-----
De : spip-bounces@rezo.net [mailto:spip-bounces@rezo.net]De la part de
cseagle
Envoyé : lundi 25 août 2003 16:53
À : spip@rezo.net
Objet : [Spip] Tronquer_texte et distrib

Bonjour,

Je reposte mon message de ce week end au cas où vous l'auriez pas vu :wink:

J'ai tester la fonction ci après trouvée dans les archives :

<?

function tronquer_titre($texte) {
  return couper_texte($texte, 200);
  
}

function couper_texte($texte, $limite) {
  if (strlen($texte) <= $limite) return $texte;
  $texte = nl2br($texte);
  $pos = strpos(substr($texte, $limite), " ");
  if (is_integer($pos) && $pos) return substr($texte, 0,
$limite+$pos) . "";
  else return $texte;
}

?>

Elle fonctionne très bien dans Spip mais lorsque j'essaye de
l'utiliser dans
le fichier distrib.html (pour un appel en javascript) ben marche pas :-//

Quelqu'un peut il me dire ce que je dois faire et surtout si c'est
possible...

Merci d'avance,

Bonne journée à tous

Cseagle

_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.uzine.net/spip

- Enfin, j'ai des difficultés avec le système de commentaires... Quand on
envoie un post en réponse à un autre commentaire, il apparaît au final
comme un post "à part" ; j'ai vérifié la base de données, et les entrées
id_parent sont toutes à zéro... Je ne sais pas quel changement j'ai pu
faire au code de SPIP (ou à celui de mon squelette ?) pour en arriver là...

:-/

=> j'avais rencontré le même problème et il m'avait fallu pas mal de temps
pour trouver la raison.
En fait dans le squelette de forum (forum.html) on trouve ceci :

<BOUCLE_rep_forum(FORUMS){id_forum}>
      <div class="bloc_titre">
        <div align="left"><font size="2">R&eacute;ponse au message :<br>
[<font size="4"><strong>(#TITRE|smileys)</strong></font>]</font></div>
      </div> [ <div class="texte_trait_bas"><font
size="2">(#INTRODUCTION|smileys)</font></div> ] <br>
      </BOUCLE_rep_forum>
      <table width="95%" align="center" border="0" cellspacing="0"
cellpadding="0"> <tr>
          <td width="100%" valign="top"><!--affichage du
formulaire-->[(#FORMULAIRE_FORUM)]
          </td>
        </tr>
      </table>
or il faut que le "#FORMULAIRE_FORUM" soit dans la boucle "rep_forum" pour
conserver le contexte au travers des trois pages nécessaires (Ecriture du
message, prévisualisation, Validation).

Tu devrais donc avoir un code dans ce genre là :
<BOUCLE_rep_forum(FORUMS){id_forum}>
    [(#FORMULAIRE_FORUM)] // Pour le cas où c'est
une réponse à un message existant
</BOUCLE_rep_forum>
</B_rep_forum>
    [(#FORMULAIRE_FORUM)] // Pour le cas où c'est
un premier message
<//B_rep_forum>

Bon courage et bonne journée

David

At 09:11 26/08/2003 +0200, David FEROC wrote:

>- Enfin, j'ai des difficultés avec le système de commentaires... Quand on
>envoie un post en réponse à un autre commentaire, il apparaît au final
>comme un post "à part" ; j'ai vérifié la base de données, et les entrées
>id_parent sont toutes à zéro... Je ne sais pas quel changement j'ai pu
>faire au code de SPIP (ou à celui de mon squelette ?) pour en arriver là...
:-/

=> j'avais rencontré le même problème et il m'avait fallu pas mal de temps
pour trouver la raison.
En fait dans le squelette de forum (forum.html) on trouve ceci :
(...)
or il faut que le "#FORMULAIRE_FORUM" soit dans la boucle "rep_forum" pour
conserver le contexte au travers des trois pages nécessaires (Ecriture du
message, prévisualisation, Validation).

Merci beaucoup, c'était exactement le problème !
Ca marche parfaitement maintenant. J'aurais eu du mal à corriger le bug étant donné qu'il se trouvait aussi dans les squelettes EVA et apparemment aussi dans le squelette par défaut de spip 1.6 rc1..?!
C'est là que je regarde en arrière et que je me dis que j'ai failli passer une semaine sur le problème à m'arracher les cheveux puisque j'étais persuadé que c'était un bug dans une modification faite au code SPIP de base... :wink: (Il est évident que je préfère modifier le code spip le moins possible, de manière à pouvoir repérer plus facilement les améliorations apportées, et à les soumettre le moment venu quand j'aurai stabilisé tout le code et que j'aurai pas trop la flemme...)

Bon, reste plus que ces deux problèmes à corriger, en plus de la lenteur du moteur de recherche googleisé :

- Toujours dans le moteur de recherche, la colonne de gauche affiche, dans ses liens, des "?var_recherche" qui ne devraient pas s'y trouver, et qui n'ont aucun rapport avec le mot actuellement recherché....

- Sous MSIE, quand je passe d'une page à une autre (deux pages déjà chargées dans le cache de MSIE), il y a toujours un reload implicite. Alors que sur mon encyclopédie (cyna.net/ency.html), quand je passe d'une page à une autre, c'est instantané ! (Je précise que c'est la seule section de mon site à ne pas être réalisée sous SPIP et à ne pas bénéficier d'un cache interne au serveur...!)

Je vous assure que ça n'est pas de la flemme, c'est pas un petit bug qui va m'effrayer, mais là je manque un peu d'expertise :wink:

serait-il possible d'avoir une confirmation par d'autres devs sur ce point, qui
semble en contradiction avec les codes des squelettes par défaut de spip ?
Un certain nombre de problemes réguliers genre pages blanches n'ayant jamais
trouvé d'explications, celle-ci en est peut-etre une ?

Merci !

----- Message d'origine -----
que le "#FORMULAIRE_FORUM" soit dans la boucle "rep_forum" (forum.html)

Tu devrais donc avoir un code dans ce genre là :
<BOUCLE_rep_forum(FORUMS){id_forum}>
    [(#FORMULAIRE_FORUM)] // Pour le cas où c'est
une réponse à un message existant
</BOUCLE_rep_forum>
</B_rep_forum>
    [(#FORMULAIRE_FORUM)] // Pour le cas où c'est
un premier message
<//B_rep_forum>

David

- Toujours dans le moteur de recherche, la colonne de gauche affiche, dans
ses liens, des "?var_recherche" qui ne devraient pas s'y trouver, et qui
n'ont aucun rapport avec le mot actuellement recherché....

Je vois que tu utilises #URL_RUBRIQUE pour créer ton lien. Il faut donc sans
doute chercher du côté de ton fichier inc_url (que tu as modifié non ?)

Bon courage

David

At 12:47 26/08/2003 +0200, you wrote:

- Toujours dans le moteur de recherche, la colonne de gauche affiche, dans ses liens, des "?var_recherche" qui ne devraient pas s'y trouver, et qui n'ont aucun rapport avec le mot actuellement recherché....

Corrigé en retirant les références à var_recherche dans la fonction generer_url_rubrique (de toute manière mon squelette de recherche ne fait pas de recherches dans les noms de rubriques)

- Sous MSIE, quand je passe d'une page à une autre (deux pages déjà chargées dans le cache de MSIE), il y a toujours un reload implicite. Alors que sur mon encyclopédie (cyna.net/ency.html), quand je passe d'une page à une autre, c'est instantané ! (Je précise que c'est la seule section de mon site à ne pas être réalisée sous SPIP et à ne pas bénéficier d'un cache interne au serveur...!)

Corrigé en réactivant la possibilité de gzipper les pages... Je l'avais désactivée parce que c'était désespérément lent chez moi, je ne sais pas pourquoi, peut-être une mauvaise programmation de tel squelette, aucune idée... J'ai réessayé (enfin là il est 2h du matin donc y'a de la place sur le réseau...) et c'est plus rapide que sans le gzip, et surtout le surf d'une page à l'autre est (quasi) instantané.

Je vous assure que ça n'est pas de la flemme, c'est pas un petit bug qui va m'effrayer, mais là je manque un peu d'expertise :wink:

Bon ben je me suis débrouillé tout seul visiblement ;o)