Cette contribution peut être rapprochée de Afficher les définitions de mots clefs à l’intérieur du texte. Sauf qu’elle laisse aux rédactrices de placer manuellement des raccourcis vers les mots-clés ad hoc dans leur texte et qu’elle ne demande l’installation d’aucun plugin.
1. Des définitions de mots-clés au survol d’une puce dans le texte
Exemple : Analyse d’une séquence de Matrix
L’effet recherché ici est le suivant :
- une puce apparaît là où le rédacteur a placé le raccourci <mot15>
(a priori, juste après le mot à définir) [1], où 15 est le numéro du mot bien sûr [2].
- Lorsque le visiteur survole la puce, la définition du mot apparaît dans la colonne de gauche, par dessus les autres contenus (ça, c’est défini par une feuille de styles .css et donc, modifiable à souhait).
- S’il clique sur le lien, il est redirigé sur la page du mot (ex. spip.php?mot15
). Ici aussi, on peut choisir de l’orienter ailleurs.
Pour que le modèle s’applique, nous devons créer un squelette mot.html
et le placer dans un sous-dossier de notre dossier de squelettes nommé modeles/
. En général, on aura donc /squelettes/modeles/mot.html
:
<BOUCLE_mot(MOTS){id_mot}>
[<a name="mot#ID_MOT" href="#URL_MOT" class="glossaire">
<sup><img src="[(#CHEMIN{puce_mot.png})]" width="11" height="11" alt=" (lire la définition)" /></sup>
<span class="dl">
[<span class="dt">(#TITRE)</span>]
<span class="dd">(#DESCRIPTIF|sinon{#TEXTE})</span>
</span>
</a>]
</BOUCLE_mot>
Notez que rien ne s’affiche si le mot-clé n’a ni descriptif, ni texte (voir les crochets de part et d’autre de <a>
).
L’effet de survol est obtenu grâce aux propriétés css display
:
a.glossaire span.dl, a.glossaire span.dt, a.glossaire span.dd {
display: none;
}
a.glossaire:hover span.dl, a.glossaire:hover span.dt, a.glossaire:hover span.dd {
display: block;
}
a.glossaire:hover span.dl {
position: absolute;
left: 20px;
width: 180px;
}
J’ai choisi de placer le cadre à 20px du bord gauche de la fenêtre parce que ça collait bien avec mon squelette général. Vous pouvez bien sûr supprimer ou modifier la directive left: 20px;
.
Une feuille de style plus complète est fournie dans l’archive.
2. Des définitions de mots-clés directement incluses dans le texte
Exemple : Glossaire Cinéma
Ici, on veut carrément inclure le mot-clé et sa définition dans le corps du texte, comme un contenu à part entière de l’article [3].
Ici, le squelette s’appelera mot_definition.html
, et les rédactrices devront donc utiliser le raccourci <mot23|definition>
pour inclure le mot n°23. Si vous ne voulez utiliser que cette partie de la contrib, et donc, n’avoir qu’un seul modèle, vous pouvez renommer ce squelette en mot.html
et les rédacteurs utiliseront simplement le raccourci <mot23>
.
/squelettes/modeles/mot_definition.html
:
<BOUCLE_mot(MOTS){id_mot}>
[<dl class="glossaire[ glossaire_liste(#ENV{liste})]">
<dt><a name="mot#ID_MOT" href="#URL_MOT">#TITRE</a></dt>
<dd>(#TEXTE|sinon{#DESCRIPTIF})</dd>
</dl>]
</BOUCLE_mot>
Ici aussi, rien ne s’affiche si le mot n’a ni texte, ni descriptif.
J’ai prévu une petite subtilité : la possibilité pour les rédactrices d’imbriquer les définitions, à la façon d’une liste imbriquée, pour montrer des liens de dépendance entre elles. On peut utiliser le raccourci <mot23|definition|liste=1>
pour indenter la définition d’un niveau ; et <mot23|definition|liste=2>
pour indenter de deux niveaux.
Dans la feuille de styles :
dl.glossaire_liste1 {margin-left: 18px;}
dl.glossaire_liste2 {margin-left: 36px;}
Installation
L’archive contient :
- Un dossier modeles/
, qui comprend les deux modèles de la contrib : mot.html
et mot_definition.html
. Vous devez placer ces deux fichiers dans votre propre dossier squelettes/modeles/
.
- La feuille de styles mots_dans_le_texte.css
peut être renommée. Vous avez le choix entre trois méthodes pour qu’elle s’applique :
- copier/coller son contenu dans votre propre fichier .css
- la placer dans votre dossier
squelettes/
et ajouter un appel dans l’en-tête (<head></head>
) des pages qui doivent l’utiliser (soit dans uninc-head.html
qui serait inclu dans chaque page, comme dans les squelettes par défaut ; soit dans le squelette directement, par exemplearticle.html
) :<link rel="stylesheet" href="[(#CHEMIN{mots_dans_le_texte.css})]" type="text/css" media="all" />
- la placer dans votre dossier
squelettes/
et ajouter un appel dans votre propre fichier .css (ligne à insérer au tout début du fichier .css) :@import url(mots_dans_le_texte.css);
- Une image puce_mot.png
pour faire joli.
Je suis donc partie du principe que les feuilles de styles et les images se situaient directement dans le dossier squelettes/
. Libre à vous de les placer ailleurs et de corriger les chemins en conséquence.
Discussions par date d’activité
5 discussions
Bonjour
Merci pour ce plugin qui m’intéresse beaucoup.
J’ai une question. J’ai beaucoup de mots à définir. Chercher à chaque fois le numéro du mot dans la liste des mots-clés est assez fastidieux. Je voudrais faire quelque chose comme où XX est le titre du mot et non son numéro. Est-ce possible ? Merci.
Répondre à ce message
bonjour
« S’il clique sur le lien, il est redirigé sur la page du mot (ex. spip.php ?mot15). Ici aussi, on peut choisir de l’orienter ailleurs. »
Comment faire pour l’orienter ailleurs ? Ou se trouve l’URL du mot ? merci
Dans les fichiers modèles, par exemple
/squelettes/modeles/mot.html
, la destination du lien est#URL_MOT
.En changeant l’attribut
href=""
du lien, vous pouvez indiquer une autre adresse.merci de votre réponse.
Je voudrais utiliser le modele definition avec son raccourcis <mot23|definition>.
Mais au lieu de spécifier un mot, je veux afficher les définitions de tous les mots du groupe mot
pour avoir <groupemot23|definition>.
Que dois je modifier dans le modele definition ? Merci !
Pour pouvoir utiliser
<groupemot23|definition>
dans tes textes, il faut :modeles/groupemot_definition.html
;<BOUCLE_groupe(GROUPES_MOTS){id_groupemot}>...</BOUCLE_groupe>
autour de la boucle(MOTS)
;(MOTS)
de{id_mot}
en{id_groupe}
.Si c’est le seul modèle que tu utilises pour appeler un groupe de mots, tu peux aussi le nommer
modeles/groupe.html
et l’appeler dans le texte avec<groupe23>
. Le critère de la boucle(GROUPES_MOTS)
devient{id_groupe}
.Je t’invite à lire la documentation sur les modèles et sur la boucle
(GROUPES_MOTS)
....
fonctionne au poil !
merci !
Répondre à ce message
Bonjour
merci pour la contribe.
quand je veux insérer le titre d’un mot clé dans un article, j’écris dans le texte de l’article
« ».
S’affiche alors dans le texte de mon article, le titre du mot et un lien vers ce mot.
As tu une idée de ce que je dois écrire pour afficher non plus le titre du mot mais son descriptif ou le texte du mot ?
Merci
Ce que tu décris ressemble au modèle par défaut livré avec Spip. As-tu bien uploadé les fichiers mot.html et/ou mot_definition.html dans un dossier /squelettes/modeles/ ?
En modifiant ces fichiers de modèles, tu peux utiliser les balises classiques de Spip à ta guise : #TITRE, #TEXTE, etc. -> la boucle MOTS. Ces balises sont utilisées dans les exemples, et tu peux les supprimer/modifier pour obtenir le résultat voulu.
Il est possible que le rendu ne soit pas correct dans microsoft internet explorer ou ce genre de navigateurs obsolètes.
Si tu notais le lien vers la page où tu fais ce test, je pourrais mieux t’aider.
bonsoir
merci de ta réponse. En te lisant, je déduis qu’il faut modifier le code des fichiers modèles. Je me trompe ? Or je voudrais un raccourcis qui me permette directement dans l’édition d’un article d’insérer le champ texte ou descriptif d’un mot clé choisi... Une piste ?
Juste.
Je te conseille de lire Utiliser les modèles pour une explication plus détaillée. Mais en deux mots :
- créer un fichier pour chacun des deux modèles :
/squelettes/modeles/mot_texte.html
et/squelettes/modeles/mot_descriptif.html
qui contiennent tous deux la boucle<BOUCLE_mot(MOTS){id_mot}> </BOUCLE_mot>
- dans
mot_texte.html
, la boucle contient la balise#TEXTE
; dansmot_descriptif.html
, elle contient la balise#DESCRIPTIF
.- les modèles sont accessibles dans les articles avec les raccourcis
<motxx|texte>
et<motxx|descriptif>
.Explication : le raccourci « mot » va chercher un modèle dont le nom du fichier commence par « mot », « xx » indique l’
id_mot
qui sert dans la boucle ; le premier « filtre », « texte » ou « descriptif », complète le nom du modèle recherché :mot_texte.html
oumot_descriptif.html
. Ce qui signifie que tu nommes le modèle comme tu veux :<mot3|banane>
va chercher le modèle/squelettes/modeles/mot_banane.html
.- Quand tu vois ce que ça donne, tu peux adapter le code html et css pour donner l’aspect voulu.
ah ça s’éclaire. Grâce à tes explications, j’ai moins peur de m’engluer dans le code. Je vais donc me mettre aux modèles qui n’ont plus l’air rebuttant pour un débutant du code. Merci
Ivan
Répondre à ce message
Franchement, merci beaucoup pour cette contribution ! ^_^
Ce système peut aussi être très utile pour gérer les balises abbr et acronym sur le site (accessibilité), sans ajouter de plugin.
Répondre à ce message
Alors cet exemple ? On peut le voir ?
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 :
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.
Suivre les commentaires : |