Des blocs dépliables

Cet outil du Couteau Suisse vous permet de créer des blocs dont le titre cliquable peut rendre un contenu visible ou invisible, voire de les munir d’une adresse pour que le bloc visible soit récupéré en AJAX. Ces blocs sont disponibles dans tous vos contenus SPIP (articles, rubriques, etc.) ainsi que dans vos squelettes.

Présentation

Cet outil permet de créer des blocs dont le titre cliquable peut rendre un contenu visible ou invisible, voire de les munir d’une adresse pour que le bloc visible soit récupéré en AJAX. Ces blocs sont disponibles dans tous vos contenus SPIP (articles, rubriques, etc.) ainsi que dans vos squelettes (fichiers .html). Ils sont facilement configurables et imbricables.

Les fonctionnalités décrites ici font partie du plugin Le Couteau Suisse que vous pouvez trouver ici : Le Couteau Suisse. Pour avoir accès aux blocs dépliables présentés dans cet article, il vous faut donc avoir préalablement installé ce plugin.

Dans les contenus SPIP

Les rédacteurs ont à disposition les nouvelles balises <bloc> (ou <invisible>) et <visible> à utiliser dans leurs textes (articles, rubriques, etc.) comme ceci :

<bloc>
 Un titre qui deviendra cliquable
	    
 Le texte, initialement caché, à montrer/cacher, après deux sauts de ligne...
</bloc>
<visible>
 Un titre qui deviendra cliquable
	 
 Le texte, initialement affiché, à cacher/montrer, après deux sauts de ligne...
</visible>

A noter : si le texte du bloc ne comporte pas deux sauts de ligne délimitant le titre et le futur texte dépliable, alors le Couteau Suisse crée un titre qui deviendra cliquable en prenant les 30 premiers caractères du texte présent dans le bloc. Si besoin, ce paramètre est directement modifiable sur la page de configuration du plugin.

• Résumé

Pour qu’un résumé puisse alterner avec le contenu du bloc initialement caché, vos rédacteurs peuvent utiliser les balises <resume></resume> après le double saut de ligne comme ceci :

<bloc>
Le titre
	   
<resume>Un résumé</resume>
Le contenu du bloc plus développé
</bloc>

Dans les squelettes

Vous avez à votre disposition les nouvelles balises #BLOC_TITRE, #BLOC_RESUME, #BLOC_DEBUT et #BLOC_FIN à utiliser comme ceci :

 #BLOC_TITRE
 Mon titre
#BLOC_RESUME
Le résumé de la suite
#BLOC_DEBUT
 Mon bloc dépliable
 #BLOC_FIN

• Résumé

La balise #BLOC_RESUME est facultative. En cas d’utilisation, le résumé entre #BLOC_RESUME et #BLOC_DEBUT sera masqué lorsque le bloc est rendu visible.

Toutefois, seul le titre reste cliquable.

• Ajax

Pour utiliser Ajax, il faut préciser l’URL à charger grâce à la balise #BLOC_TITRE{mon_URL} à laquelle vous ajoutez un paramètre. Le fichier (ou l’adresse) pointée par l’url sera alors chargée dans le BLOC (entre #BLOC_DEBUT et #BLOC_FIN) avant que le bloc ne soit rendu visible.

Exemple dans une boucle (ARTICLES) : [(#BLOC_TITRE{[(#URL_PAGE{monajax}|parametre_url{id_article,#ID_ARTICLE})]})]
Ici, le fond monajax.html ne sera donc appelé que lorsque le visiteur voudra déplier le bloc.

Ce mécanisme permet d’alléger le poids de la page initiale et pourra augmenter la vitesse de navigation...

Notez cependant que #URL_PAGE n’aime pas les sous-répertoires sous SPIP : vous risquez un accès interdit. Remplacez donc #URL_PAGE{inc/qqchose} par #URL_PAGE{qqchose}.

Un exemple appelant le 1er article en base et transmettant le paramètre var_mode indispensable développement du site :

[(#BLOC_TITRE{[(#URL_PAGE{monajax}|parametre_url{id_article,1}|parametre_url{var_mode,#ENV{var_mode}})]})]
	My qualifications
#BLOC_DEBUT
	Wait please...
#BLOC_FIN

• Bloc visible

Pour produire un bloc déplié (dont le contenu est visible), ajoutez simplement l’argument {visible} à la balise #BLOC_TITRE. Exemple : #BLOC_TITRE{visible}

Installation

L’outil décrit ici est une fonctionnalité du plugin « Le Couteau Suisse » que vous pouvez trouver ici : Le Couteau Suisse.

Pour avoir accès aux raccourcis et aux balises décrits dans cet article, il vous faut donc avoir préalablement installé ce plugin en suivant la procédure normale d’installation des plugins SPIP.

Ensuite, veuillez activer l’outil « Blocs Dépliables » en vous rendant sur la page d’administration du plugin en espace privé (Bouton Configuration, et onglet "Le Couteau Suisse").

Une fois cet outil activé, vous aurez enfin la possibilité d’insérer dans vos articles ou dans vos squelettes des blocs dépliables/repliables.

Dépendances

Cet outil a besoin de la librairie jQuery. Le site officiel (en anglais) est : http://jquery.com/. D’autres informations sont disponibles en français ici : http://www.jquery.info/. Cette librairie de fonctions JavaScript a été complètement intégrée dans SPIP à partir de la version 1.92. Pour les versions antérieures, il vous faudra installer un plugin spécifique que vous pouvez télécharger ici : http://files.spip.org/spip-zone/jqu...

Si vous remarquez un conflit avec votre squelette ou un autre plugin (dysfonctionnement des blocs par exemple), tentez de modifier l’option de configuration « Balise pour les titres ». La valeur par défaut est h4, mais elle peut être changée en h5 ou même div.

Personnalisation des blocs

Les CSS doivent être ajoutées dans le fichier habituel de vos squelettes. En ce qui concerne la dist SVN de SPIP, il s’agit du fichier « habillage.css ». On le surcharge souvent à la racine du squelette utilisé pour le site.

Il y a une autre possibilité encore, celle de surcharger directement le fichier couteau_suisse/outils/blocs.css.html en le recopiant dans monsquelette/outils/blocs.css.html et en y modifiant les styles proposés ou en y ajoutant vos propres styles.

Attention : toute modification d’un fichier 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. N’hésitez pas à vider également les caches de SPIP, ou de travailler sans cache durant le développement du site.

Un bloc <bloc> (ou un #BLOC_XXX) est construit comme ceci :

<div class="cs_blocs">
<h4 class="blocs_titre blocs_replie">
<a href="#">un titre</a></h4>
<div class="blocs_invisible">le contenu</div>
</div>

Si l’on veut en modifier l’apparence, il suffit donc de déclarer un style perso comme ceci :

div.cs_blocs>div {
	border:solid 2px;
}

h4.blocs_titre, h4.blocs_replie {
	background:transparent none;
}

Dans cet exemple, tous les <bloc> auront un cadre noir autour du contenu et les tous les titres de blocs repliables h4 seront privés de leur petit triangle.

Pour y voir plus clair, je conseille toujours de débuguer son site avec FireFox et l’excellente extension FireBug. On peut y gérer les CSS et débugger le JS à la volée, c’est très pratique. (Modif. 2018 : Chrome le permet également très bien).

Il se peut que, si vous placez une image dans un bloc dépliable, le bloc ne soit pas correctement déplié. Essayez alors d’ajouter le style CSS suivant :

.blocs_destination { overflow: hidden; }

Blocs numérotés

Vous avez la possibilité d’ajouter un numéro à vos raccourcis, afin de mieux cibler l’apparence que vous pourriez donner à vos blocs dépliables. La numérotation des blocs est également fort utile pour créer des blocs imbriqués. En utilisant par exemple <bloc#2> (ou <invisible#2> ou <visible#2>), la classe « cs_bloc2 » sera ajoutée au bloc <div principal :

<bloc#2>
 Un titre qui deviendra cliquable
	    
 Le texte à cacher/montrer, après deux sauts de ligne...
</bloc#2>

Ce bloc <bloc#2> est construit comme ceci :

<div class="cs_blocs cs_bloc2">
<h4 class="blocs_titre blocs_replie">
<a href="#">un titre</a></h4>
<div class="blocs_invisible">le contenu</div>
</div>

Si l’on veut en modifier l’apparence, il suffit donc de déclarer un style perso comme ceci :

div.cs_bloc2>div {
	border:solid 2px;
}

div.cs_bloc2 h4.blocs_titre, div.cs_bloc2 h4.blocs_replie {
	background:transparent none;
}

Dans cet exemple, tous les <bloc#2> auront un cadre noir autour du contenu et seuls les titres de ces blocs h4 seront privés de leur petit triangle.

Petite précision : l’ancienne syntaxe <bloc2></bloc2> (sans le dièse) devient obsolète et doit être évitée car SPIP 2.0 considère désormais que cette notation est un modèle. Si vos rédacteurs ont utilisé cette notation, je crains qu’il faille corriger toutes les occurrences directement en base de données... Pour rechercher les fautifs, la syntaxe SQL à utiliser est par exemple : SELECT id_article FROM spip_articles WHERE texte REGEXP '</?bloc[[:digit:]]+>'. Pour effectuer les remplacements, alors essayez peut-être : UPDATE spip_articles SET texte = REPLACE(texte, 'bloc2>', 'bloc#2>') (je ne pense pas qu’on puisse utiliser les regexp avec un replace...)

Dans vos squelettes, la balise titre à utiliser est alors :
#BLOC_TITRE{un_numero} ou #BLOC_TITRE{un_numero, mon_URL} à la place de : #BLOC_TITRE ou #BLOC_TITRE{mon_URL}. Les classes générées sont les mêmes que précédemment. Exemples : #BLOC_TITRE{1} ou #BLOC_TITRE{#ID_ARTICLE}. Pour un bloc déplié (bloc dont le contenu est visible), utilisez alors la syntaxe #BLOC_TITRE{visible, un_numero, mon_URL}. L’ordre des arguments n’importe pas.

Balise <h4>

Puisque le titre du bloc est transformé en titre HTML (balise <h4> par défaut), il est bien entendu déconseillé de rédiger un bloc comme :

<bloc>
{{{Un intertitre à éviter !!}}}
	    
Ceci est une mauvaise syntaxe...</bloc>

De même, il est conseillé d’agir directement sur les styles, plutôt que de mettre un attribut en dur sur un titre de bloc. Exemple :

<bloc>
{{Un titre en gras}}
 	   
Le gras sur le titre est complètement inutile si vous avez défini ce style :
h4.blocs_titre {
	font-weight:bold;
}
</bloc>

Enfin, si le choix de la balise <h4> ne vous convient pas pour le titre cliquable de vos blocs, il suffit de la modifier sur la page d’administration du Couteau Suisse en indiquant h5, h6 ou h7, en fonction de vos CSS.... Si vous voulez utiliser la balise <h3> que SPIP utilise lui-même pour les intertitres (notation : {{{Mon intertitre}}}), alors le sommaire automatique prendra en compte vos titres de blocs.

L’attribut title du titre

Depuis la version 1.8.15.01 du plugin, le titre d’un bloc est automatiquement affublé d’un title par défaut : "Déplier" ou "Replier". La source brute du bloc ne possède pas de title, mais JavaScript s’en charge au chargement de la page en cherchant le dernier div de classe blocs_titre (cette classe est invisible par défaut). Si cette classe est trouvée, JavaScript en lit le contenu HTML qui doit contenir le séparateur « || » et modifie le title du titre du bloc en fonction de son état (déplié ou replié).

Exemple : <div class="blocs_title">Déplier||Replier</div>.

Personnalisation : dans le fichier mes_fonctions.php de votre squelette, créez la fonction blocs_title($titre='', $corps='', $num=''). Celle-ci doit renvoyer un tableau contenant le texte pour chaque état du bloc (déplié ou replié). Exemple :

function blocs_title($titre='', $corps='', $num='') {
	$titre = couper($titre, 30);
	return array("D&eacute;plier le bloc &laquo;$titre&raquo;", "Replier le bloc &laquo;$titre&raquo;");
}

Pour un bloc dans un squelette, il suffit d’ajouter la div.blocs_title décrite ci-dessus en clair :

#BLOC_TITRE #TITRE
#BLOC_RESUME #INTRODUCTION
#BLOC_DEBUT #TEXTE
<div class="blocs_title">Déplier mon bloc||Replier mon bloc</div>
#BLOC_FIN

Déplier un bloc au chargement de la page

Cela peux se faire directement en jQuery (code JavaScript à insérer dans votre squelette) en simulant un clic de souris.

Blocs classiques

La fonction eq(index) permet de choisir le bloc à déplier, sachant que la variable index commence à zéro. L’exemple suivant déplie le premier bloc de la page :

jQuery(document).ready(function() {
	jQuery('h4.blocs_titre').eq(0).click();
});

Dès la version de SPIP 2.0, utilisez plutôt la balise #BLOC_DEPLIER{index} que vous pouvez placer n’importe où dans la page. Exemple pour déplier le 5e bloc une fois la page chargée : #BLOC_DEPLIER{4}.

Blocs numérotés

Le code jQuery est plus facile : il suffit de repérer le sélecteur « div.cs_blocXX » où XX est le numéro du bloc. L’exemple suivant déplie le bloc #4 de la page :

jQuery(document).ready(function() {
	jQuery('div.cs_bloc4')
		.children('.blocs_titre').eq(0).click();
});

Dès la version de SPIP 2.0, utilisez plutôt la balise #BLOC_DEPLIER_NUM{index} que vous pouvez placer n’importe où dans la page. Exemple pour déplier le bloc #4 une fois la page chargée : #BLOC_DEPLIER_NUM{4}.

Ancre et paramètres d’URL

Le but ici est de faciliter les dépliages/repliages de blocs par URL. Pour déplier plusieurs blocs, il faut lister leur identifiant séparés par une virgule. Voici la syntaxe à utiliser pour vos liens (NN, XX, YY et ZZ sont les identifiants numériques de vos blocs) :

  • Blocs numérotés : &deplier_num=NN ou &deplier_num=XX,YY,ZZ
  • Blocs simples : &deplier=NN ou &deplier=XX,YY,ZZ

Attention, les blocs non numérotés sont repérés à partir de zéro : 0 = 1er bloc, 1 = 2e bloc, etc. Ce chiffrage inclus tous les blocs de la page finale, y compris les blocs numérotés éventuels.

Les ancres#deplierNN et #deplier_numNN fonctionnent aussi, mais seuls les blocs numérotés ont un id pour l’instant et provoqueront un défilement de la page jusqu’au bloc voulu... Il est en effet plus prudent d’ancrer des blocs numérotés, histoire d’éviter toute erreur en cas de modification du contenu de la page.

Variable JS

Dès que la page est chargée, le plugin consulte deux variables JavaScript pour savoir qu’il faut ouvrir un bloc ou non. En fonction des besoins, cette variable peut donc être initialisée (avant l’appel des scripts du Couteau suisse) de cette façon :

	// déplier le 2e bloc non numéroté :
	var bloc_actif = 1; 
	// déplier le bloc numéroté #2 :
	var bloc_actif_num = 2; 

Si l’URL de la page comporte un paramètre sur les blocs (voir paragraphe précédent), alors ces variables (dans la catégorie concernée) seront ignorées.

Pagination à l’intérieur d’un bloc

Pour être sûr que le bloc contenant une pagination s’ouvre automatiquement au rechargement de la page, il vous faut d’abord numéroter vos blocs en utilisant pour le titre le même numéro que celui de la pagination.

Par exemple : #BLOC_TITRE{#ID_ARTICLE} pour un critère de pagination comme celui-ci : {pagination 5 #ID_ARTICLE}.
Vous pouvez aussi remplacer l’exemple #ID_ARTICLE par #COMPTEUR_BOUCLE, #_NomDeMaBoucle:COMPTEUR_BOUCLE, ou tout autre numéro.

Enfin, insérez simplement dans votre page le code Javascript suivant [1] :

jQuery(document).ready(function() {
  if(blocs_pagination) {
    jQuery('div.cs_bloc' + blocs_pagination 
       + ' .blocs_titre').eq(0).click();
    window.location.hash = '#pagination' + blocs_pagination;
  }
});

La variable blocs_pagination est automatiquement calculée par le plugin. Elle représente le numéro de la pagination appelée (ce numéro est présent dans l’ancre de l’URL).
Exemple : « 11 » si l’url contient l’ancre « #pagination11 ».

Impression

Dans votre navigateur, ajouter à l’adresse d’une page le paramètre « cs=print » force le Couteau Suisse à déplier les blocs en vue d’une impression. 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.

Autre méthode (astuce de Commetou) : Javascript. « Si on veut faire un bouton imprimer (sans passer par une page intermédiaire) avec la commande onclick="window.print(); return false;" sur un lien, il faut modifier [2] la CSS d’impression avec le code div.cs_blocs div.blocs_invisible{display: block;} pour que les blocs soient ouverts. »

Zoom sur vos squelettes...

Les balises #BLOC_TITRE, #BLOC_RESUME, #BLOC_DEBUT et #BLOC_FIN ne font qu’envelopper vos blocs à l’aide de trois balises HTML : <div>, <h4> et <a>.

Allez, un exemple vaut mieux qu’un long discours. Voici comment le plugin transforme :

	#BLOC_TITRE Un dépliage simple sans résumé
	#BLOC_DEBUT COUCOU !!
	#BLOC_FIN

	#BLOC_TITRE Un dépliage simple avec résumé
	#BLOC_RESUME Un résumé...
	#BLOC_DEBUT COUCOU !!
	#BLOC_FIN

en :

	<div class="cs_blocs"><h4 class="blocs_titre blocs_replie "><a href="javascript:;"> Un dépliage simple sans résumé
	</a></h4><div class="blocs_invisible blocs_destination"> COUCOU !!
	</div></div>

	<div class="cs_blocs"><h4 class="blocs_titre blocs_replie "><a href="javascript:;"> Un dépliage simple avec résumé
	</a></h4><div class="blocs_resume"> Un résumé...
	</div><div class="blocs_invisible blocs_destination"> COUCOU !!
	</div></div>

Notez que les retours à la ligne sont respectés.

Donc, attention à votre syntaxe HTML !

Il faut veiller à ce que les blocs entre les différentes balises #BLOC (#BLOC_TITRE et #BLOC_DEBUT, puis entre #BLOC_DEBUT et #BLOC_FIN par exemple) soient corrects dans leur syntaxe HTML : pas de balise ouverte non fermée ou fermée et non ouverte.
-  Exemple incorrect : <b>#BLOC_TITRE[(#DATE|annee)]</b>
-  Exemple correct : #BLOC_TITRE<b>[(#DATE|annee)]</b>

Étant donné que le plugin place entre <h4><a> et </a></h4> tout ce qui se trouve entre #BLOC_TITRE et #BLOC_DEBUT, n’y placez pas des liens ou des balises block (<hX>, <p> ou <div>). Les balises inline (comme <span>) en revanche sont permises. En cas de doute référez-vous à la syntaxe HTML des balises imbriquées.
-  Exemple incorrect : #BLOC_TITRE{#ID_RUBRIQUE}<a href="#URL_RUBRIQUE">#TITRE</a>#BLOC_DEBUT
-  Exemple correct : #BLOC_TITRE{#ID_RUBRIQUE}#TITRE#BLOC_DEBUT

De même, au sein de vos articles, ne mettez pas de liens dans le titre du bloc, et surtout par d’intertitre non plus.

Voici un exemple de tri des articles par date, utilisant les listes <ul><li> :

<B1><ul>
<BOUCLE1(ARTICLES){par date}{inverse}{fusion YEAR(date)}>
  <li>#BLOC_TITRE<b class="texte">[(#DATE|annee)]</b>
  <B2>
     #BLOC_DEBUT<ul>
     <BOUCLE2(ARTICLES){annee_relatif}{par date}{inverse}{lang_select=non}{fusion MONTH(date)}>
     <li>#BLOC_TITRE<small>[(#DATE|nom_mois)]</small>
     <B3>
        #BLOC_DEBUT<ul>
        <BOUCLE3(ARTICLES){mois_relatif}{par date}{inverse}>

           <li><small><a href="#URL_ARTICLE">#TITRE</a></small></li>
        </BOUCLE3>
        </ul>#BLOC_FIN
     </B3>
     </BOUCLE2>
     </ul>#BLOC_FIN
  </B2></li>
</BOUCLE1></ul>
</B1>

Voici un exemple listant les brèves dans un bloc avec une pagination :

<B_breves><ul><li>
#BLOC_TITRE
Les Br&egrave;ves du site !
#BLOC_DEBUT
	#ANCRE_PAGINATION
	[<p class="pagination">(#PAGINATION)</p>]
	<ul>
		<BOUCLE_breves(BREVES){tous}{par date}{inverse}{pagination 5}>
			<li>
			<divclass="titredebreve">#TITRE ([(#DATE|affdate_court)])</div>
			[<div class="textedebreve">(#TEXTE)</div>]
			</li>
		</BOUCLE_breves>
	</ul>
	[<p class="pagination">(#PAGINATION)</p>]
#BLOC_FIN</li></ul>
</B_breves>

Voici un exemple de blocs imbriqués [3] :

<B_rubriques>
   <ul>
      <BOUCLE_rubriques(RUBRIQUES) {id_parent} {par titre}>
          <li>
              #BLOC_TITRE{#ID_RUBRIQUE}
              [(#TITRE|supprimer_numero)]
              #BLOC_DEBUT
              <B_articles2>
                  <ul>
                      <BOUCLE_articles2(ARTICLES) {id_rubrique} {par titre}>
                          [<li><a href="#URL_ARTICLE">(#TITRE|supprimer_numero)</a></li>]
                      </BOUCLE_articles2>
                  </ul>
              </B_articles2>
              <BOUCLE_sous_rubriques(BOUCLE_rubriques)>
              </BOUCLE_sous_rubriques>
              #BLOC_FIN
          </li>
       </BOUCLE_rubriques>
   </ul>
</B_rubriques>

Lien cliquable permettant de replier le bloc par l’intérieur

Par défaut, le plugin possède une fonction jQuery qui prendra automatiquement en compte un « lien de repliage » placé dans un bloc déplié, c’est à dire : entre les balises #BLOC_DEBUT et #BLOC_FIN. Ce lien doit être affublé de la classe replier_bloc. Exemple :

#BLOC_TITRE #TITRE
#BLOC_DEBUT #TEXTE
<a href="javascript:;" class="replier_bloc">[Replier l'article]</a>
#BLOC_FIN

Utilisation de la Balise #INTRODUCTION

Cet outil du Couteau Suisse vous permet de paramétrer la balise SPIP #INTRODUCTION et la doter par exemple de points de suite cliquables. Si par hasard vous désirez que ces points de suite produisent l’ouverture du bloc, alors voici comment faire.

Si les points de suite cliquables sont bien activés et que, dans votre squelette, votre bloc dépliable ressemble à :

	<BOUCLE_art(ARTICLES)>
		#BLOC_TITRE #TITRE
		#BLOC_RESUME #INTRODUCTION
		#BLOC_DEBUT #TEXTE
		#BLOC_FIN
	</BOUCLE_art>

... alors le code code JavaScript à insérer dans la page, ou dans le header de votre squelette APRÈS les appels du Couteau Suisse est :

jQuery(document).ready(function(){
	jQuery('.blocs_resume a.pts_suite')
	  .click( function(){
		jQuery(this).parents('.cs_blocs:first').children('.blocs_titre')
			.blocs_replie_tout().blocs_toggle();
		// annulation du clic
		return false;
		});
});

Déplier un bloc éloigné de son titre

Depuis la version 1.8.10.11 du Couteau Suisse, il est possible de déplier un bloc à distance. Le titre cliquable du bloc et son contenu peuvent être éloigné dans la page et placés où vous voulez de façon totalement indépendante, à conditions :
-  d’ouvrir et fermer vos blocs grâce aux couples de balises #BLOC_TITRE_DEBUT/#BLOC_TITRE_FIN (enfermant le futur bouton de dépliage/repliage du bloc) et #BLOC_DEBUT/#BLOC_FIN (enfermant le contenu dépliable/repliable du bouton associé)
-  de choisir un identifiant unique à préciser obligatoirement aux balises #BLOC_TITRE_DEBUT{identifiant_unique} et #BLOC_DEBUT{identifiant_unique} qui permet d’associer le bouton de dépliage/repliage (titre cliquable) à son contenu. Cet identifiant doit être le premier argument de la balise.

Un deuxième argument ’visible’ ou ’invisible’ est autorisé. Il permet de choisir l’état du bloc au démarrage de la page.

Par exemple :

#BLOC_TITRE_DEBUT{toto}
	Bouton pour un bloc éloigné invisible
#BLOC_TITRE_FIN
<p>Allez, un peu de texte, histoire de mettre de la distance... Voyez que le bouton du bloc 'toto' est construit avant son contenu replié que voici :</p>
#BLOC_DEBUT{toto}
	UN COUCOU ELOIGNE !!
#BLOC_FIN

#BLOC_DEBUT{titi,visible}
	UN COUCOU ELOIGNE !!
#BLOC_FIN
<p>Allez, un peu de texte, histoire de mettre de la distance... Voyez que le contenu déplié du bloc 'titi' est constuit avant son titre cliquable que voici :</p>
#BLOC_TITRE_DEBUT{titi,visible}
	Bouton pour un bloc éloigné visible
#BLOC_TITRE_FIN

Attention toutefois à ne pas oublier de changer d’identifiant à chaque tour si vous placez un bloc dépliable à distance à l’intérieur d’une boucle. Si votre identifiant est fixe, alors tous les blocs produits par la boucle s’ouvriraient et se fermeraient ensemble... La balise #COMPTEUR_BOUCLE est ici indispensable :

 <B1><ul>
<BOUCLE1(ARTICLES)>
 <li>
#BLOC_TITRE_DEBUT{toto#COMPTEUR_BOUCLE}
       #COMPTEUR_BOUCLE. #TITRE
#BLOC_TITRE_FIN
blablabla 
 #BLOC_DEBUT{toto#COMPTEUR_BOUCLE}
       #INTRODUCTION
 #BLOC_FIN
</li>
</BOUCL1></ul>
</B1>

Court-circuiter les réglages généraux

Dans une page particulière, pour ignorer le paramétrage général « Un seul bloc ouvert sur la page » [4], placez dans votre page la balise #BLOC_UNIQUE avec l’argument qui correspond à cette page.
-  Syntaxe pour n’avoir qu’un seul bloc ouvert à la fois sur la page : #BLOC_UNIQUE, #BLOC_UNIQUE{oui}, #BLOC_UNIQUE{1}
-  Syntaxe pour permettre au visiteur d’ouvrir plusieurs blocs à la fois sur la page (réglage général par défaut) : #BLOC_UNIQUE{non}, #BLOC_UNIQUE{0}, #BLOC_UNIQUE{-1}

Bien entendu, si vous placez dans la même page la balise #BLOC_UNIQUE{oui} et plusieurs balises valides #BLOC_DEPLIER (ou #BLOC_DEPLIER_NUM), seule la dernière de ces dernières sera prise en compte !

Ouvrir un bloc contenant un formulaire

Si vous décidez de mettre un formulaire SVT dans un bloc, alors il sera nécessaire d’ouvrir le bloc au chargement de la page au cas où le formulaire renvoie une erreur de saisie.

Voici une petite commande JS qui veillera à ouvrir automatiquement un bloc contenant une erreur :

jQuery(document).ready(function() {
  jQuery('.cs_blocs').has('.erreur_message')
    .find('.blocs_titre.blocs_replie').blocs_toggle();
});

Notes

[1dans le corps de votre page ou dans le header APRÈS les appels du Couteau Suisse

[2NDLR : en la surchargeant dans votre squelette

[3Utile pour le plan d’un site par exemple

[4paramètre que vous pourrez trouver sur la page d’administration du Couteau Suisse après avoir sélectionné l’outil « Blocs Dépliables »

Discussion

146 discussions

  • 4

    Hello,

    J’utilise des blocs dépliables pour y loger des Brèves. J’en mets 2 avant #BLOC_TITRE. Quand le visiteur clique sur « Plus de brèves » il a les 3 suivantes qui sont dans #BLOC_DEBUT. Tout fonctionne bien, sauf... quand il n’y a pas au moins 3 brèves à disposition (selon un critère). Dans ce cas, il n’y a rien dans #BLOC_DEBUT et la mise en page se casse la gueule à partir de cet endroit !

    Voici un extrait du code source généré (dans n’importe quel browser) :

    <div class="brevetitre">19.02.2008 
    						••• <a title= "Lien permanent" href="spip.php?breve5">Petite nouvelle</a> •••  
    						</div>
    						<div class="brevetext"><p>Texte de la brève. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Curabitur porta enim non magna. Etiam fermentum. Aliquam erat volutpat. Vivamus placerat sem quis nibh. Pellentesque justo arcu, cursus quis, imperdiet nec, laoreet sit amet, quam. In mi. Integer pharetra nulla sagittis nunc. Aenean fermentum consectetuer justo
    
    (<a title="lire la suite - commentaires" href='spip.php?breve5'>...</a>)</p></div>
    						
    						<br>
    						<div class="cs_blocs"><h4 class="blocs_titre blocs_replie"><a href="#">
    						
    						<div class="plusbreve">						
    						Plus de brèves
    						</div>
    					
    						</a></h4><div class="blocs_invisible">

    Evidemment, quand il n’y a aucune brève, c’est encore pire !

    Est-ce qu’il y a un espoir que cela puisse marcher ?

    • Michel

      donc c’est un pb de squelettes.

      Tu pourrais poster ton squelette ?

      en fait, il faut prévoir le cas ou il y a « moins de n » brèves pour que le squelette ne génère PAS #BLOC_DEBUT et #BLOC_FIN (je pense.....) je peux essayer mais montre le squelette pour ne pas partir dans tous les sens....

    • Volontiers, voici le squelette :

      <div class="breves">
      
      					<B_breves>
      					 <h2>Brèves</h2>
      					<br>
      						<BOUCLE_breves(BREVES) {id_rubrique}{par date}{inverse} {0,2}>
      						<div class="brevetitre">[(#DATE|jour)].[(#DATE|mois)].[(#DATE|annee)] 
      						••• <a title= "Lien permanent" href="#URL_BREVE">#TITRE*</a> •••  
      						</div>
      						[<div class="brevetext"><p>(#TEXTE*|liens_ouvrants|substr{0,400}|propre|PtoBR)(<a title="lire la suite - commentaires" href='#URL_BREVE'>...</a>)</p></div>]
      						</BOUCLE_breves>
      						<br>
      						#BLOC_TITRE
      						
      						<div class="plusbreve">						
      						Plus de brèves
      						</div>
      						
      						</B_breves>	
      											
      						#BLOC_DEBUT		
      						<div class="blocsDaube">
      						<BOUCLE_brevesautres(BREVES) {id_rubrique}{par date}{inverse} {2,5}>
      						
      						<div class="brevetitre">[(#DATE|jour)].[(#DATE|mois)].[(#DATE|annee)] 
      						••• <a title= "Lien permanent" href="#URL_BREVE">#TITRE*</a> •••
      						</div>
      						[<div class="brevetext"><p>(#TEXTE*|liens_ouvrants|substr{0,400}|propre|PtoBR)(<a title="lire la suite - commentaires" href='#URL_BREVE'>...</a>)</p></div>]
      						</BOUCLE_brevesautres>												
      						<div class="brevetitre">
      						<a href="#URL_PAGE{brevestout}">Toutes les brèves</a>...
      						<br><br>
      						</div>	</div>
      						#BLOC_FIN	
      						
      						</B_brevesautres>
      						
      				</div>

      (J’ai mis PtoBR pour ne pas avoir les p class=« spip ». Mais j’ai du rajouter <p></p> aux bons endroits .)

    • Michel

      je te propose de mettre un a cet endroit la, de façon à ce que le BLOC_TITRE ne vienne si et seulement si il y a vraiment des breves autres...

      <div class="breves">
      
                  <B_breves>
                                               <h2>Brèves</h2>
                                              <br>
                  <BOUCLE_breves(BREVES) {id_rubrique}{par date}{inverse} {0,2}>
                                            .........
                   </BOUCLE_breves>
      
      		<B_brevesautres>
                                             <br>
                                              #BLOC_TITRE        
                                                      <div class="plusbreve">                                               
                                                      Plus de brèves
                                                      </div>
                                                                                             
                                                      #BLOC_DEBUT               
                                                      <div class="blocsDaube">
                                                      <BOUCLE_brevesautres(BREVES) {id_rubrique}{par date}{inverse} {2,5}>
                                               .......
                                                      </BOUCLE_brevesautres>                                                                                               
                                                      
      <div class="brevetitre">
                                                      <a href="#URL_PAGE{brevestout}">Toutes les brèves</a>...
                                                      <br><br>
                                                      </div>        </div>
                                                      #BLOC_FIN       
                                                     
                                                      </B_brevesautres>
                                                     
                                      </div>
    • Ça marche très bien. Et cela même s’il n’y a pas de brève du tout. Grand merci !

      (En fait, quand je vois la simplicité de la solution, je suis un peu penaud... Je ne suis pas très bon pour développer des boucles compliquées et je pensais que ce serait le cas pour ce problème. Alors qu’il suffisait juste de répartir la matière autrement dans les 2 boucles !)

      Cordialement
      Béat

    Répondre à ce message

  • 10

    Les blocs dépliables fonctionnent en partie privé par sur le site public.
    Je n’ai rien fait sur les squelettes.

    Vidé les caches, Installer 1.7.17.05, actualiser

    Rien n’y fait. ça marche en privé pas en public

    Site avec dist de SPIP 1.9.3 dev [11376]

    Merci de votre aide...

    • Bonjour
      je ne comprends pas l’allusion à l’espace privé.

      Il vous faut juste activer le couteau suisse et l’outil bloc dépliable. ensuite, dans votre article, mettre les raccourcis prévus.

      Avez-vous une url que j’aille voir ?

      vous pouvez voir ce que ca donne sur
      www.pscaledonie.org

    • Je rédige un article, j’utilise Titre 2 lignes d’espace Texte , je valide. Dans l’espace privé de spip, les blocs se déplient normalement. Lorsque je publie l’article, les blocs ne se déplient plus dans le site public.

      C’est plus clair ?

    • Je rédige un article, j’utilise <bloc> Titre 2 lignes d'espace Texte </bloc>, je valide. Dans l’espace privé de spip, les blocs se déplient normalement. Lorsque je publie l’article, les blocs ne se déplient plus dans le site public.

      C’est plus clair ?

    • C’est un peu plus clair en effet.....

      Ca serait idéal si j’avais un url meme public pour voir le code généré, comme demandé plus haut....

      A votre place je commencerait par vider le cache de spip et celui du navigateur.
      Ensuite, dans /tmp/ je virerai le dossier /tmp/couteau_suisse. Ensuite, je réactiverait le couteau suisse et les blocs dépliables. Ensuite, sur la page, j’irai m’assurer que jquery est bien chargé dans l’espace public. Enfin, je controlerait l’html généré.

      voila.. Chez moi ca marche sans souci, je vais toutefois recontroler, et notre collègue va surement jeter un oeil.

    • rcaron

      J’ai effectué toutes les manips. Même résultat.

      Par contre dans la console Firebug j’ai l’erreur suivante :

      useless setTimeout call (missing quotes around argument?)
      (no name)()spip.php (line 64)
      (no name)()spip.php (line 1074)
      (no name)()spip.php (line 1085)
      each([function(), function(), function(), 5 more...], function(), undefined)spip.php (line 333)
      ready()spip.php (line 1084)
      [Break on this error] jQuery(document).ready(function(){setTimeout(init_f.apply(document),200)});

      Je ne sais pas si ça peut aider...

      Merci

    • ca vient d’un autre plugin cela. SI J’AVAIS UNE URL ON PERDRAIT MOINS DE TEMPS

      -  desactiver tous les plugins sauf couteau suisse
      -  desactiver tous les outils du C suisse sauf les blocs
      -  virer tmp/couteau suisse
      -  vider le cache

      et c’est reparti...

      désolé

      MJ

    • J’avais le même souci jusqu’à ce que j’insère la balise #INSERT_HEAD dans ma page (grâce au Couteau Suisse d’ailleurs)… Depuis ça roule ;)

    • J’avais déjà activé cette fonction de couteau suisse. Mais ça ne marche toujours pas... Les blocs fonctionnent dans la partie rédacteur mais pas sur le site lui-même.

    • Utilises tu le plugin Crayon ?
      Si c’est le cas, cela rends les blocs non dépliables lorsque tu es loggué en partie privée et que tu as rendu les textes contenus entre ta balise bloctitre et blocdebut.

      Solution : Supprimer le #EDITparametre du css entre les deux balises #Bloctitre et #Blocdebut afin de ne plus rendre le crayon utilisable sur les titre de tes blocs,.

    • Problème résolu après mise à jour vers SPIP 1.9.3 dev [11727]

      Merci

    Répondre à ce message

  • 2

    Salut,
    je cherche actuellement a implémenter le comportement d’animation lors de l’apparition des blocs dans le plugin bloc dépliables du couteau suisse.

    Exemple ici :
    http://www.dynamicdrive.com/dynamicindex17/animatedcollapse.htm

    Existe t-il actuellement une solution a mon problème ?

    Si cela a déjà été fait je ne l’ai pas trouvé :(. SI j’y arrive je vous tiens au courant.

    • Les blocs fonctionnent à l’aide de classes css, donc sans effet prévu. Il faut chercher du côté de jQuery, utilisé par SPIP et par le Couteau Suisse : des fonctions toutes prêtes existent. A voir comment rester compatible avec le basculement résumé/contenu...

    • c’est possible mais ca exige de modifier le code dans blocs.js. Je n’ai pas le temps de m’y coller cette semaine, mais c’est une voie a explorer.

      Ca exigera de toute façon quelques lignes de javascript et/ou de jquery a la charge du webmestre, donc ca concernera moins de gens.

    Répondre à ce message

  • 5

    ah flute depuis la svn 500 c’est tout cassé

    • hmm, qui es-tu ? la der des der des version du CS ? caches vidés et CS recompilé ? Chez moi tout fonctionne...

    • sorry j’ai fait trop vite je n’ai pas vu que les champs identifiants étaient vides...
      depuis la 511 aujourd’hui j’ai des souçis jquery, menu accordeon et blocs depliés

    • Quels soucis ? le menu et les blocs ne sont peut-être pas compatibles... ds ce cas, fo trouver pkoi... viens sur IRC si tu vx : irc.freenode.net, salon #spip

    • tout est déplié, accordeon et blocs, thickbox aussi est planté. Firebug marque blocs_init.apply(this) ; mais j’y capte rien... je suis sur freenode

    • OK, pb réglé. Gare à SPIP SVN !!

      (... À éviter en production)

    Répondre à ce message

  • 6

    Depuis la mise à jour 1.7.17.04, les blocs dépliables ne fonctionnent plus chez moi.

    Une aide ?

    Merci

    • ah, on vient justement d’ajouter des fonctionnalités aux blocs. t’as bien recompilé de Couteau Suisse et vidé les caches ? t’as un lien public ?

    • Nouvelle mise à jour. Caches vidés.

      sous 1.9.2d les blocs ne se déplient pas
      Voir http://www.observatoire-de-la-langue.com/spip.php?article211

      J’ai la même erreur sous SPIP 1.9.3 dev [11376]

      Merci de votre aide. Je suis bloqué.

    • Bonjour,
      ca marche sans pb chez moi (site local)

      -  qu’es-ce qui ne marche pas ? Ajax (avec url) ou pas d’ajax ? Résumé (avec #BLOC_RESUME) ou pas de résumé ?

      As-tu fait mes manoeuvres magiques
      -  désactiver l’outil « bloc dépliables » dans la config du couteau suisse
      -  désactiver le plugin couteau suisse dans la gestion des plugins
      -  effacer le dossier « tmp/couteausuisse »

      -  réactiver le couteau suisse
      -  réactiver l’outil blocs dépliables

      Enfin, une url nous permettrait de t’aider mieux.

    • Ajax ou pas, je ne sais pas...
      Balises <bloc> et </bloc> insérées dans article.

      Manoeuvres magiques effectuées sans succès.

      url : http://www.observatoire-de-la-langue.com/spip.php?article211 voir « essai onglet »

      Merci

    • On avait fait un petit oubli de class... Tu tombes juste au mauvais moment, désolé ;-) Mais merci pour la remontée de bug, en principe c’est à présent corrigé.

    • Exact. Les blocs refonctionnent.

      Merci et bravo

    Répondre à ce message

  • 34

    Salut, super développement, ca donne un coté très dynamique aux pages.

    J’avais commencé de mon coté un truc beaucoup moins élégant, qui dépliait un article mais avec une grosse différence. L’article (le bloc « replié ») n’était pas chargé, mais se chargeait avec AJAX au moment où l’utilisateur dépliait le bloc . C’est sans intérêt pour les « petits » articles, mais bien sur passionnant pour les articles longs (une bonne page, voire plusieurs).
    Je serait content d’adapter (jquery fait ca très bien).
    Ou commencer pour pouvoir tripoter le code ? :-(

    Cordialement

    MJ

    • Ah oui, c’est une voie super intéressante. Les fichiers qui gèrent les blocs sont :

      -  outils/blocs.css.html (styles)
      -  outils/blocs.js (jquery)
      -  outils/blocs.php (outil « blocs dépliables »)
      -  outils/blocs_fonctions.php (balises)

      Il y a aussi la déclaration de l’outil, dans config_outils.php (ligne 775), les chaines de langue, dans lang/desc_fr.php (ligne 439) et bien sûr le présent article à compléter !

      N’hésite pas à nous tenir au courant de tes travaux.

    • nathbni

      Moi, ce que je cherche à faire, c’est utiliser ce code génial pour afficher les articles en 2 temps :

      1/ quand on accède à une rubrique, on affiche la liste des articles (avec titre ; date de publication ; nom de l’auteur et texte d’intro). Classique, quoi.

      2/ au clic sur l’un de ces items, on fait apparaitre l’intégralité de l’article.

      Sauf que, quand je déroule, je me retrouve avec le début de l’article écrit 2 fois... Comment faire pour remplacer le résumé du texte par son intégral ?

      Euh... Je ne sais pas si je suis très claire, là.

      J’ai vu un très beau script sur http://www.beseen-communication.com/spip.php?rubrique5

      Est-ce quelqu’un a une piste ? Merci d’avance !

    • Ton code est peut-être à revoir ? A l’intérieur d’une boucle ARTICLES, ce devrait ressembler, en gros, à :

      #BLOC_TITRE
      #TITRE
      #BLOC_DEBUT
      #TEXTE
      #BLOC_FIN
    • nathbni

      Merci pour ta réponse. J’ai regardé mais dans ce que tu proposes, je perds le résumé de l’article (les x premiers mots, quoi).
      Or, je voulais présenter le début de l’article dans un premier temps et, au clic, le remplacer par l’intégral (ce qui se fait en DHTML mais je crois qu’on n’a pas droit au javascript dans SPIP).

    • Je vois ce que tu dis. Il faudrait là directement programmer en jQuery la fonctionnalité que tu cherches, car les blocs dépliables du Couteau Suisse ne peuvent pas aujourd’hui déplier un bloc tout en faisant disparaitre un autre.

    • nathbni

      Ok, et bien je m’incline. Je ne peux pas m’empêcher d’en demander toujours plus ! Quand j’aurai la maîtrise de SPIP, je m’attaquerai à jQuery (non, je rigole ( :-D>
      En tout cas merci beaucoup. Je vais trouver une parade.

    • Salut, très intéressante l’option d’intégrer un load sur le click de ces blocs ! du nouveau ?

    • salut,
      j’arrive a faire marcher cela chez moi, mais je me sers
      -  d’un « modèle »
      -  et d’une balise.

      je ne sais pas comment publier ca dans le couteau suisse, que faut-til faire ? envoyer les fichiers modifiers ?

    • je pense que le coutelier va se manifester...

      en tout cas j’ai hâte d’essayer ça, pas sûr que celà s’adapte à mes besoins car j’ai déjà une pagination dans le bloc... tu peux m’envoyer le bidule ?
      tu as une url où on peut le voir en action ?

      merci pour le boulot

    • oui, je pense que c’est une bonne méthode. On pourrait implémenter un raccourci du genre <bloc|ajax=monbloc2> qui irait chercher le modèle monbloc.html, cliquable en ajax. SPIP 1.93 a déjà fait un pas en direction d’ajax...

      Pour les squelettes, pareil avec #BLOC_TITRE{monbloc2} par exemple...

    • pour l’instant je ne me suis pas plongé dans les racourcis. j’ai juste écrit une pseudo balise
      #BAJAX{xxx} qui fonctionne comme « modele », et le javascript.

      Dans le modele xxx on a 3 div consécutives
      -  une div pour le titre avec le href du fragment (actuellement, contient le titre de l’article)
      -  une div « résumé » (actuellement, contient le chapo ou l’introduction)
      -  une div « fragment ». (qui contiendra l’article complet)

      le jscript est activé quand on clique le titre et
      -  load en ajax le fragment référencé dans le href et le met dans la div fragment,
      -  masque la div « résumé »
      -  et montre la div fragment.

      C’est donc tout bête. Par contre c’est « sale » je ne sais pas ou poser le modèle (dans le couteau suisse ? dans les squelettes ? ....)
      je n’ai pas encore eu le temps de tester comme « raccourci » dans un article (mais ca pose des tas de pbs : si c’est un raccourci dans un article, quelle syntaxe pour le bloc résumé ? pour le fragment à loader ??? on laisse tout ca au modèle en lui passant l’id_article... ?)

      mes deux sous, pour l’instant ca n’est publiable qu’en modifiant le couteau suisse, je l’ai fait chez moi, c’est encore en test, mais comment le passer à la communauté sans « massacrer » le couteau suisse ?

    • le plus simple pour tester un truc c’est de faire une lame perso (doc ici) dans un premier temps. les modelès sont en général dans : modeles/. Le Couteau Suisse utilise aussi certains fonds dans : fonds/

    • Farpait la lame personnalisée à la volée. Pour publier il suffit donc d’envoyer :
      -  la config d’outil que voila

      add_outil( array(
      	'id' => 'bajax',
      	'categorie'	=> 'public',
      	'contrib' => 2583,
      	'jquery'	=> 'oui',
      ));

      -  plus la pseudo balise bajax que voici (dans bajax_fonctions.php)

      function balise_BAJAX($p) {
      
      	// Appeler la balise #MODELE{emb}{arguments}
      	
      	if (!function_exists($f = 'balise_modele'))
      		$f = 'balise_modele_dist';
      
      	return $f($p);
      }


      -  le javascript que voici (dans bajax.js)

      if (window.jQuery) jQuery(function(){
      	// clic sur un outil
      jQuery('h4.bajax_titre').click( 
      	function() {
      		jQuery(this).toggleClass('blocs_replie') /* marque la div pliée ou pas */
      		.next().toggleClass('blocs_invisible')	/* rend invisible la div "resume" */
      		.next().toggleClass('blocs_invisible') 	/* rend visible la div du fragment à charger */	      .load(jQuery(this).attr("href"))		/* charge le href pointé */
      		;
      		// annulation du clic
      		return false;
      	});
      });


      -  et enfin le « modèle » que voila (mon titre est « bloc.html »)

      <BOUCLE_a1(ARTICLES){id_article}>
      <h4 class="bajax_titre blocs_replie" href="#URL_SITE_SPIP/spip.php?page=fragment&id_article=#ID_ARTICLE" >[(#TITRE*)]</h4>
      <DIV class="">
      [<div class="contenu">(#CHAPO|couper{80})</div>]
      [<div class="contenu">(#TEXTE*|couper{100})</div>]
      </DIV>
      <DIV class="blocs_invisible ">
      	<img src="IMG/ajax-loader.gif" width="16" height="16">
      <DIV>
      </BOUCLE_a1>

      -  reste le « fragment » (fragment.html) qui remplit le bloc ajax, et le voici.

      #HTTP_HEADER{'Content-type: text/css'}
      <BOUCLE_acc(ARTICLES) {ID_article=#ENV{id_article}}>
      [<div class="chapo">(#CHAPO)</div>]
      [<div class="contenu">(#TEXTE)</div>]
      </BOUCLE_acc>

      Ca s’appelle dans les squelettes en faisant

      #BAJAX{bloc}

      Si on essaie de publier tout ca dans le couteau suisse,
      -  Ou pensez-vous qu’il faille placer le(les) modèles qui vont avec ? dans un sous-rep modeles du couteau suisse ?
      -  il faut une convention de nommage, des fichiers (bloc et fragment) genre bajax_fragment, bajax_blocs ?
      -  il faut une convention de nommage des styles css, genre bajax_titre (le reste est pompé honteusement des blocs repliables).

      Ca fait pas mal de taf encore.
      Reste encore le problème des raccourcis dans un texte d’article.
      le rédacteur a l’habitude d’écrire

      <bloc>
      Un titre qui deviendra cliquable
      
      Le texte à cacher/montrer, après deux sauts de ligne...
      </bloc>

      Il faudrait lui faire faire quelque chose comme

      <bajax>
      un titre cliquable
      
      le résumé
      
      l'adresse du fragment ajax?? ou du texte déja la ??? ou un numéro d'article ??
      </bajax>

      ou bien alors qq chose comme

      <bajax|modelemachin|id_article>
      Le titre
      
      Le texte qui disparaitra
      </bajax>

      donc petit pb de syntaxe et de conception que je n’arrive pas à traiter « intelligemment ». Si l’un de vous a une idée géniale....

    • Merci pour ce travail. QQ questions :
      -  Ne serait-ce pas plus judicieux d’étendre les blocs dépliables plutot que de créer une nouvelle lame ?
      -  Ne pourrait-on pas réunir les deux modèles en un seul avec, peut-être, un test sur #ENV ? Ce modèle renverrait soit la version résumée, soit la version complète...
      -  Comment gérer la petite flèche si un résumé est présent à la place du texte non déplié... L’as-tu gardée telle quelle ?
      -  Pour les articles, j’ai proposé plus haut la syntaxe <bloc|ajax=monbloc2> qui irait chercher l’unique modèle monbloc.html (peut-être ça serait mieux d’utiliser un fond en fait)
      -  Pour les balises, pareil : #BLOC_TITRE{monbloc2} ou carrément #BLOC_AJAX{monbloc2} à la place de #BLOC_DEBUT et #BLOC_FIN.
      -  Pour un résumé inline, on pourrait ajouter une balise facultative #BLOC_RESUME avec une utilisation du genre (sans ajax) :

      #BLOC_TITRE
      Mon titre
      #BLOC_RESUME
      Mon résumé qui disparait si on clique
      #BLOC_DEBUT
      Mon bloc dépliable
      #BLOC_FIN

      ou (avec ajax) :

      #BLOC_TITRE
      Mon titre
      #BLOC_RESUME
      Mon résumé qui disparait si on clique
      #BLOC_AJAX{monbloc2}
    • Très judicieux tout ca.
      -  étendre BLOC est effectivement plus logique que de créer encore un truc.
      -  Ta syntaxe est plus générale que la mienne, mais on peut encore la simplifier je pense genre

      #BLOC_TITRE{fragment} /* fragment si ajax, pas de fragment sinon */
      Mon titre
      #BLOC_RESUME           /* facultatif */
      Mon résumé qui disparait si on clique
      #BLOC_DEBUT
      Mon bloc dépliable        /* qui est aussi l'emplacement pour l'Ajax si le fragment est donné */
      #BLOC_FIN

      si {fragment} est présent, il faut charger l’ajax, sinon, pas la peine. Il faut juste décider si (fragment) fait disparaitre Mon bloc dépliable ou alors se met avant/après.

      -  Je n’ai pas du tout géré la pitite flèche (honte à moi...) Mais on peut la laisser telle quelle : replié=résumé, déplié=ajax.
      -  je ne comprends pas très bien la différence entre « modèle » et « fond »
      -  la syntaxe dans un article pourrait être :

      <bloc|ajax=fragment> 
      Un titre qui deviendra cliquable
      
      Le texte à cacher/montrer, après deux sauts de ligne.../* ou le résumé qui sera remplacé par le fragment si l'argument "ajax" est rempli */
      </bloc>

      je veux bien avec ton autorisation aller tripoter le javascript et les balises mais je suis un peu dépassé par les pipelines dans le texte des articles.... Et il faut encore que je finalise vraiment comment faire une lame perso du couteau suisse.
      -  reste un problème que je ne sais pas gérer (en ce moment c’est le boxon...) :

      Ou doit-on placer le « fragment » utilisé, dans le cadre d’une distribution avec le couteau suisse ? un dossier « modele » dans le couteau suisse ? parce que sinon, on va crouler sous les demandes « ou dois-je mettre le fichier ’bloc.html’ » (ca commence déjà…) et en plus çà ne sera pas du tout immédiat à distribuer en plugin......

      Je commence cet am (dimanche pour moi....)

      très intéressé par l"échange en tout cas.

    • J’ai l’impression qu’avec ta vision de la chose, on ne peut pas choisir le fichier html qui sera appelé par le hit ajax... Doit-on forcément le limiter à bloc.html ?

      Il faudrait sans doute se caler un peu sur les travaux de SPIP à propos des noisettes ajax (fond/ajax). On va donc rester sur l’idée des fonds. La notion des fragments a été abandonnée.

      Le code du Couteau Suisse est libre de manipulation grâce à SVN, avec toutes ces bonnes idées, n’hésite pas ;-)

      Pour le fichier (ou les fichiers ?) html, on pourrait proposer par défaut d’insérer le contenu d’un article dans le bloc appelé par ajax, ou pkoi pas d’une brève... Il faut trouver une façon générique de proposer la chose, quitte à ce que les utilisateurs fabriquent leurs propres fonds à l’image de ces exemples...

    • heu... me trompje ou n’est ce pas équivalent à ce devraient faire les liens ajaxés ? je dis devraient parce que je ne suis pas arrivé à les faire fonctionner, ça semble extrêmement simple d’utilisation pourtant, si quelqu’un a des infos je suis preneur

      http://www.spip.net/ecrire/?exec=articles&id_article=3753&bonjour=oui

    • Salut Pierre
      je ne connais rien aux liens ajaxés et ton lien est inutilisable pour moi :-(

      On a bien travaillé avec Patrice et toi je suppose. Je me penche dès que possible sur SVN pour essayer de publier ca dans le couteau suisse, mais la partie « bloc dépliable dans les articles » n’aura pas changé.

      a bientot

    • salut,

      rebravos et remille mercis à vous deux pour ce boulot de nuit, c’est vraiment un super lame, je vais m’en servir plus encore que du tire bouchon, c’est dire !!

      pour le lien je ne sais pourquoi le forum a mis un espace après le slash, c’est dans l’espace privé de spip.net, ajax à tous les étages, enfin presque, on monte pas encore aux liens ajaxés semble t-il...

      bon dimanche

    • SPIP corrige la typo française et met systématiquement un espace devant le point d’interrogation, c’est comme ça ! J’en profite donc pour dire que le Couteau Suisse empêche cette correction dans les liens comme ça : outil « Belles URLs »

      Dès que Michel aura commité son code, les blocs seront en effet ajaxables, et, cerise sur le gâteau, ajax ou non, un texte de résumé qui disparaît après le premier clic pourra être aussi ajouté.

      Nous adapterons la doc en conséquence. Michel, as-tu un compte ici ? Je peux te donner les droits pour retoucher l’article.

    • Voila c’est fait, merci de tester

      Normalement les blocs sont
      -  Ajaxables
      -  Avec résumé
      -  ou même sans résumé.

      Bonne utilisation

      Michel

    • Finalement, Michel a intégré le résumé pour les blocs dépliables dans les squelettes. Peut-être ça t’intéresse toujours. Ceci est précisé ci-dessus.

      A suivre bientôt pour l’intérieur des articles...

    • nathbni

      Merci et félicitations à tous les deux pour cet excellent travail que j’ai suivi pas à pas. Chapeau bas !

    • 17 avril. Je viens de télécharger la dernière version sur la zone (Revision : 20015).

      Sur Spip 1.9.3 SVN [11455], Ajax ne fonctionne pas.

      Quand je clique sur le lien, le bloc RESUME disparait mais le bloc DEBUT n’apparaît pas (visiblement, ça ne charge pas).

      J’utilise bien la balise #BLOC_TITREmon_URL. Si j’enlève mon_URL, tout est ok, mais sans ajax...

    • première chose à faire : réinitialiser le couteau dans l’espace privé (désactiver, réactiver), supprimer les dossier tmp/cache et tmp/couteau_suisse

      si le problème persiste c’est que tu as un un problème avec ton url

    • Je pense que ton url est fausse (le plus probable). si tu es sur firefox, télécharge et installe Firebug il te permettra de voir ce qui est chargé ou pas.

    • Pour recompiler le Couteau Suisse, il suffit simplement d’afficher/actualiser la page de config du plugin.

    • Effectivement, l’URL était mauvaise et tout fonctionne... C’est merveilleux.

      Cependant, si j’tuilise le bloc dépliable ajaxé dans une liste d’articles avec une pagination elle-même ajaxée, le bloc invisible ne se déplie pas quand je clique, mais mon navigateur ouvre une nouvelle page avec le contenu du bloc.

      Pour la pagination ajaxée, j’utilise les recommandations de l’article Ajax à tous les étages sur Spip.net.

      Si j’enlève ajax de la pagination, tout fonctionne à nouveau.

    • Si tu veux bien nous donner le code utilisé de ton squelette, on pourrait reproduire la chose de notre côté.

      Rappel : le code se note entre les balises <code> et </code>

    • Le problème est visible sur cette page de test (équivalente à une page sommaire basique). Pagination en ajax et blocs dépliables akaxés.

      http://fil.anamzer.net/?page=test_ajax

      Au premier accès, la pagination est donc à 0. En cliquant sur « résumé », le bloc se déplie correctement et l’appel sur la base se fait correctement.

      La pagination en ajax recharge normalement mais dès qu’on l’a utilisé, si on clique sur "résumé, le chargement se fait dans une autre page.

      La pagination est appelée par un « inclure » :

      <INCLURE{fond=noisettes/sommaire_articles}{ajax}>

      Dans la noisette « sommaire_articles », le code est le suivant :

      		<B_articles_recents>
      		<div class="menu articles">
      			[(#ANCRE_PAGINATION)]
      			<h2><:derniers_articles:></h2>
      			<ul>
      				<BOUCLE_articles_recents(ARTICLES) {par date_redac}{inverse} {pagination}>
      				<li class="hentry">
      					<h3 class="entry-title">
      						<BOUCLE_source(SYNDIC){id_syndic}>
      						<a href="#URL_SITE">[(#LOGO_SITE|left|image_reduire{70,70})]</a>
      						</BOUCLE_source>
      						<a href="#URL_ARTICLE" rel="bookmark">#TITRE</a>
      					</h3>
      					<small>
      					<p><abbr class="published"[ title="(#DATE|date_iso)"]>
      						<strong><BOUCLE_le_jour(RUBRIQUES){titre=#DATE_REDAC|affdate{"Y-m-d"}}><a href="#URL_RUBRIQUE"></BOUCLE_le_jour>[(#DATE_REDAC|affdate{"Y-m-d"}|=={[(#ENV{date}|affdate{"Y-m-d"})]}|?{Aujourd'hui &agrave; [(#DATE_REDAC|heures)] h [(#DATE_REDAC|minutes)],
      						[(#DATE_REDAC|affdate{"j"}|=={[(#EVAL{date('j')-1})]}|?{Hier,[(#DATE_REDAC|nom_jour)] [(#DATE_REDAC|affdate_jourcourt)]})]})]</a>.</strong> </abbr> <a href="?site[(#ID_SYNDIC)]">#NOM_SITE</a>
      					</p>
      					<B_mots><p><BOUCLE_mots(MOTS){id_article}{"|"}>
      					<a href="#URL_MOT" rel="bookmark">#TITRE</a>
      					</BOUCLE_mots></p></B_mots>
      					</small>
      					[(#INTRODUCTION|!={''}|?{
      					[(#BLOC_TITRE{?page=article_introduction&id_article=#ID_ARTICLE})]
      					R&eacute;sum&eacute;
      					#BLOC_DEBUT
      					#BLOC_FIN					
      					,''})]
      				</li>
      				</BOUCLE_articles_recents>
      			</ul>
      			[<p class="pagination">#GRAND_TOTAL articles | (#PAGINATION)</p>]
      		</div>
      		</B_articles_recents>

      Si je place ce même code dans ma page sommaire à la place de l’INCLURE, tout fonctionne bien (mais la pagination n’est plus ajaxée). Voir la page sommaire standard : http://fil.anamzer.net

    • Ce que je remarque, c’est que FF2 et IE6 fonctionnent bien au 1er chargement de la page. Les blocs ajax sont nickel (d’ailleurs, je viens d’optimiser un peu le fichier blocs.js).

      Ensuite, un clic sur la pagination ne permet plus d’afficher les blocs ajax cachés : normal, ces nouveaux blocs eux chargés par Ajax ne sont plus liés au clic de la souris... Il faudrait trouver le moyen de re-binder les nouveaux blocs ajax de la page après le clic de pagination pour que les nouveaux blocs soient de nouveau pris en compte...

      De façon plus générale, cette nouvelle fonctionnalité Ajax va aussi proser des pb à tous les outils basés sur jQuery(function(){bla bla}) comme les onglets ou autres...

      Suis-je clair ?

    • J’ai compris le problème mais je n’ai pas les compétences pour le résoudre. Je me passerai donc de la pagination en ajax pour l’instant... Et je suis les évolutions sur ce fil.

      P

    • C’est un problème de « rebind » comme dit patrice. J’ai eu le même pb avec les crayons : lorsque tu charges avec ajax un fragment, tout ce qui, dans le fragment, a besoin de jquery ou d’autres tricks javascript, doit être réinitialisé.

      La méthode « sale » consiste à mettre dans le fragment qui se charge un bout de script qui reappelle jquery. Pour les crayons, il faut faire qq chose comme


      cQuery(this).initcrayons() ;

      pour les blocs, on peut programmer une fonction du même genre, MAIS étant donné que c’est un pb général, il y a surement une solution générale ? sur le site de jquery ?

      Bon courage

      MJ

    • Je suis pas un expert en jQuery, mais faudrait trouver le moyen de re-binder un div loadé en Ajax... Le Couteau Suisse pourrait mettre en place un système pour l’ensemble de ses outils, mais là, il faudrait se creuser la tête pour trouver la solution...

      Un load() ne se propage-t-il pas qq part ? Ou peut-on placer des sentinelles sur les div.ajax (par exemple) informant le CS qu’un load a eu lieu ? On devrait sans doute en discuter sur une liste de spip afin d’ouvrir cette discussion à des spécialistes éventuels...

      D’ailleurs ce problème apparait aussi lorsqu’on modifie un article avec les crayons : les blocs du nouveau div ne sont plus dépliables, tout comme les onglets qui ne sont pas reconstruits, tout comme mailcrypt, etc., etc.

    Répondre à ce message

  • Bonjour,

    merci pour ce plugin très pratique. Il semblerait qu’il y ait une incompatibilité avec l’outil du couteau suisse « paragrapher » (avec SPIP 1.9.2d) :

    Si les 2 sont activés la fonction « supprimer numéro » du couteau suisse ne s’applique plus (pour tout le site, pas seulement dans les blocs dépliables).

    Lorsque j’enlève « paragrapher » les numéros sont bien invisibles.

    dd

    Répondre à ce message

  • 5
    Yanik Bourgeois

    Ces 2 Fonctions sont un régal.
    Mon soucis, c’est qu’avec une longue liste de blocs insérée dans des onglets, il arrive que çà déraille :
    -  Les onglets ne sont plus générés et
    -  Les blocs ne cachent que le premier paragraphe du texte encadré par les balises.

    -  Pas d’onglets imbriqués (article complet en 4 onglets)
    -  Pas de blocs imbriqués (une dizaine par page)

    Fiches de données et tableaux dans les blocs

    Par de code html traversant (autres qu’ onglets).
    Que dois-faire, ou ne pas faire ? (faire ou ne pas faire, c’est toujours faire < ;-)) )

    Passe pas sous IE6 (majorité de mes lecteurs ) Cà passe sous FF, pas essayé sous IE7.

    Je souhaite ardemment que çà marche parce que j’utilise beaucoup.

    Merci de votre aide

    • Un exemple public peut-être ? Parfois en passant des lignes, ça débloque certaines choses...

      Il faudrait que tu donnes un exemple (simplifié) de ce qui bloque, ça serait plus facile à débugguer.

    • Yanik Bourgeois

      Bonjour Pat et à tous,
      Merci pour cette réponse rapide.

      Un exemple,
      c’est Ici : http://aneg.aeroclub.free.fr/spip.php?article203

      c’est une copie de l’article, j’y ai joint le texte de l’article.

      J’utilise cette combinaison pour d’autres articles pour lesquels je n’ai pas de soucis. Ils comportent également les mêmes contenus :
      tableaux, données, images.

      Seule différence peut-être : les liens externes.

      Merci de votre aide

    • Merci pour toutes ces infos.

      Visiblement ta page génère des erreurs javascript qu’il conviendrait déjà de supprimer. IE6 (ligne 182 ?) et FF/Firebug (ligne 206) signalent le pb.

      Ton texte est pourtant bien interprété avec ma config, mais j’ai probablement moins de plugins. A toi de trouver le fautif...

      Sinon, je ne comprends pas pkoi tu sembles mettre un tiret à chacun de tes titres de bloc. je ne suis pas sûr que ce soit vraiment autorisé ...

    • Yanik Bourgeois

      Bonjour à tous et toutes,
      Aprés avoir supprimé toutes mises en formes par raccourcis typo des titres des blocs, tout est revenu dans l’ordre.
      Ces raccourcis étaient :

      -  Tirets de puces "- Titre"
      -  mise en gras du titre "{{Titre}}"
      -  Combinés "- {{Titre}}"

      Pour les erreurs javascvrip, elle sont étaient générées par le plugin Gis et/ Googlemaps_api.
      Merci encore pour votre aide, et ces supers outils.

    • pour les titres des blocs et des onglets, il ne faut pas mettre de mise en forme (tirets, gras ou autres...) il vaut mieux passer par les CSS, c’est bien mieux niveau compatibilité. tu peux repérer les classes en regardant le code source.

    Répondre à ce message

  • 5

    Hello,

    Ben chez moi ça marche pas :-(

    Le code source de ma page présente bien ce qui est prévu, à savoir quelque chose de ce type :

    <div class="cs_blocs"><h4 class="blocs_titre blocs_replie"><a href="#">un titre</a></h4><div class="blocs_invisible">le contenu</div></div>

    ... et ceci, que je construise le bloc dépliable dans la partie administrative ou dans un squelette. Tout espoir n’est donc pas perdu...

    Mais le problème c’est que la page affiche le bloc déplié et c’est tout. (Tout au plus, quand je clique sur le titre, la page se repositionne en haut, à cause du href=« # », je pense.)

    J’ai bien essayé de désactiver, un à un, tous les autres plugins, rien n’y fait. Je ne peux malheureusement pas vous envoyer sur un site, car je développe en interne sur MAMP.

    Spip version 1.9.2d - jquery par défaut (1.1) - Couteau suisse 1.7.17.00

    • jQuery par défaut, càd ? SPIP 1.92 n’a pas besoin du plugin jQuery. Il est possible qu’une erreur Javascript se soit produite. Avec Firefox/Firebug, vous pourrez trouver cette erreur.

      Si par hasard la balise #INSERT_HEAD manque dans le header du squelette, les blocs ne pourront pas non plus fonctionner.

    • « jQuery par défaut ». Je veux dire par là que je n’ai rien ajouté ou changé de ce qui est livré par défaut avec la 1.92. En me référant à ce qui est écrit plus haut dans cette page : « Cette librairie de fonctions Javascript a été complètement intégrée dans SPIP à partir de la version 1.92. »

      Pour être sûr que ce ne sont pas mes pages qui posent un problème, j’ai copié un squelette (rubrique.html) de la dist dans mon dossier squelettes et j’y ai juste ajouté mon petit bout de code avant le pied de page. Le résultat est le même, ça ne marche pas. (rubrique.html contient cette balise #INSERT_HEAD par le truchement de inc-head.)

      Voici mon code tout simple :

      #BLOC_TITRE
      Mon titre à cliquer
      #BLOC_DEBUT
      Mon bloc dépliable 
      <br>
      qui contient un peu de texte
      #BLOC_FIN

      J’ai d’autres scripts du Couteau suisse qui fonctionnent bien.
      Firebug ne me montre aucun erreur.

    • Merci de ces précisions. Aucune erreur, même au moment du clic ? réussis-tu à débugger le Javascript ? D’après ta description, jQuery ne parvient pas à lier le clic au dépliage. De plus, si tes blocs sont spontanément dépliés, c’est que Javascript ne les a pas repliés au chargement de la page. Il doit bien y avoir une raison simple. Question bête, mais as-tu bien activé le Javascript dans ton navigateur ? Le code source de la page te parait-il complet ? exempt d’erreurs ?

      tu peux m’envoyer par mail privé le code source de ta page si tu ne réussis toujours pas à résoudre ce pb.

    • Merci de ta peine ;-)
      Juste une question générale avant que j’aille me coucher (je continuerai demain...) : est il normal que tous les JS soient écrits dans la page ? Ça fait une sacrée tartine ! Quand je réalise de sites « normaux », je mets ces bibliothèques en externe.

    • non, dans les pages il ya peu de js. et puis c’est bien plus couteux pour un serveur de faire un hit spécial sur un fichier de quelques octets. les lames du couteau utilisant du js important le font dans un fichier à part (cf. les blocs).

    Répondre à ce message

  • 8

    Bonjour,
    Avant de me lancer, je voudrais savoir si vous pensez que ça peut s’adapter sans trop de circonvolutions aux forums, dont on verrait les titres, et déplierait le contenu.
    Sachant que ce serait bien aussi d’avoir la possibilité de déplier l’ensemble d’un fil ou l’ensemble de tous les forums si on veut.
    Merci beaucoup.

    • Je pense que ça peut s’adapter très facilement. Il faut juste quelques connaissances en jQuery et une juste programmation des boucles SPIP.

      La possible numérotation des blocs récemment ajoutée pour les articles (<bloc1>, <bloc2>, etc.) n’a pas été portée sur les balises pour squelettes, mais ça pourrait sans doute faciliter la programmation de ce que tu cherches... Je vais voir cela. Je n’ai aucune objection à faire évoluer cette lame du Couteau Suisse.

      Ce forum est là bien sûr pour trouver des solutions, et même si nous pouvons t’aider, une mise à disposition publique de tes trouvailles est la bienvenue !

      (H.S. : un grand bravo pour ton livre !)

    • J’ai commencé à tenter une adaptation, ça peut aller, voyez vous-même, en cliquant ici.
      Un problème : le style h4.blocs_titre ne prend pas la caractéristique padding:0pt 0pt 0pt 20px. Ce qui fait que l’espace nécessaire pour voir le triangle de dépliement/repliement n’existe pas. Impossible de comprendre pourquoi.
      Une idée ?

    • Tu n’utilises pas Firefox+Firebug ? On y vout tout de suite que tes h4 sont courcicuités par blog.css :

       h4, #conteneur #content h4 {
         /* blog.css (ligne 189) */
         (...)
         padding:0pt;
         (...)
      }

      Pour contrarier les priorités de style (ordre de déclaration) tu peux utiliser !important dans lipietz.net (ligne 86) :

      padding:0pt 0pt 0pt 20px !important;

    • Si tu es satisfaite du résultat et si tu veux, tu pourrais nous donner ton code SPIP afin que d’autres puisse en profiter. Ca illustrerait également bien l’utilisation des blocs dépliables.

    • Perline

      Oui, je pensais donner le code une fois que j’aurais réglé ces petits problèmes.
      En ce qui concerne les téléscopages, oui j’utilise firebug, mais c’est l’ordre des priorités des prises en compte des css que je n’arrive pas à comprendre, car je ne la maîtrise pas (comment les plugins, leurs css, et leurs css adaptées sont ordonnés ? J’ai tout essayé, je ne vois pas).
      De plus, le style ne devrait quand même pas ne pas considérer ce padding là, à cet endrot-là.
      Bref, je continue de ce côté.

    • Avec la modif que je t’ai suggérée, ça marche très bien, quel que soit l’ordre des priorités. C’est vrai que moi aussi, je m’y perds.

    • Perline

      Oui, certes, mais si je ne veux pas changer l’ensemble de mon style dans le css principal
       ?
      Même problème poru changer le triangle, j’ai tenté, j’ai mis dans squelettes/images, et ça marche pas. Au secours.....

    • Il suffit de cibler le h4 :

      h4.blocs_titre, h4.blocs_replie {
              padding:0pt 0pt 0pt 20px !important;
      }

      Quant au petit triangle, c’est celui de SPIP. Actuellement, il n’y a pas de surcharge prévue dans outils/blocs.css.html : il faudrait y changer le code et mettre #CHEMIN...

      Bon, si tu veux mettre tes triangles perso alors tu peux mettre :

      h4.blocs_titre {
      	background:transparent url(monchemin/triangle-bas.gif) no-repeat scroll left center !important;
      }
      
      h4.blocs_replie {
      	background:transparent url(monchemin/triangle.gif) no-repeat scroll left center !important;
      }

      Et si tu veux tout personnaliser, alors il t’es possible de surcharger directement le fichier plugins/couteau_suisse/outils/blocs.css.html en le recopiant/modifiant dans : squelettes/outils/blocs.css.html

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom