Introduction
Les articles de votre site sont parfois un peu longs et vous vous êtes probablement déjà posé la question de savoir comment alléger vos belles tirades...
Que faire, donc, avec un couteau suisse ? Eh bien une découpe !
Voici notre solution : dans vos textes, il vous suffit d’utiliser quatre signes plus consécutifs (« ++++ ») à l’endroit où doit se trouver la coupure. Ce raccourci n’est pas sans rappeler les quatre signes moins consécutifs (« ---- ») qui indiquent à SPIP l’emplacement d’une ligne horizontale.
L’outil va ensuite ajouter automatiquement une petite zone de navigation en haut et en bas de votre texte, qui peut ressembler à ceci :
Si un extrait du texte est :
Alors, en passant la souris sur le chiffre « 2 », vous obtiendrez :
En passant la souris sur les liens de navigation, vous apercevez ci-dessus qu’un titre apparaît : il s’agit en fait du début de la première phrase de la page ciblée. Il pourrait également s’agir du premier titre... A vous de composer !
Lorsque votre article comporte plus de quatre pages, alors la navigation prend une forme plus complexe :
Un petit conseil : à l’intérieur de votre texte, il vaut mieux isoler ce raccourci en sautant une ligne de part et d’autre, SPIP saura alors mieux formatter vos paragraphes. Vérifiez également qu’aucune balise HTML ou raccourci SPIP ne traverse les quatre plus (« ++++ ») : vous risquez d’endommager l’aspect de votre site, car chaque page ainsi découpée est considérée comme indépendante. Evitez par exemple :
La bonne syntaxe est :
Installation
Cet outil est une fonctionnalité du plugin « Le Couteau Suisse » que vous pouvez trouver ici : Le Couteau Suisse.
Pour avoir accès à la découpe de vos textes en plusieurs pages, il vous faut donc avoir installé ce plugin en suivant la procédure normale d’installation des plugins SPIP.
Ensuite, veuillez activer l’outil « Découpe un texte en pages » en vous rendant sur la page d’administration du plugin en espace privé (Bouton Configuration, et onglet "Le Couteau Suisse").
Petite astuce : afin d’éviter que le raccourci « ++++ » se retrouve automatiquement dans les résumés produits par la balise #INTRODUCTION, activez aussi l’outil « Balise #INTRODUCTION ».
Notes techniques
- Techniquement parlant, cet outil agit sur toutes les balises #TEXTE trouvées dans vos squelettes et insère une coupure là où il trouve quatre signes plus (« ++++ »). Vous pouvez donc insérer des découpages dans vos articles, vos textes de rubrique, etc.
- Une condition est cependant nécessaire : la découpe en page ne fonctionnera pas si votre squelette utilise la balise #TEXTE étoilée (« #TEXTE* »). En effet, cette syntaxe permet de s’affranchir de tous les filtres automatiques et SPIP renvoie donc le texte brut sans aucune transformation. Si vous tenez absolument à mettre une étoile, alors il faut ajouter à votre balise le filtre cs_decoupe, comme ceci : [(#TEXTE*|propre|cs_decoupe)]
- Le plugin fonctionne tel quel avec la dist de SPIP. Cependant, si votre squelette est construit avec des inclusions, alors il est indispensable de transmettre à la noisette l’indicateur de page {artpage}, ainsi que les options éventuelles {cs} du Couteau Suisse. Par exemple :
<div id="page">
<div id="contenu">
<INCLURE {fond=inc-article-corps}{id_article}{id_rubrique}{artpage}{cs}>
</div>
</div>Notez que l’argument {env} vous permet de transmettre tout l’environnement au squelette inclus :
<div id="page">
<div id="contenu">
<INCLURE {fond=inc-article-corps}{env}>
</div>
</div>- Le développement décrit dans le présent article est inspiré d’un ancien filtre que vous pouvez encore trouver ici : Découper un article en plusieurs pages. Afin d’assurer la compatibilité avec le séparateur "-----", ajoutez le code suivant à votre fichier config/mes_options.php :
// Compatibilite ascendante avec l'ancien filtre 'decoupe'
@define('_decoupe_COMPATIBILITE', '-----');Balise #CS_DECOUPE
Par défaut, le Couteau Suisse insère la pagination en tête et en pied d’article automatiquement. Mais vous avez la possibilté de placer cette pagination ailleurs dans votre squelette qu’en tête de votre article grâce à une balise #CS_DECOUPE. L’utilisation de cette balise doit être activée dans la page de configuration et annule ainsi l’insertion automatique des paginations dans votre article.
Cette balise renvoie la pagination seule quand elle existe (quand l’article est découpé), et se comporte un peu comme la balise #TEXTE : elle doit être placée à l’intérieur d’une boucle ARTICLES. Depuis la version 1.8.36.01 du Couteau Suisse, la balise #CS_DECOUPE accepte un paramètre numérique permettant d’accéder directement à un article par son id_article, évitant ainsi une boucle dédiée.
Exemples : #CS_DECOUPE{2}, #CS_DECOUPE{#GET{toto}} ou #CS_DECOUPE{#ENV{id_article}}.
Attention, ce raccourci ne doit pas être utilisé à l’intérieur d’une boucle du même article, sous peine d’un appel SQL inutile. Exemple évident à éviter : <BOUCLE01(ARTICLES)>#CS_DECOUPE{#ID_ARTICLE}</BOUCLE01>
Les Surcharges
Les images
Si vous désirez changer les images utilisées pour la navigation (par défaut, ce sont de petits triangles noirs), il est préférable de recopier le dossier couteau_suisse/img/decoupe/ directement dans votre squelette. En effet, SPIP va d’abord chercher le dossier en question dans votre squelette avant d’aller explorer les répertoires du plugin : c’est le mécanisme des surcharges. Du coup, vous pouvez créer un dossier monsquelette/img/decoupe/ afin de remplacer celui du Couteau Suisse et y mettre vos propres images. Ainsi, la mise à jour de votre plugin à tendance helvétique préféré pourra se faire sans crainte de perdre votre personnalisation.
Les images doivent obligatoirement se nommer ainsi : debut.gif, debut_off.gif, precedent.gif, precedent_off.gif, suivant.gif, suivant_off.gif, fin.gif, fin_off.gif. Si debut.gif ou fin.gif n’est pas trouvé, alors les images precedent.gif ou suivant.gif seront doublées (cf l’exemple ci-dessus).
Les fonds
Si les fonds proposés par défaut pour la pagination ne vous satisfont pas, alors il suffit pour vous de les surcharger dans votre propre squelette (y copier les originaux avant de les modifier). Les fichiers en question sont : fonds/decoupe_item.html (calcul des numéros) et fonds/decoupe.html (inclusion du fond précédent et ajout des flèches de navigation). Toutes les possibilités CSS vous seront alors ouvertes !
Attention : toute modification d’un fichier ou d’un dossier surchargé nécessite une recompilation des outils du Couteau suisse, obtenue en se rendant simplement sur la page de configuration du plugin ou en réaffichant celle-ci.
La découpe en AJAX
AJAX est une petite merveille qui permet d’isoler un fragment HTML au sein d’une page et réagissant aux localement clics. En gros, plus besoin de charger la page entière pour en modifier seulement qu’une partie... Ici, la découpe de vos articles se marie très bien avec cette idée, puisqu’il n’est pas nécessaire de tout reconstruire la page (les menus, les entêtes, etc.) alors qu’on ne fait que changer de fragment d’article découpé, comme si on feuilletait les pages d’un livre.
Si vous êtes sous SPIP 2.0 minimum, on continue, sinon, sautez à l’intertitre suivant en attendant de mettre à jour votre CMS préféré.
Pour mettre en place un fragment AJAX, il faut isoler ce qui concerne l’article proprement dit dans un fichier à part que l’on nommera inc-article-corps.html, et y mettre par exemple la boucle suivante (mettez-y, bien sûr, le contenu que vous voulez, le plus important, c’est d’y avoir la balise #TEXTE) :
Ensuite, dans votre fichier article.html, censé afficher la page complète, mettez simplement quelque chose comme :
Avec ce mécanisme, la pagination ne fonctionnera qu’à l’intérieur du <div class="inc_article"> et un clic de souris ne rechargera pas la page entière, mais bien le seul fragment concernant les contenus SPIP de votre article (dans l’exemple ci-dessus : le titre, le chapo éventuel et le texte).
Notez le critère magique {ajax} disponible à partir de SPIP 2.0, l’id de l’article {id_article} nécessaire à la boucle BOUCLE_inc_article, l’indispensable indicateur de page {artpage} à transmettre au fragment, et les options éventuelles {cs} du Couteau Suisse.
Les filtres
Un paramètre artpage ajouté à l’URL de votre article permet au plugin de connaître le numéro de la page à afficher. Il est composé de deux nombres séparés par un tiret : artpage=PC-NB, où PC est le numéro de la page en cours et NB est le nombre total de pages.
Il existe trois filtres pour tirer partie de ce paramètre :
- artpage($artpage=false, $index=0) : renvoie l’un ou l’autre des deux nombres.
Par défaut (si $index=0), la fonction renvoie la page en cours.
Si $index=1, la fonction renvoie le nombre de pages. Attention : si ce nombre est absent du paramètre artpage ou si ce paramètre est introuvable, alors la fonction renvoie 0.
- artpage_fin($artpage=false) : renvoie vrai si la page en cours est la dernière. Si le nombre de pages est absent du paramètre artpage ou si ce paramètre est introuvable, alors la fonction renvoie faux.
- artpage_debut($artpage=false) : renvoie vrai si la page en cours est la première.
Dans vos squelettes, il vous uffit donc d’utiliser :
- #ENV{artpage}|artpage pour la page en cours
- #ENV{artpage}|artpage{1} pour le nb de pages, s’il est présent
Deux exemples équivalents :
- [(#ENV{artpage}|artpage|=={1}|oui) Youpi, ceci est la première page !]
- [(#ENV{artpage}|artpage_debut|oui) Youpi, ceci est la première page !]
Notez que le filtre oui est introduit par SPIP 2.0. Il permet de rendre vraie une expression au sens SPIP et doit notamment être appliqué sur un filtre de type boolean (vrai/faux). Pour les versions antérieures de SPIP, les exemples précédents sont également valides : le Couteau Suisse contient les filtres oui et non dans ses fonctions et vous permet de les utiliser sans crainte dans vos squelettes.
Astuces
- En manipulant les styles css, Il vous est possible de désactiver une des deux lignes de navigation (ou les deux si vous le souhaitez, mais le bon sens n’y vois aucun intérêt !). Dans le head de votre squelette ou dans un fichier css, il vous suffit d’insérer « div.decoupe_haut{display:none !important;} » pour supprimer la navigation placée en haut du texte, et « div.decoupe_bas{display:none !important;} » pour supprimer celle d’en bas.
- Dans les fichiers de votre squelette, vous avez peut-être une balise #TEXTE destinée à l’impression du texte complet, non découpé en pages. Le Couteau Suisse met à votre disposition un filtre "cs_imprimer" qui produira le texte dans son ensemble, où les pages sont simplement séparées par un mince filet pointillé. La syntaxe pourrait être celle-ci : [(#TEXTE*|cs_imprimer|propre)]. Mais ceci est un peu lourd, lisez le point suivant.
- Dans votre navigateur, ajouter à l’adresse d’une page le paramêtre "cs=print" permet d’obtenir le même effet décrit ci-dessus et force le Couteau Suisse à afficher l’article entier. Par exemple : www.monsite.ici/spip?article999&cs=print
Aussi, ce paramétrage est automatique dans les squelettes suivants : "print.html", "imprimer.html", "imprimir_articulo.html", "imprimir_breve.html" ou "article_pdf.html" (donc ici : "page=print", "page=imprimer", etc.). Lisez ici le paragraphe "Particularités" pour en savoir davantage.
- Le découpage d’un article peut permettre très facilement de se composer rapidement un diaporama que vous pouvez éventuellement commenter (astuce de Ch. Guigueno). Il suffit de placer une photo par page et le tour est joué ! Voici un exemple (emb1 et emb2 doivent être des images) :
- Cet outil « Découpe un texte en pages » se marie très bien avec l’utilisation d’un outil voisin, le Sommaire Automatique : « Un sommaire pour vos articles ». Si ce dernier est activé, le sommaire détecte en effet les découpages et ajoute le numéro de la page où les différents intertitres SPIP ont été trouvés.
Les onglets
Vous pouvez trouver de très nombreux exemples d’utilisation des onglets dans les articles : par ici ou par ici...
Depuis la version 1.7.8.07 du plugin, l’outil « Découpe un texte en pages » offre (pour peu de code supplémentaire !) la possibilité de construire des onglets dans vos articles (ou même dans vos squelettes). La syntaxe est basée sur le même séparateur (« ++++ ») que l’on place très simplement à l’intérieur des balises <onglets> et </onglets>. Par exemple :
Voici en image ce que donne un usage par défaut :
Dont voici le code :
Cette foncionnalité utilise les librairies JQuery, simplifiant grandement la tâche des programmeurs et utilisées par SPIP lui-même.
Afin d’afficher correctement les onglets demandés par le rédacteur, le plugin fournit le code HTML suivant :
jQuery va ensuite construire à la volée le sytème d’onglets et mettre en rapport les onglets cliquables et les contenus. Les ancres sont introduites dans certaines balises <div> sous forme : id="mon_ancre".
Cela donne donc au final le code HTML suivant :
Aspect visuel
Dans le code ci-dessus, il est facile de repérer les différents blocs <div> ou <h2>, affublés de classes qui vous permettrons de changer l’aspect des onglets à votre guise, comme ceci par exemple, les onglets créés par Douglas Bowman :
dont j’ai reconstitué pour vous le fichier CSS adapté au Couteau Suisse qui devra être interprété APRES les styles définis par défaut :
Voici d’autres onglets créés par Douglas Bowman :
Je mentionne également une contribution similaire de Pi r, ayant adapté pour SPIP les scripts d’Erik Arvidsson, programmés en Javascript pur. Mais aujourd’hui, autant utiliser directement les librairies jQuery de SPIP et alléger le temps de chargement des pages. Les versions 1.7.9.12 et suivantes du Couteau Suisse comprennent la syntaxe de ce plugin, assurant ainsi une compatibilité pour d’anciens articles basés sur ces travaux.
Ancres et paramètres
Chaque bloc d’onglets est affublé d’une ancre : #ongl_0, #ongl_1, etc. Ajoutée à l’url de votre page, l’ancre placera automatiquement le navigateur en tête de bloc.
Pour activer un onglet particulier sur une page lors du chargement de cette dernière, il vous suffit d’ajouter un paramètre dans votre url. Par exemple : "onglet=2" (ou "http://www.spip-contrib.net/Decouper-un-texte-en-pages-et-ou?onglet=2").
Notez que le premier onglet est noté zéro ; l’exemple précédent activera donc le troisième onglet de la page entière.
Les onglets dans vos squelettes
Depuis la version 1.7.9.12 du plugin, de nouvelles balises (#ONGLETS_DEBUT, #ONGLETS_TITRE et #ONGLETS_FIN) ont été introduites afin de vous permettre de contruire des onglets directement dans votre squelette (fichiers *.html). Voici un exemple de syntaxe :
Au sein d’une boucle SPIP et sur un bloc d’onglets principal (non imbriqué dans un autre bloc d’onglets), vous pouvez omettre #ONGLETS_DEBUT, le Couteau Suisse constuira quand même le bloc correctement (version 1.8.06.01 minimum du plugin). Si votre bloc d’onglet est imbriqué, alors il faut jouer avec la balise #COMPTEUR_BOUCLE et vérifier que le premier appel de balise est bien #ONGLETS_DEBUT. L’intérêt ici est de pouvoir placer un champ de cette boucle dans le titre des onglets.
Par exemple, le code :
s’il n’est pas contenu dans un autre bloc d’onglets, peut être simplifié en :
Dépendances
- La librairie jQuery est requise pour le fonctionnement des Onglets, dans la construction et la manipulation des jeux d’onglets présents sur la page finale. Ces fonctions Javascript très utile a été intégré au core dès la version 1.9.2 de SPIP. Pour les versions inférieures, il vous faut installer et activer le plugin Jquery que vous pouvez télécharger ici : http://zone.spip.org/files/spip-zon....
- Les styles CSS et les fonctions Javascript du plugin sont insérés grâce à la balise #INSERT_HEAD qui doit absolument être présente (en un seul exemplaire) dans le head de vos squelettes (entre les balises <head> et </head> des fichiers HTML). Si vous ne trouvez pas cette balise dans vos codes et que les liens n’ont pas l’apparence voulue, alors activer l’outil "Balise #INSERT_HEAD" permet au Couteau Suisse d’insérer automatiquement cette balise sans manipulation de votre part.
- Bug ! Manu_TJ nous a écrit : « sur mon site, l’utilisation des onglets ne fonctionne pas sur de très longs articles : la page affichée est blanche, le texte est bien en base mais ne s’affiche pas à l’écran (espace public comme privé). Dès que j’enlève les balises "onglets", l’article réapparaît. Et sur les articles avec moins de texte, pas de soucis non plus ». Il s’avère que son site est interprété par PHP v5.2.9 et il semble que sous cette version du célèbre langage, la fonction preg_replace_callback() en mode "ungreedy" perd le texte en cours de route s’il est trop long : l’expression ',<onglets([0-9]*)>(.*?)</onglets\1>,ms' ne fonctionne plus alors que ',<onglets([0-9]*)>(.*)</onglets\1>,ms' fonctionne toujours... En regardant le début du fichier outils/decoupe_fonctions.php on voit l’expression régulière qui nous intéresse en define(). Il suffit donc de la surcharger dans le fichier /config/mes_options.php en ajoutant la ligne suivante :
Cela annulera l’effet ungreedy de l’expression mais interdira du coup les multiples systèmes d’onglets dans un article. Cependant, cette expression contourne le bug de PHP 5.2.9 ...








test.css
Vos commentaires
# Le 23 janvier à 01:43, par laurent
En réponse à : Découper un texte en pages et/ou en onglets
Salut a toutes et tous
tt d’abord, bravo pour le travail effectué !
voila, j’ai un petit soucis : lors d’un recalcul d’une page cette lame du CS « saute » (onglets et bloc)
l’un de vous a-t-il deja rencontrer ce probleme ?
le rechargement du CS corrige le probleme (si la compression javascript et css désactivé dans la config de spip)
suis sous spip 2.1 à jour
merci d’avance pour votre aide
www.fsl-nancy.fr
# Le 23 janvier à 02:12, par ?
En réponse à : Découper un texte en pages et/ou en onglets
Comment ça « saute » ? Il y a peut-être trop d’ajax lancés au même moment ?
# Le 23 janvier à 02:29, par laurent
En réponse à : Découper un texte en pages et/ou en onglets
en ce moement par exemple, ca a sauté : comme si la lame etait desactivée...
pour voir : www.fsl-nancy.fr
colonne de gauche le menu des rubriques est un bloc depliable (sauf que la ca ne fonctionne pas)
pour le nombre d’ajax lancés : sur une page ou il y en a peu (2) c’est la meme...
# Le 23 janvier à 02:50, par laurent
En réponse à : Découper un texte en pages et/ou en onglets
en image :
- quand ca a « sauté » => capture à 02.38.30 (si vous avez un autre mot pour décrire : c’est pas vraiment « désactivé »)
- quand ca fonctionne => capture à 02.48.30
# Le 23 janvier à 02:53, par laurent
En réponse à : Découper un texte en pages et/ou en onglets
oups. désolé...
- quand ca a « sauté » => capture à 02.38.30 (si vous avez un autre mot pour décrire : c’est pas vraiment « désactivé »)
Répondre à ce message
# Le 16 décembre 2011 à 10:50, par Stéphane
En réponse à : Découper un texte en pages et/ou en onglets
Bonjour,
Une autre question concernant ce bel outil.
J’ai utilisé la fonction de découpe de texte en pages et remplacé les numéros générés automatiquement par de nouvelles images gif.
Un de mes articles possède un texte assez long :
http://www.fondation-gelbert.ch/v2/spip.php?article10
Tout fonctionne très bien sur 3 pages découpées (c’est le cas sur le site en ligne). Dès que je crée un 4ème découpage (ce qui serait visuellement quand même plus agréable), cela ne fonctionne plus. Les images page suivante > et < page précédente s’empilent, c’est à dire qu’on les voit plusieurs fois sur chacune des pages découpées (exemple en pièce-jointe, site en local).
Y a-t-il une solution ou est-ce une limitation de l’outil ?
Merci infiniment,
Stéphane
Répondre à ce message
# Le 10 novembre 2011 à 09:00, par Stéphane
En réponse à : Découper un texte en pages et/ou en onglets
Bonjour,
Question de novice j’en suis sûr, mais où et comment faut-il que j’intervienne afin d’éviter que les images (d’origines ou modifiées comme dans l’exemple joint) ne soient entourées par une fort disgracieuse bordure blanche ?
J’utilise cette fonctionnalité pour découper un article en plusieurs « sous-pages », soit la balise #CS_DECOUPE
Merci pour vos lumières.
Stéphane
ps : je vous joints un print-screen, le site étant en local pour l’instant
# Le 10 novembre 2011 à 13:44, par ?
En réponse à : Découper un texte en pages et/ou en onglets
Bonjour,
On ne voit pas bien ton image, mais il semble que ton problème soit lié à un simple style CSS à ajouter à ton squelette. Avec le couple Firefox/Firebug, tu pourras facilement trouver le sélecteur à utiliser.
# Le 14 novembre 2011 à 07:56, par Stéphane
En réponse à : Découper un texte en pages et/ou en onglets
Bonjour,
Merci pour votre réponse.
En fait, après avoir cherché de tous les côtés, je me suis aperçu que la balise #INSERT_HEAD ne figurait pas dans la page. Son ajout a réglé le problème...
Que de temps perdu pour une bêtise ... _ :-)
Répondre à ce message
# Le 13 octobre 2011 à 21:20, par ???
En réponse à : Découper un texte en pages et/ou en onglets
Bonjour,
J’utilise les onglets et dans le 3eme onglet j’affiche une carte gis, mais la carte ne s’affiche pas à cause d’un problème de javascript est ce quelqu’un sait comment résoudre ce probleme ???
PS : Si je mets la carte sur le 1er onglet j’ai pas ce problème
Merci de votre aide
voici l’url http://play.imedia.sn/spip.php?article1
Répondre à ce message
# Le 13 octobre 2011 à 20:19, par Ivan
En réponse à : Découper un texte en pages et/ou en onglets
Bonjour
Bravo pour le travail effectué. Pour ma part la pagination est l’élément essentiel qui m’intéresse.
Cependant, je fournis par ailleurs les articles dans leur intégralité dans le flux RSS de mon site, voilà pourquoi j’aimerais savoir s’il est possible de désactiver la pagination (sans perdre la mise en forme normale du texte) dans les boucles du squelette servant au rss.
Merci d’avance si quelqu’un a une piste ! :)
Répondre à ce message
# Le 3 mai 2011 à 16:48, par dom
En réponse à : Découper un texte en pages et/ou en onglets
Bonjour,
J’ai un petit problème sous IE6 lorsque j’active la lame « Découpe en pages et onglets ».
Lorsque je consulte un article avec des onglets j’ai un beau plantage « l’instruction à xxxx emploi l’adresse memoire xxxx la memoire ne peut pas etre read ».
Auriez-vous une idée ???
d’avance merci
Répondre à ce message
# Le 22 février 2011 à 22:56, par J-Ph Guihard
En réponse à : Découper un texte en pages et/ou en onglets
Bonjour,
je viens de mettre en place ton super CS pour découper une page en plusieurs via le génial ajax sous SPIP 2.18 et CS uptodate.
J’utilise #CS_DECOUPE et j’’ai un problème car il y a 2 paginations à s’afficher sur la ligne. Je ne veux pas de la pagination de droite 2>. J’ai essayé de trifouiller le fichier decoupe_item.html sans succès. Je ne veux que les pavés rouges de droite.
# Le 22 février 2011 à 23:15, par Pat
En réponse à : Découper un texte en pages et/ou en onglets
Hmm... Je ne vois pas d’où peut venir cette double pagination... Le fond d’origine du plugin présente-t-il aussi cette erreur ?
Tu as un lien public peut-être ?
# Le 22 février 2011 à 23:49, par J-Ph Guihard
En réponse à : Découper un texte en pages et/ou en onglets
C’est ici : http://www.jp.guihard.net/spip.php?article130.
Je n’ai modifié aucun des tes fichiers mis à part la css decoupe.css.
J’ai un autre petit problème, si tu as le temps. J’ai des des title qui ne s’affichent pas toujours correctement sur les flèches gauche ou droite.
# Le 23 février 2011 à 21:54, par J-Ph Guihard
En réponse à : Découper un texte en pages et/ou en onglets
J’ai trouvé où se trouvait la merdouille. Cela venait d’une class de css que j’utilisais déjà et que j’appelle aussi .pagination. Cela faisait tout se mélanger.
Cela dit, si tu as le temps et le courage, j’aimerai bien un procédé de personnalisation de ce que l’on veut afficher. Pour ma part , je ne vois pas l’intérêt d’afficher une flèche quand elle ne pointe vers rien. J’ai contourné la chose en remplaçant tes precedent_off en une image vide. En outre, pouvoir mettre un message avant les icônes, du genre Lire la suite de l’article truc truc, message qui varierait si nous sommes en cours d’article ou à la fin. Truc à mettre dans ton fichier decoupe_item par exemple.
En tous les cas, merci pour cette lame et pour le CS en général.
# Le 24 février 2011 à 10:46, par Patrice Vanneufville
En réponse à : Découper un texte en pages et/ou en onglets
La réponse est dans tes propres messages. Pour personnaliser cette pagination, il suffit de surcharger dans ton squelette les deux fichiers suivants :
- decoupe_item.html, qui s’occupe des numéros
- decoupe.html, qui s’occupe des flèches et intège le précédent
N’hésite pas à nous faire part de tes travaux, cela pourra intéresser d’autres utilisateurs ! Auncun besoin d’image vide, donc ;-)
Rappel : la surcharge dans un squelette perso est indispensable afin de profiter des mises à jour régulières du Couteau Suisse. Surtout ne pas modifier les fichiers originaux du plugin.
# Le 27 février 2011 à 18:14, par J-Ph Guihard
En réponse à : Découper un texte en pages et/ou en onglets
Je suis en train de vouloir ajouter un texte du genre lire les pages suivantes de l’article XX et lire les pages précédentes de l’article XX si on est à la fin. Sais tu comment passer l’id de l’article dans le fichier decoupe.html. J’ai essayé de rajouter ce paramètre
[(#CS_DECOUPE{id_article})]sans succès. En récupérant #ENV dans le fichier decoupe.html, je n’ai pas l’id de l’article.# Le 28 février 2011 à 03:06, par Patrice Vanneufville
En réponse à : Découper un texte en pages et/ou en onglets
Oui c’est normal, comme tu peux le voir dans le contenu de decoupe.html, il n’y a pas l’id. Cette pagination est prévue pour le découpage d’un seul article, pas le découpage d’un texte en plusieurs articles...
Je vais modifier la balise #CS_DECOUPE : voir l’article ci-dessus pour son utilisation.
Répondre à ce message
# Le 14 février 2011 à 10:34, par Billard_fm
En réponse à : Découper un texte en pages et/ou en onglets
Bonjour
J’utilise la balise #CS_DECOUPE et souhaiterai que s’affiche avant la flèche de gauche un texte de mon choix (par exemple page).
Mais si je fait un truc du genre [page (#CS_DECOUPE)] j’obtiens bien le texte page mais pas au bon endroit. En jouant avec des CSS j’arrive à le centrer au dessus.
Mais est il possible de modifiez la balise #CS_DECOUPE et comment ?
merci d’avance.
F.M BILLARD
# Le 14 février 2011 à 11:15, par Pat
En réponse à : Découper un texte en pages et/ou en onglets
En CSS, cela doit pouvoir se régler. Essayez encore en modifiant les styles à la volée grâce à Firefox/Firebug.
Sinon, la pagination est contruite grâce au fond
couteau_suisse/fonds/decoupe.htmlque vous pouvez copier puis modifier dans votre propre squelette :mon_squelette/fonds/decoupe.html.# Le 14 février 2011 à 11:37, par Billard_fm
En réponse à : Découper un texte en pages et/ou en onglets
Bonjour
oui avec les CSS j’ai bidouillé un système qui fonctionne.
Je vais jeter un coup d’oeil au fichier decoupe.html
merci
F.M BILLARD
Répondre à ce message
# Le 7 février 2011 à 14:41, par tetue
En réponse à : Découper un texte en pages et/ou en onglets
Les onglets sont stylés par la feuille de style
header.cssinsérée dans leheadde la page, assez pénible à surcharger : comment peut-on empêcher l’insertion de cette feuille de style ?# Le 7 février 2011 à 16:24, par Patrice Vanneufville
En réponse à : Découper un texte en pages et/ou en onglets
La feuille
header.cssest issue de la compilation finale de tous les outils activés. Pour surcharger les styles, il faut surcharger chacune des feuilles utilisées par les outils. En l’occurence, les onglets utilisent le fichieroutils/decoupe.cssqu’il est facile de recopier dans son squelette puis de modifier à volonté.Attention toutefois à certaines propriétés indispensables au bon fonctionnement des onglets : z-index, position, display, float et Cie j’imagine...
Je n’insisterai jamais assez, que pour un fonctionnement optimum du plugin, chaque surcharge nécessite une recompilation complète du plugin :
- soit réafficher sa page d’admin,
- soit valider la config d’un outil,
- soit ajouter le paramètre « cs=calcul » dans l’URL
Répondre à ce message
# Le 13 janvier 2011 à 11:09, par ubiq
En réponse à : Découper un texte en pages et/ou en onglets
Bonjour,
Merci pour ce plugin que j’ai plusieurs fois utilisé par le passé.
Aujourd’hui, je me trouve confronté à une situation inédite.
J’utilise ce plugin pour découper des articles auxquels sont joints plusieurs dizaines d’images.
A partir de ces images, je génère une galerie.
Mon objectif : arriver à relier certaines images à certaines pages (découpées avec ce plugin), afin que ma galerie n’affiche que les images liées à la page en cours.
Ma première idée : utiliser une numérotation au début du titre de chaque image (ex : 1. titre pour toutes les images de la page 1, etc)
Je numérote donc mes images, et je teste le code suivant basé sur un test du titre par expression régulière :
<B_GALERIE>
<h1><:galerie:></h1>
<ul>
<BOUCLE_GALERIE(documents) {mode==image} {id_article} {doublons} {par num titre} {titre==^[3]}>
<li><a href="#URL_DOCUMENT" title="#DESCRIPTIF">[(#FICHIER|image_reduire{0,100}|inserer_attribut{'alt',#TITRE})]</a></li>
</BOUCLE_GALERIE>
</ul>
</B_GALERIE>
Ca marche, dans ce cas, ma galerie ne contient plus que les images dont le titre commence par « 3 », c’est à dire celle que j’associerai à la page « 3 » de mon découpage.
Il est temps de remplacer mon 3 par un code qui me donnera le numéro de la page en cours dynamiquement.
Je sais que
[(#ENV{artpage}|artpage)]me donne le numéro de la page en cours.Et celui me renvoit bien toujours « 1 » pour les articles non découpés, et toujours le numéro de la page en cours pour articles découpés. Cela parait exploitable pour mon problème
Hélas, je ne pourrai pas l’utiliser tel quel dans un critère de boucle (on ne peut pas utiliser de balises filtrées dans un critère).
J’essaie donc un truc à base de PHP :
<B_GALERIE>
<h1><:galerie:></h1>
<ul>
<BOUCLE_GALERIE(documents) {mode==image} {id_article} {doublons} {par num titre} {titre==^[<?php echo "[(#ENV{artpage}|artpage)]"; ?>]}>
<li><a href="#URL_DOCUMENT" title="#DESCRIPTIF">[(#FICHIER|image_reduire{0,100}|inserer_attribut{'alt',#TITRE})]</a></li>
</BOUCLE_GALERIE>
</ul>
</B_GALERIE>
Cela ne fonctionne pas.
Probablement dû à l’ordre dans lequel SPIP interprète les pages ?
Si vous avez une piste pour résoudre mon problème, je suis preneur...
Merci de m’avoir lu.
# Le 13 janvier 2011 à 12:40, par ?
En réponse à : Découper un texte en pages et/ou en onglets
Le php n’est pas du tout autorisé. Il faut peut-être utiliser #SET et #GET (non testé) :
#SET{page,[(#ENV{artpage}|artpage)]}Puis utiliser
#GET{page}dans le critère de la boucle...# Le 13 janvier 2011 à 15:04, par ubiq
En réponse à : Découper un texte en pages et/ou en onglets
Bonjour,
Merci pour réponse, elle m’a mis sur la bonne piste.
J’avais déjà exploré cette piste (SET, GET) hier sans succès.
En ré-essayant aujourd’hui, je me suis rendu compte d’un pb de syntaxe lors de la définition du #SET.
J’ai maintenant un code qui fonctionne et qui ressemble à cela :
#SET{numero_page,#ENV{artpage}|artpage}
<B_GALERIE>
<h1><:galerie:></h1>
<ul>
<BOUCLE_GALERIE(documents) {mode==image} {id_article} {doublons} {par num titre} {titre==^[#GET{numero_page}]}>
<li><a href="#URL_DOCUMENT" rel="prettyPhoto[gal01]" title="#DESCRIPTIF">
[(#FICHIER|image_reduire{0,100}|inserer_attribut{'alt',#TITRE})]</a></li>
</BOUCLE_GALERIE>
</ul>
</B_GALERIE>
On remarquera la syntaxe particulière du filtre dans la définition de SET (sans parenthèses, ni crochets).
C’est cette page qui m’a mis sur la bonne voie quant à la syntaxe : http://www.mail-archive.com/spip@rezo.net/msg11944.html
Reste maintenant à résoudre le cas des articles non découpés avec images non numérotées (non numérotées en 1), en effet, il est apparemment impossible de distinguer (par son environnement, ENV) une article non découpé, de la première page d’un article découpée.
J’ai vérifié, et hélas sur la page 1 d’une série de 5 pages par exemple, le code
#ENV{artpage}|artpage{1}renvoie 0 au lieu de renvoyer 5.Au pire, je demanderai à l’utilisateur de signaler le découpage d’un article par le biais d’un mot clé associé par exemple qui lui permettra de choisir entre une galerie découpée ou une galerie unifiée pour l’article en question.
Dans tous les cas, merci pour votre aide qui m’a permis d’aboutir rapidement...
# Le 14 janvier 2011 à 00:33, par Pat
En réponse à : Découper un texte en pages et/ou en onglets
A moins de créer un nouveau filtre, tu peux déjà déceler le découpage de l’article en cherchant le séparateur dans le #TEXTE**, par exemple (non testé) :
#SET{sep, #EVAL{preg_quote(_decoupe_SEPARATEUR)}}[(#TEXTE**|match{#GET{sep}}|oui) découpage OK !]
Doc : http://www.spip.net/fr_article4299.html
Sinon, je reconnais que le filtre
|artpage{1}se limite à décoder le parametre d’url... Du coup, si on se trouve sur une première page d’article, sans paramètre, ce filtre renvoie zéro alors que l’article est quand même découpé... Pour remédier à cela, il faudrait créer une balise du genre #NB_ARTPAGES (utilisable seulement à l’intérieur d’une boucle ARTICLE) qui irait examiner le texte brut stocké en base et rendrait alors le nombre réel de pages....Répondre à ce message