2010-08-24 7 views
3

J'utilise http://softwaremaniacs.org/soft/highlight/en/ pour mettre en surbrillance Syntaxe HTML. J'ai une boucle php tirant le code d'un wordpress. J'utilise les balises pre/code dans mon code et la boucle suivante pour extraire le code de wordpress.Ajout de syntaxe surlignage aux pages Web (HTML/php)

<?php while (have_posts()) : the_post(); ?> 
<p><i><?php the_date(); echo "<br />"; ?> </p></i> 
<h2><?php the_title(); ?></h2>  
<p><?php the_content(); ?></p> 
<?php endwhile;?> 

En haut de ma page php J'ai l'importation ...

<script type="text/javascript" src="highlight.pack.js"></script> 
<script type="text/javascript"> 
hljs.initHighlightingOnLoad(); 
</script> 

Le test.html sur la page fonctionne très bien, mais ma page ne marche pas semblent sur mon serveur web. Cela a-t-il quelque chose à voir avec la façon dont je tire dynamiquement du contenu? Comment pourrais-je faire ce travail?

+0

Il va être difficile de dire ce qu'il se passe avec votre site Web sans le voir en action. Peux-tu poster un lien? – s4y

Répondre

8

À partir du code source

function initHighlightingOnLoad() { 
    var original_arguments = arguments; 
    var handler = function(){initHighlighting.apply(null, original_arguments)}; 
    if (window.addEventListener) { 
     window.addEventListener('DOMContentLoaded', handler, false); 
     window.addEventListener('load', handler, false); 
    } else if (window.attachEvent) 
     window.attachEvent('onload', handler); 
    else 
     window.onload = handler; 
} 

donc ça marchera qu'une seule fois, MAIS

Vous pouvez appeler la méthode à nouveau en trompant le plugin

hljs.initHighlighting.called = false; 
hljs.initHighlighting(); 

Je l'ai testé sur la page de démonstration et semble fonctionner plutôt bien.

Vous devrez peut-être appeler cela deux lignes après avoir inséré de nouveaux éléments sur la page.

3

Une autre approche possible: utiliser GeSHi pour faire la coloration syntaxique en PHP.

Un exemple de their documentation:

// 
// Include the GeSHi library// 
include_once 'geshi.php'; 
//// Define some source to highlight, a language to use 
// and the path to the language files// 
$source = '$foo = 45; 
for ($i = 1; $i < $foo; $i++){ 
    echo "$foo\n"; --$foo; 
}';$language = 'php'; 
// 
// Create a GeSHi object// 
$geshi = new GeSHi($source, $language); 
// 
// And echo the result!// 
echo $geshi->parse_code(); 
0

Vous pouvez utiliser FSHL (Fast Syntax Highlighter), il est écrit en PHP, prend en charge les langues communes, il peut être bien configuré, de style et étendu. Essaie.

Le contenu chargé dynamiquement devrait déjà être mis en évidence par le serveur, que vous n'auriez pas besoin d'utiliser JavaScript.

Si vous insistez pour utiliser la surbrillance côté client, je suggère d'utiliser le SyntaxHighlighter par Alex Gorbatchev, il est complet, très populaire et vous n'aurez pas besoin de code PHP supplémentaire.

Questions connexes