Installation

L'installation de Syntax Highlighter se déroule comme l'installation de n'importe quel plugin; vous avez le choix entre les deux méthodes:

Maintenant que le plugin est installé d'une façon ou d'une autre, rendez vous sur la page Outils de votre DotClear et, si tout s'est bien passé, vous devriez trouver un nouveau lien. En cliquant dessus vous aurez les informations que je vais redonner ici.

Mise en route

Une fois le plugin installé, vous devez faire une petite modification dans l'un des fichiers PHP de votre thème pour qu'il puisse fonctionner. Dans le fichier post.php, trouvez cette ligne:

<div class="post-content"><?php dcPostContent(); ?></div>

Et remplacez la par celle-ci:

<div class="post-content"><?php syntaxHL::PostContent(); ?></div>

Si vous désirez que le code soit mit en couleur dans la liste des billets également (pour les billets dans chapô), il vous faut aussi modifier le fichier list.php de votre thème. Cherchez dans celui-ci l'appel à la fonction dcPostAbstract() et remplacez le par un appel à la fonction syntaxHL::PostAbstract(). Les arguments restent identiques.

Et voilà, il n'y a rien de plus à faire, le plugin est en état de fonctionner!

Utilisation

Pour inclure du code coloré dans vos billets, vous avez deux solutions en fonction de si vous utilisez la saisie en format Wiki ou HTML. Prenons l'exemple d'un bout de code en PHP:

  • Si vous utilisez le format Wiki:
///[php]
<?php echo 'Hello, World!'; ?>
///
  • Si vous utilisez le format HTML:
<pre>[php]
<?php echo 'Hello, World!'; ?>
</pre>

Pour poster du code d'un autre language que PHP, vous remplaceriez bien sur "php" par l'identifiant du language approprié.

Languages Supportés

Le plugin est fournit avec le support pour les languages suivant:

Les valeurs en italique sont les identifiants que vous devez mettre entre crochets à la place de "php" dans l'exemple ci-dessus.

Ajout de Languages

La librairie GeSHi contient bien plus de languages que je n'en ai inclu dans le plugin! En fait, elle contient quasiment tout les languages de programmation immaginables, donc quel que soit ce que vous voulez colorier, c'est sûrement possible. Pour installer de nouveaux languages sur le plugin, rien de très compliqué:

  • Rendez vous sur le site officiel de la librarie GeSHi et téléchargez la.
  • Dans l'archive, vous trouverez un répertoire nommé geshi contenant de nombreux fichiers .php...
  • Repérez celui qui correspond au language que vous désirez installer puis uploadez le dans le répertoire geshi du plugin.
  • Rendez vous ensuite dans le panneau Outils de votre DotClear et cliquez sur le plugin.
  • Si tout s'est bien passé, votre language apparaitra dans la liste des languages installés!

Exemple: Disons que je veuille poster du code Assembleur coloré sur mon blog (quelle drôle d'idée, mais bon :). Le language n'est pas présent dans le plugin par défaut, je vais donc telecharger la librarie GeSHi et je récupère le fichier asm.php dedans. Il me suffit ensuite de l'uploader dans le répertoire geshi du plugin (typiquement dotclear/ecrire/tools/syntaxhl/geshi) et le tour est joué! Pour poster de l'assembleur je n'ai plus qu'à faire (en mode de saisie Wiki):

///[asm]
clrf    PORT_A
bsf     STATUS,RP0
movlw   0h
///

Et mon code assembleur sera syntaxiquement coloré.

Quelques exemples de coloration

Un peu de PHP:

<?php
	// Ceci est un test du plugin 'Syntax Highlighter'
	$var = ereg_replace(' ', ', ', 'foo bar');
	$trans = array('foo' => 'Hello', 'bar' => 'World');
	echo strtr($var.'!', $trans);
?>

Pour rester dans le même goût on enchaine sur une requête SQL:

 INSERT INTO brain VALUES ("clue");

Et pour finir en beauté, un petit bout de CSS (extrait du thème Kit par Kozlika que je salut bien bas :)

#sidebar {
	width : 160px;
	float : right;
	margin : 20px 0 0 0; /* meme marge haute que sur #content pour alignement */
	padding : 0 20px 40px 20px;
	background : transparent url(images/bas-sidebar.png) no-repeat bottom center;
	border-left:1px dashed #A71602;
	font-size:0.85em;
	color:#666;
	line-height:125%;
	}

N'hesitez pas à commenter si par malheur le plugin ne marchait pas (je ne l'ai testé que sur mon blog pour l'instant) ou si vous avez des idées d'amélioration!