Menus

Créez enfin vos menus facilement !

Introduction

Lorsqu’on ne se sert pas du plugin ’Menus’, on est obligé de définir tous ses menus dans les squelettes, ce qui fait que l’administration du site n’a pas directement la main dessus, lorsqu’un changement est nécessaire, il faut en faire la demande à la personne en charge des squelettes.

De plus, lorsqu’on veut des liens statiques (un lien vers un article précis, ou vers une page précise, ou vers un site externe) il faut les écrire en dur dans le squelette du menu.

Le but du plugin ’Menus’ est donc de permettre de facilement élaborer des menus au moyen d’une interface conviviale, directement dans la partie privée.

Attention ! Ce plugin ne s’occupe pas de la manière dont seront affichés les menus. Il permet de les créer facilement et d’en générer le HTML.

Pour l’affichage, voyez avec votre thème ou des plugins spécifiques tels que Menu animé déroulant, Menu Déroulant 2, Menu Accordéon 2 ou Menu jQuery Superfish.

Installation

Comme n’importe quel plugin.

Création d’un menu

Le plugin ajoute un lien dans le bandeau de SPIP :

Capture d'écran de l'ffichage du plugin menu dans le menu de l'espace privé de SPIP.

La page liste tous vos menus, et vous propose d’en créer un nouveau :

D’abord vous devez identifier votre menu. Il faut lui donner un titre, ainsi qu’un mot-clé qui vous permettra de l’appeler facilement. En effet, vous ne pouvez pas prévoir à l’avance dans vos squelettes le numéro du menu. Grâce à ce mot-clé identifiant, vous n’avez donc pas à modifier vos squelettes à chaque fois. Vous pouvez également saisir une classe qui sera ajoutée au premier élément ul du menu généré. Ceci peut permettre d’activer la gestion de l’affichage par un plugin tiers.

Vous pouvez alors commencer à construire le menu en ajoutant des entrées :

Les différents types d’entrées

Les Menus sont fournis pour l’instant avec plus de dix types d’entrées qui permettent déjà de construire la plupart des menus facilement.

N’hésitez pas à en proposer d’autres !

Voici la description de quelques uns des types d’entrées disponibles :

-  Lien arbitraire : vous pouvez créer des liens vers ce que vous voulez en donnant une adresse et un titre.

-  Objet de SPIP : crée un lien vers n’importe quel objet éditorial de SPIP. Ça peut être un article, une rubrique ou n’importe quoi venant d’un plugin.

-  Liste dynamique de rubriques et d’articles : vous pouvez afficher les rubriques de SPIP, y compris de manière arborescente. Pour cela, il suffit de définir la rubrique dans laquelle il faut commencer la liste, le niveau maximum de sous-rubriques, les exclusions éventuelles, le type de tri... Vous pouvez aussi inclure les articles dans l’arborescence, limiter leur nombre, en gérer le tri...

Détails des options d’une entrée de menu : Liste ou arborescence de rubriques et d’articles (avec beaucoup d’options)

Modification des entrées

Lorsque vous avez déjà ajouté des choses, vous obtenez alors la liste des entrées sous cette forme :

Vous pouvez alors déplacer les entrées pour modifier leur ordre, les supprimer, changer leurs paramètres et créer des sous-menus en-dessous des entrées qui le permettent.

Utiliser les menus dans votre site

Pour afficher un menu dans votre site, il vous suffit d’inclure un petit squelette où vous le désirez :

#INCLURE{fond=inclure/menu, env, identifiant=<votre_menu>}

Vous pouvez aussi tester votre menu facilement en cliquant sur le bouton « Voir en ligne » ou en allant sur la page : spip.php?menu<numero>

Exporter les menus vers un autre site

Imaginons que sur une version de votre site en local vous réorganisez tous les menus. Pour reporter ces changements en prod, il faut exporter les menus dans un fichier et les réimporter en prod.

S’assurer tout d’abord que le plugin Yaml est activé .

Lorsqu’il est activé une icône apparaît : exporter ce menu

Le sauvegarder sur votre ordinateur

Sur le site de destination, il suffit de créer un nouveau menu avec le même identifiant (penser à le supprimer avant s’il existe). Et à la création, si le plugin YAML est bien activé, la boite de choix de fichier est proposée.

Surcharge des fichiers menus/<type>.html

Si pour des besoins particuliers, on doit surcharger un fichier du répertoire menus/, il ne faut pas oublier de copier le fichier XML de description qui va avec.

En effet, le plugin cherche le fichier XML au même endroit que le fichier HTML.

Discussion

354 discussions

  • 5

    Bonjour
    Merci pour ce super plugin que j’utilise depuis quelque temps déjà.
    Je viens de me rendre compte qu’un utilisateur qui se connecte (« Se connecter ») avec Internet Explorer, se retrouve dans l’interface privée alors qu’il n’avait pas l’intention d’y aller tout de suite.
    Connaissez vous un paramétrage ou une approche qui empêche cela ?

    Merci

    Jean-Michel
    PS
    I.E. c’est aussi les initiales d’Imprévisible Enclume.
    (Les Imprévisibles Enclumes sont la seconde chose que craignaient les gaulois, la première étant que le ciel leur tombe sur la tête)

    • Oui car comme l’indique le titre c’est « Se connecter, lien vers l’espace privé ». Il faudrait soit une autre entrée, soit une option de cette même entrée, qui amène vers une page de connexion en restant dans l’espace publique. Notamment pour permettre la connexion des comptes visiteurs.

    • Bonjour
      Je n’avais pas chargé la dernière version du plugin.
      Le fonctionnement est le même avec IE ou Firefox avec cette dernière version, et c’est le fonctionnement que je cherchais.
      C’est à dire :
      -  L’auteur clique sur « Se connecter » => Il rendre son identifiant => Il se retrouve en page d’accueil, coté public et peut naviguer suivant ses droits.
      -  Si l’auteur re-clique sur ce même item de menu, il se retrouve dans la partie privée et peut écrire suivant ses droits.

      Un grand merci pour votre travail.

    • Rastapopoulos : suite à ta remarque, création d’un nouvelle entrée pour une connexion sur l’espace public : http://zone.spip.org/trac/spip-zone/changeset/44360

      du coup je pense qu’il faudrait aussi une nouvelle entrée « liens vers l’espace privé si connecté »

    • Je crois que tu peux supprimer ce que tu viens d’envoyer Maieul : c’est DEJA ce que faisais la précédente entrée, comme le décrit le message précédent le tien.

      Ça envoie vers une connexion *publique* et c’est seulement une fois connectée que ça se transforme en lien vers l’espace privée. Donc ça fait déjà ce que tu dis !

    • oups, t’a raison, trop pressé. Je viens de supprimer mais j’ai rajouté sur l’ancienne entrée la possibilité d’avoir une url retour

    Répondre à ce message

  • 3

    Bonsoir à tous,

    Je voulais savoir si il était possible avec ce plugin d’exposer, en plus de l’article en cours, la rubrique parente en cours.

    Merci d’avance.
    Bonne soirée à tous.

    • Si on utilise un squelette Z (Zpip), c’est déjà le cas.

    • Bonjour,

      En fait, je me suis mal exprimé.
      Je ne veux pas mettre en évidence l’élément parent de l’élément en cours par rapport à la structure des rubriques et articles de SPIP.
      Mais mettre en évidence l’élément parent de l’élément en cours par rapport à la structure du plugin MENUS.

      Merci d’avance.

    • Ah oui ok j’ai compris ! Mais là tout de suite comme ça, je n’ai pas d’idée de comment faire. :(

    Répondre à ce message

  • 4

    Bonjour et bravo pour votre travail !
    Je suis sous Spip 2.1.8 avec zpip et menu. (débutant..)

    J’ai réalisé deux secteurs (Fr et En) et donc passé en paramètre au menu « secteur de langue », ce qui marche parfaitement, seules les sous rubriques sont affichées et non les rubriques-racines.

    Maintenant je voudrais que les ss-rubriques s’affichent selon leur numéro par ordre croissant dans le sens de la lecture.
    Le problème c’est que je ne sais pas quoi mettre dans « Critère de tri (numérique) [Facultatif] » pour que cela marche et tout ce que j’ai essayé donne une erreur type :

    Erreur SQL 1064
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS num, rand() AS hasard, rubriques.titre, rubriques.id_rubrique, rubriques.lang' 

    Dans un précédent post vous indiquez que ce n’est pas vous qui avez ajouté cette fonction...
    Mais savez-vous quel terme il faut mettre ou connaissez-vous le moyen de surmonter le problème ?
    Merci

    • Mais les rubriques s’affichent déjà selon leur numéro, par défaut.

      Dans les critères de tri, il faut mettre le nom du champ selon lequel on veut trier. Le champ numérique c’est celui qui va contenir les numéros (le titre à priori quand on fait "1. Mon titre / 2. Un autre / etc).

      Mais par défaut c’est déjà classé : {par num titre, titre}, c’est à dire par numéro des titres s’ils existent puis pas ordre alphabétique pour les titres ayant le même numéro.

    • Merci de cette réponse rapide,

      Donc le classement se fait par défaut d’abord par les numéros que l’on écrit éventuellement dans les titres, puis par leur ordre alphabétique... d’accord je comprends mieux.
      Mais alors je me suis mal exprimé, toutes mes confuses :

      Mes titres de rubriques ne contiennent pas de numéros et effectivement c’est par ordre alphabétique qu’elle se mettent mais je voudrais que le classement prenne en compte les numéros que spip assigne à chaque rubrique.
      Là où j’ai pour l’instant les rubriques 15, 14, 16 qui se suivent, je voudrais qu’elles se mettent en 14, 15, 16.
      Donc j’ai sans doute mal interprété le champ « Critère de tri (numérique) [Facultatif] », je pensais qu’il permettait un classement par numéro de rubrique..
      Y aurait-il un moyen malgré tout de les mettre en ordre croissant ?

      Merci encore

    • En essayant « id_rubrique » comme champ ?

    • Ben non, ça ne change rien... mais cette fois je n’ai pas de message d’erreur..

    Répondre à ce message

  • 3

    Depuis que j’ai mis spip à jours vers la version 2.1.6 lorsque je veux créer un menu spip m’affiche « Aucun type d’entrée n’a été trouvé. » que faire ?

    • Depuis que j’ai mis spip à jours vers la version 2.1.6 lorsque je veux créer un menu spip m’affiche « Aucun type d’entrée n’a été trouvé. »

      Chezmoiçamarche. :)

      que faire ?

      Donnez plus d’infos ?

    • Je vous joint une copie d’écran vous verrez par vous même
      Cordialement P.Courilleau

    • Cela fonctionnait en 2.1.5,
      de plugins/menus/memus/ sont accessibles en lecture il y a les fichier xml suivant dans /plugins/auto/menus/menus :

      acceuil.xml
      article_rubrique.xml
      deconnecter.xml
      espace_prive.xml
      groupe_mots.xml
      liens.xml
      mappage.xml
      mots.xml
      objet.xml
      page_spéciale.xml
      page_speciale_zajax.xml
      rubriques.xml
      secteurlangue.xml

      Cordialement P.Courilleau


      Message d’origine-----
      De : Matthieu Marcillaud [mailto:marcimatrezo.net] Envoyé : vendredi 7 janvier 2011 20:21 À : spip@rezo.net Cc : spip@rezo.net Objet : Re : [Spip] SOS ( plugins menus)

      On 07/01/2011 19:47, Pierrick Courilleau wrote :
      > Bonsoir, je suis d’espéré , je viens de mettre à jours spip vers la
      > versions 2.1.6 en réinstallant tous les plugins. Lorsque je veux créer
      > un menus spip menus me retourne le message d’erruer suivant : « Aucun
      > type d’entrée n’a été trouvé. » Que faire ?

      question 1 :
      -  est-ce que ça fonctionnait avant ?

      question 2 :
      -  les fichiers de plugins/menus/memus/ sont ils accessibles en lecture ?
      -  y a t’il des fichiers .xml dedans ?
      -  le dossier menus/menus est il accessible en lecture ?

      — 
      MM.


    Répondre à ce message

  • 1

    Bonjour,

    J’ai un site multilingue.

    Je souhaiterais créer 3 menus différents pour chaque langue du site, mais je ne sais pas comment les afficher selon la langue sélectionnée. Vous pouvez m’aider ?

    Merci d’avance !

    • Ah c’est amusant, je viens de faire ça ya pas longtemps. Je ne sais pas pour toi mais moi c’était pour la barre de navigation principale d’un squelette Z, donc la zone « barre-nav ». Mais peu importe le principe reste le même.

      La solution que j’ai choisi est la suivante :

      • par défaut on cherche le menu identifié barrenav
      • MAIS s’il existe un menu barrenav_#LANG il a la priorité !
      • ainsi on a toujours au moins un menu mais personnalisable par langue si besoin

      Voilà ce que j’ai mis dans le fichier inclure/barre-nav.html :

      #SET{identifiant, #VAL{barrenav_}|concat{#LANG}}
      <BOUCLE_menu_traduit(MENUS){identifiant=#GET{identifiant}}>
      	#SET{menu_traduit,oui}
      </BOUCLE_menu_traduit>
      
      <div class="menu-conteneur">
      [(#GET{menu_traduit}|oui)
      	#INCLURE{fond=inclure/menu, env, identifiant=#GET{identifiant}}
      ]
      [(#GET{menu_traduit}|non)
      	#INCLURE{fond=inclure/menu, env, identifiant=barrenav}
      ]
      </div>

      Comme à priori ça ne casse rien de l’existant, je pense même peut-être l’ajouter directement dans le plugin, chez tout le monde.

    Répondre à ce message

  • 8

    Bonjour,
    Tout d’abord je souhaites dire que ce plugin est génial pour gérer ses menus... simple et efficace...
    Toutefois j’aurai une question concernant la passage de paramètre.
    Voila j’ai plusieurs articles qui utilise la même mise en forme. Donc j’ai créé un fichier article particulier que j’utilise avec le plugin composant. Jusque là pas de soucis. Mais maintenant je souhaiterai faire passer un paramètre en plus dans l’adresse ex :
    http://127.0.0.1:8888/MonSite/spip.php?article19&amicale=1
    Pour le moment j’ai réussi à paramétrer grâce au plugin de gestion de menu mon article 19 mais je souhaiterai ajouter un paramètre en plus.
    Comment devrais je faire pour attendre mon but ?
    Je précise que j’utilise ensuite un script dynamique pour générer mon menu donc pas d’adresse en dur dans un fichier...
    Merci par avance

    • Ça n’existe pas pour l’instant. Il faudrait ajouter une option au type d’entrée, qui serait « paramètres supplémentaires ».

    • Ok merci RastaPopoulos
      J’ai regardé cette piste mais toutefois j’ai encore une question...Autant rajouter un paramètre en base est assez simple en se tablant sur le découpage des valeurs comme pour le type d’entrée page spéciale.
      Voici ce que j’ai rajouter dans la base à la mano au niveau de ma ligne concerné s:10 :« parametres » ;s:7 :« param=1 » ;
      Ce qui donne au final :
      a:4 :s:10 :« type_objet » ;s:7 :« article » ;s:8 :« id_objet » ;s:2 :« 19 » ;s:5 :« titre » ;s:6 :« mapage » ; s:10 :« parametres » ;s:7 :« param=1 » ;s:3 :« css » ;s:0 :« » ;

      Par contre le soucis c’est la restitution des infos...
      Voici ce que cela me retourne après avoir modifier les fichier objet.xml et objet.html dans le répertoire Menus :

      Warning: array_merge() [function.array-merge]: Argument #1 is not an array in C:\Program Files\EasyPHP-5.3.3.1\www\UDSP\ecrire\public\composer.php(49) : eval()'d code on line 88
      
      Warning: array_merge() [function.array-merge]: Argument #1 is not an array in C:\Program Files\EasyPHP-5.3.3.1\www\UDSP\ecrire\public\composer.php(49) : eval()'d code on line 100

      Voici les modifications que j’ai réalisé :

      [(#SET{titre, #ENV*{titre}|typo|sinon{#INFO_TITRE{#ENV{type_objet}, #ENV{id_objet}}}|sinon{<:info_sans_titre:>}})]
      
      [(#ENV{appel_formulaire}|oui)
      	<div class="titre">#GET{titre}</div>
      	<div class="infos">#ENV{type_objet}-#ENV{id_objet}</div>
      ]
      [(#ENV{appel_menu}|oui)
      	<li class="menu-entree[ (#ENV{css})][ (#ENV{id_objet}|menus_exposer{#ENV{type_objet},#ENV*{env}})]">
      		<a href="#INFO_URL{#ENV{type_objet}, #ENV{id_objet}, #ENV{parametres}}" title="[(#GET{titre}|attribut_html)]">#GET{titre}</a>
      ]

      et dans l’XML :

      <entree>
      	<nom><:menus:nom_menu_objet:></nom>
      	<rang>02</rang>
      	<description><:menus:description_menu_objet:></description>
      	<icone>images/menus_objet.png</icone>
      	<parametre nom="type_objet" label="menus:entree_type_objet" obligatoire="oui" />
      	<parametre nom="id_objet" label="menus:entree_id_objet" obligatoire="oui" />
      	<parametre nom="titre" label="menus:entree_titre" />
      	<parametre nom="parametres" label="menus:entree_parametres" />
      	<parametre nom="css" label="menus:entree_css" />
      </entree>

      Où dois je faire la modif, dans quel fichier, je dois aller pour pouvoir dans mon menu les paramètres pris en compte ?
      Merci par avance.

    • Que fait #ENV{parametres} dans la balise #INFO_URL ?

    • et bien en regardant la page spéciale je l’y ai vu alors je l’ai ajouter en pensant que cela concatènerai automatiquement....mais même sans cela ne fonctionne pas...

    • Euh non dans page spéciale les paramètres sont dans la balise #URL_PAGE, pas #INFO_URL, ce n’est pas la même balise.

    • ok alors comment peut on faire alors pour qu’il prenne en compte dans le #INFO_URL les paramètres s’il y en a ? quel fichier faut il modifier ?

    • Ben le truc con c’est de juste le coller à la fin. Évidemment ça t’oblige à mettre ou pas le «  ? » toi-même, suivant le type d’URL que tu as choisi. Pour pas se casser la tête, c’est le plus rapide.

    • J’ai trouvé un système pour palier à mon problème de manière simple et efficace pour moi lol
      j’ai modifier le fichier page_speciale.html dans le répertoire menu et j’y ai mis ceci

      <a href="spip.php?#ENV{nom}&#ENV{parametres}" title="[(#GET{titre}|attribut_html)]">#GET{titre}</a>

      Bien sur on peut ajouter un petit code en plus pour prendre en compte l’option par défaut qu’il existait

      Et niveau de mon menu j’ai mis un Lien vers un squelette page ou j’indique en variable :
      nom : articleXX
      Liste des paramètres : param=1

      Voila comment contourner à peu de frais ceci en attendant une éventuelle implémentation de cet option...
      PS : je n’y connais rien en SPIP...je le fais à la bonne franquette

    Répondre à ce message

  • 5
    tobiasBora

    Bonjour,
    j’ai une drôle d’erreur lorsque je vais dans « édition de menus » :

    Warning : Cannot modify header information - headers already sent by (output started at /var/www/legtux.org/users/mars/plugins/auto/ckeditor-spip-plugin/inc/toolbars.php:25) in /var/www/legtux.org/users/mars/ecrire/inc/actions.php on line 213

    C’est du à quoi ?

    Répondre à ce message

  • 1

    Bonjour et merci pour ce plugin,

    mais j’ai (depuis spip 2.1.6) :

    Table SQL « CONDITION » inconnue

    ../plugins/auto/menus/formulaires/inc-menus_entrees.html

    et

    Aucun type d'entrée n'a été trouvé.
    Mise à jour des plugins, nettoyage du cache, rè-installation, rien de mieux à l’ouest.

    Des directions à suivre ?

    AlainF

    Répondre à ce message

  • 5

    Bonjour,

    J’utilise ce plug-in et aimerais savoir où le modifier pour faire en sorte qu’il affiche par exemple une class=« on » sur un lien lorsque l’on se trouve sur la page du lien. Donc faire en sorte de rendre visuellement un lien actif, par exemple mettre en gras le lien du menu « accueil » si je suis sur la page d’accueil. Il y a peut-être une histoire avec « #EXPOSE » non ? comme avec le « inc-rubriques » ?

    Merci d’avance pour votre aide. (pour infos, je suis à l’aise avec html/css et comprends un peu le php, donc vous ne me parlerez pas chinois :))

    • C’est déjà le cas. Il y a une classe « on » sur le ou les éléments <li> correspondant à la page en cours.

    • Merci pour ta réponse RastaPopoulos, cela dit, je n’ai pas de class=« on » ni sur les

      , ni sur les actifs. J’ai juste une class=« menu-entree » sur tous les du menu.
      Il n’y a que moi dans ce cas ??
    • Hmm à ce que je vois dans le code du menu accueil la classe on n’est pas ajoutée au li si on utilise pas un squelette de type Z (pas de type et de composition dans l’env). C’est peut être le cas de pel, mais il ne nous le dit pas...

      ++

    • Merci b_b pour ta réponse. Non je ne le dis pas, mais on ne me l’a pas demandé non plus... Qu’appelles-tu un squelette de type Z ? Un squelette avec Zpip ? J’ai installé Zpip installé un thème pensant que c’était aussi simple que ceux d’autres CMS (Prestashop et WordPress, que j’utilise régulièrement). J’ai dû faire machine arrière car trop complexe et gourmand en temps pour personnaliser, donc je refais de A à Z les squelettes perso. Donc c’est peut-être çà qui foire ?! Je devrais peut-être refaire sur un SPIP tout neuf ?!
      Merci

    • Oui b_b a probablement raison, c’est fort possible que le #EXPOSE ne marche qu’avec un squelette Z. Moi je n’utilise que ça alors je n’ai jamais pu voir que ça ne marchait pas. :)

      Sinon pour le couple squelette Z / thème, il faudrait que tu précises ce qui est compliqué à modifier, car sinon soit on ne pourra pas t’aider à t’améliorer, soit on ne pourra pas améliorer le système lui-même pour que ce soit plus simple. Mais peut-être un autre forum est-il plus adapté, vu qu’on est sur le plugin Menus.

    Répondre à ce message

  • 2

    Heu,

    j’ai trouvé la solution à la question que je viens de poser

    [(#INCLURE{fond=inclure/menu, env, identifiant=menubas}|image_typo{police=riotsqua.ttf,taille=20,couleur=0163DB})]
    • Heu

      J’ai été trop enthousiaste. Il y a bien une image typo avec la police choisie mais le menu ne fonctionne pas du tout.

      C’est une seule image pour tout les items et elle n’est pas cliquable. C’est joli, mais cela ne sert à rien.

      Tristesse.

    • Le plugin ne gère pour l’instant pas les images car ce n’est pas possible de prévoir tous les cas que veulent les gens : certains veulent les images en dur avec <img/>, d’autres préfèrent en background CSS. Même problème pour ceux qui veulent utiliser les logos des objets. Donc en attendant une solution propre, ça ne le gère pas.

      En revanche, tu peux parfaitement surcharger les différents types d’entrées dans /menus/truc.html dans ton squelette à toi, selon le principe général des surcharges dans SPIP. Donc dans ton squelette tu crées un dossier « menus » et dedans tu copies-colles les types d’entrées que tu veux utiliser et tu les bidouilles.

    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