Liste l'article précedent par titre, c'est possible

Pour pouvoir afficher des bouts d'interviews dans le contexte, j'ai segmenté
une interview en x articles et en faisant pointer une url sur un des ces
articles, je voudrais afficher le bout précédent et suivant.
Donc lister l'article précédent suivant dans un classement par titre.
Est-ce possible (les url son codées à la main donc on peut passer des
arguments supplémentaires mais je n'ai pas trouvé de solution).

Stéphane

At 19:49 +0100 20/11/01, Stephane Noël wrote:

Pour pouvoir afficher des bouts d'interviews dans le contexte, j'ai segmenté
une interview en x articles et en faisant pointer une url sur un des ces
articles, je voudrais afficher le bout précédent et suivant.
Donc lister l'article précédent suivant dans un classement par titre.
Est-ce possible (les url son codées à la main donc on peut passer des
arguments supplémentaires mais je n'ai pas trouvé de solution).

Salut,

Ta question correspond à une difficulté fréquente avec SPIP: afficher sur la page d'un article un lien vers un "article précédent", et vers un "article suivant". Cela permettrait comme dans ton cas de découper (à la main) un article en plusieurs parties, et de faire des liens automatiques en chaque partie; cela permettrait par exemple de faire un tutorial (comme dans la doc de SPIP) avec en haut de chaque partie du tutorial un lien vers l'article précédent, et en dessous vers l'article suivant, etc.

Malheureusement, cela ne peut pas être fait simplement avec le langage de boucles (en tout cas, je n'ai jamais trouvé de manière de le faire).

En revanche, on peut s'en tirer en utilisant un peu de PHP dans le squelette. Généralement, je ne suis pas trop fana de répondre à une question simple avec du PHP sur la présente liste, mais comme cela permet de contourner tout de même une limite importante de SPIP, il vaut mieux filer un bout de code que rien du tout... Note: c'est du PHP très simple, mais en revanche ça demande de très bien comprendre le fonctionnement des boucles des squelettes de SPIP.

Voici donc deux boucles avec du PHP qui serviront d'exemple pour vos propres besoins (à adapter en fonction de ce que vous souhaitez réaliser)...

===========

Avant tout, pour l'exemple qui suit, les articles suivants et précédents sont des articles _dans la même rubrique_ (c'est généralement l'idée...). Pour faire simple, on va directement numéroter les titres des articles, sous la forme:
1. Mon premier article
2. Mon deuxième article
3. Encore un titre d'article
4. Mon quatrième article
etc.
(notez bien: s'il y a plus de 9 articles, alors il faut commencer votre numérotation avec "01" "02"...)

Ainsi, si on se trouve dans l'article "3. Encore un titre d'article", il faudra que SPIP affiche l'article "2. Mon deuxième..." en article précédent, et "4. Mon..." en suivant. Cette manière de procéder permet d'avoir un code particulièrement simple ci-après. Il est également simple de faire un classement par date de publication (suivant et précédent signifiant alors "publié avant", "publié après"...), mais le code devient un poil plus compliqué.

La première boucle:
----------------------------
<?
    $titre_principal = "[(#TITRE|addslashes)]";
    $premier_article = true;
?>
<BOUCLE_art_suivant(ARTICLES){id_rubrique}{par titre}>
<?
    $titre_n = "[(#TITRE|addslashes)]";

    if ($titre_n > $titre_principal AND $premier_article) {
       $premier_article = false;
       ?>
       <br> Article suivant : <a href="#URL_ARTICLE">#TITRE</a>
       <?
    }
    ?>
</BOUCLE_art_suivant>
----------------------------

IMPORTANT: cela se place à l'intérieur de la boucle de l'article principal (celle qui affiche l'article que l'on est en train de lire); vous pouvez par exemple insérer ce code juste après l'affichage de #TEXTE dans la boucle principale.

Le principe général: il s'agit de récupérer la liste de tous les articles contenus dans la même rubrique, de comparer les titres de ces articles avec le titre de l'article principal, puis d'afficher uniquement 1 article.

Explication détaillée:

(1) Avant la boucle: récupérer le titre de l'article principal, et initialiser une variables. La syntaxe suivante:
"[(#TITRE|addslashes)]" est importante, car sinon on obtient un message d'erreur quand le titre contient des guillemets.
L'initialisation de $premier_article permettra par la suite de n'afficher qu'un seul article; pour afficher tous les articles suivants, on pourra simplifier encore le code; si on veut afficher un nombre déterminé d'articles suivants, on utilisera plutôt un compteur "$i_suivants" par exemple, que l'on incrémentera à chaque affichage d'un article, jusqu'à un nombre déterminé d'articles affichés.

(2) La boucle elle-même est sans difficulté:
<BOUCLE...(ARTICLES){id_rubrique}...
permet d'afficher les articles contenus dans la même rubrique, le classement {par titre} classe les articles dans l'ordre de leur titre (d'où l'intérêt de numéroter les titres, mais ça n'est pas obligatoire). Pour un affichage de l'article "publié avant", "publié après", on aurait préféré faire une classement {par date}...

(3) L'intérieur de la boucle
On voit que, ici, l'intérieur de la boucle est du code PHP. En effet, il va falloir traiter les résultats de la boucle pour savoir quoi afficher. Si on affiche directement le résultat de la boucle, on obtiendrait la liste complète des articles de cette rubrique:
1. Mon premier article
2. Mon deuxième article
3. Encore un titre d'article
4. Mon quatrième article...

Si nous sommes actuellement dans l'article "2. Mon deuxième article", on veut donc n'afficher que l'article "3. Encore un titre d'article".

Le code PHP est alors relativement simple à comprendre, si on sait selon quel critère on fonctionne:
- on veut afficher un article dont le titre est "supérieur" au titre de l'article principal (attention, ce "supérieur" est une comparaison alphabétique, considérant que "3. Encore..." est "supérieur" à "2. Mon...");
- on veut afficher le premier article qui suit l'article principal, mais pas les suivants.
Ainsi le critère double du "if...".

L'intérieur du "if..." ne s'effectue donc que si les deux critères sont remplis. Cela effectue deux actions:
- fixer la variables $premier_article à "false", ainsi on affiche un article et un seul (lorsqu'on arrivera à l'article "4. Mon...", certes le titre sera bien "supérieur" à "2. Mon...", mais $premier_article ne sera plus "true", donc le "if..." ne donnera aucun affichage);
- afficher le lien hypertexte qui va bien. Ici, je ne m'embête pas avec un "echo...", avec la gestion un peu chiante des guillemets éventuels dans le titre, je sors de PHP (?>....<?) et je balance du code code HTML/SPIP directement.

Voilà, c'est tout...

================

La boucle suivante affiche l'article précédent. C'est le même principe qui ci-dessus, il faut placer cela dans la boucle principale de votre article (cette fois, par exemple avant #CHAPO). La différence est à deux endroits:
- la boucle (ARTICLES) est affichée à l'envers {inverse}, de façon à ce que l'article "1. Mon..." soit traité après "2. Mon deuxième...";
- on affiche le premier article dont le titre "inférieur" au titre de l'article principal.

-------------------
<?
    $titre_principal = "[(#TITRE|addslashes)]";
    $premier_article = true;
?>
<BOUCLE_art_prec(ARTICLES){id_rubrique}{par titre}{inverse}>
<?
    $titre_n = "[(#TITRE|addslashes)]";

    if ($titre_n < $titre_principal AND $premier_article) {
       $premier_article = false;
       ?>
       <br> Article précédent : <a href="#URL_ARTICLE">#TITRE</a>
       <?
    }
?>
</BOUCLE_art_prec>
-------------------

Amicalement,
ARNO*

--
Le Scarabée : http://www.scarabee.com
uZine 2 : http://www.uzine.net

DH/DSS, 0x11930F0B, DEEB 602D B344 644B AF88 BF73 85F4 2297 1193 0F0B

Bonjour,
En voulant utiliser l'imprimer à partir d'une brève (ça marche sans problème à partir d'un article) j'ai eu les messages suivant :

Une idée ?

Warning: 0 is not a MySQL result index in ecrire/inc_index.php3 on line 49
Warning: 0 is not a MySQL result index in inc-stats.php3 on line 19

Bonjour,

Quelqu’un peut-il signaler quel éditeur html gratuit est le plus inoffensif pour modifier les squelettes SPIP ?

HomePage FrontPage ?

(Qui ne modifie pas sans prévenir les codes SPIP)

Merci

Walk
http://wallkatoll.multimania.com/

PS: Merci Antoine pour l’info sur le bug SPIP pour les petitions sur multimania. On patientera ;o)

Bonjour, je viens d'installer spip :slight_smile:
Pour le moment je découvre, mais j'ai un problème étrange. J'ai mis une photo pour m'illustrer en tant qu'auteur, et il y a un lien mailto vers #EMAIL, qui donc ne marche pas. Comment désactiver ce truc svp ?? (j'utilise le modèle lambda pour le moment). Le lien sur le nom lui marche (et est suffisant d'ailleurs).
Merci d'avance et félicitations aux auteurs de spip au passage !
-----
dorian
http://3studio.free.fr (les carnets du StudiO avec SPIP)
http://www.3studio.org (le Studio Associatif et ses jolies images)

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Quelqu'un peut-il signaler quel éditeur html gratuit
est le plus inoffensif pour modifier les squelettes SPIP ?

Dreamweaver 2 est distribué gratuitement dans certains magazines et
sur les CDs de Wanadoo, je crois.

Pierre
______________________________________
mailto:pierre.thierry@ulp.u-strasbg.fr
PGP Key DH/DSS 0xD9D50D8A

-----BEGIN PGP SIGNATURE-----
Version: PGP 7.0.4

iQA/AwUBO/zyucXtdyDZ1Q2KEQLMXACgjjRaCShQ5XJJ8uawB4Dvl1Qg+7AAnRn8
kuCQZVJ9DVuxLPWGLu6GCsOe
=k5zD
-----END PGP SIGNATURE-----

> Quelqu'un peut-il signaler quel éditeur html gratuit
> est le plus inoffensif pour modifier les squelettes SPIP ?

edit plus
cordialement
jud

S’il est encore le temps:

Il me semble que le 1st Page est le meilleur.
Il est gratuit et downloadable à:
http://www.evrsoft.com/

Bonne chance.

----- Original Message -----
From: Walk
To: spip@rezo.net
Sent: Thursday, November 22, 2001 11:21 AM
Subject: [Spip] editeur html neutre ?

Bonjour,

Quelqu’un peut-il signaler quel éditeur html gratuit est le plus inoffensif pour modifier les squelettes SPIP ?

HomePage FrontPage ?

(Qui ne modifie pas sans prévenir les codes SPIP)

Merci

Walk
http://wallkatoll.multimania.com/

PS: Merci Antoine pour l’info sur le bug SPIP pour les petitions sur multimania. On patientera ;o)

"kkoide" <kanjikan@wanadoo.fr> écrivait :

Il me semble que le 1st Page est le meilleur.
Il est gratuit et downloadable à:
http://www.evrsoft.com/

Je confirme, il est excellent et n'introduit aucun code parasite.

--
Melchior de Contades