L'une des critiques faites aux wikis, c'est la difficulté de lisibilité due aux
mots wiki, comme par exemple
PagePrincipale.
Les mots ainsi collés empêchent également une indexation correcte dans les moteurs de recherche, qui vont indexer "espacedanslesmotswiki" et non "espace dans les mots wikis".
Certains moteur de wiki intègrent une fonctionnalité de séparation des mots collés :
Solution 1
La solution est relativement simple à mettre en oeuvre dans
WikiNi.
Il faut ajouter dans wakka.php la fonction suivante :
function SplitWikiWord($wiki_name) { return preg_replace("/([a-z])([A-Z0-9])/", "$1 $2", $wiki_name); }
... et faire appel à cette fonction à chaque fois que c'est nécessaire.
- dans header.php
- dans wakka.php (fonctions ComposeLinkToPage? et Link)
- et sans doute d'autres...
Cette solution comporte quelques inconvénients :
- les articles sont en majuscules : Regles De Formatage, Espaces Dans Les Mots Wiki, etc.
- les mots comportant des mots d'une seule lettre donnent un effet disgracieux : Pages ACompleter, Liste DAppel, etc.
- allonge les mots : Tableau De Bord De Ce Wiki, etc.
- plus quelques autres effets surprenants : Polex Net (au lieu de "Pole xNet"),
J'aimerais avoir votre avis pour savoir s'il faut l'intégrer tout court, l'intégrer comme une option ou ne pas l'intégrer du tout.
--
CharlesNepote
Avis pro
Je suis pour la solution de Charles, j'accepte les inconvénients évoqués... si en plus les liens peuvent apparaître de la même manière, comme sur
WackoWiki (ya pas un backport "facile" là dessus ?), je suis prêt à abandonner ma demande pour avoir les tableaux (euh... non en fait... ;-) ). L'intérêt c'est une meilleure lisibilité sans contrainte d'écriture (les underscore ou "blanc souligné" ça le fait pas trop non plus) --
BenoitAudouard 20040117
Avis contre
Si j'ai envie d'écrire Page principale au lieu de PagePrincipale, j'écris
[[PagePrincipale Page principale]]. Il me semble que c'est la solution qui arrange tout le monde, non ? En plus ca tombe bien, c'est déjà intégré à
WikiNi :) --
MattRixx
Solution 2
J'ai adopté une solution semblable pour des raisons
- d'esthétique et lisibilité, même si je n'ai rien contre les mots wiki accolés,
- de référencement,
- d'accessibilité, car je pense que:
- les lecteurs d'écrans s'arrangent mieux avec des mots séparés,
- selon la mise en page, le médium et la taille de caractère choisie par l'utilisateur, des longs mots wiki d'un seul tenant ont vite fait de déborder et d'apporter des désagréments (d'ailleurs, même sans espaces, ajouter ­ entre les sections du mot permettrait la césure lorsque nécessaire.).
Pour cela, j'ai une fonction SplitWikiWord dans wakka.php (qui prend en compte l'effet disgracieux des mots d'une lettre dont parlait Charles - mais a peut-être d'autres défauts) :
function SplitWikiWord($tag) {
- $text = preg_replace("/([a-z])([A-Z0-9])/", "\$1 \$2", $tag);
- return preg_replace("/([A-Z])([A-Z][^A-Z])/", "\$1 \$2", $text);
}
à laquelle je fais appel dans wakka.php, en ajoutant
$text=$this->SplitWikiWord($text);
- dans la fonction Link, après // it's a Wiki link!
- dans la fonction ComposeLinkToPage après $text = htmlentities($text);
--
JeanJulienClaudon
Solution 3
J'ai choisi une solution legerement différente qui permet de définir un mot Wiki à partir de deux mots séparés par un souligné. A l'affichage il apparait comme deux mots séparés et la modification est vraiment tres simple :
- une ligne modifiée dans le fichier formatter/wakka.php
"\b([A-Z][a-z]+[A-Z,0-9][A-Z,a-z,0-9]*)\b|". devient
"\b([A-Z][a-z,_]+[A-Z,0-9][A-Z,a-z,0-9,_]*)\b|". (c'est l'avant derniere ligne de la fonction "preg_replace_callback" à la fin du fichier.)
- toujours dans le fichier formatter/wakka.php la ligne suivant /wiki links! devient
else if (preg_match("/^[A-Z][a-z,_]+[A-Z,0-9][A-Z,a-z,0-9,_]*$/s", $thing))
- une ligne modifiée dans la class Wiki
return ($this->LoadPage?($tag) ? "<a href=\".$this->href($method, $tag)."\">".$text."</a>" : "<span class=\"missingpage\">".$text."</span><a href=\".$this->href("edit", $tag)."\">?</a>"); devient
return ($this->LoadPage?($tag) ? "<a href=\".$this->href($method, $tag)."\">".str_replace('_',' ',$text)."</a>" : "<span class=\"missingpage\">".str_replace('_',' ',$text)."</span><a href=\".$this->href("edit", $tag)."\">?</a>");dans la fonction Link, après // it's a Wiki link!
plus d'info sur la page
MotsWiki2Mots
--
GouBs