プログラミングをテーマにしたプログの場合、自分の書いたコードや設定ファイルの中身を載せたい場合も多い。そんなときにコードをその他の文章と見分けやすく、かっこよく表示してくれるJavascriptのライブラリSyntaxhighlighter。本ブログにもようやく導入したので、導入方法を紹介する。
環境
- SeeSaaブログ
- syntaxhighlighter 3.0.83
ダウンロード
本家サイトより最新版をダウンロードできる。無料ブログサービスなどを利用していてファイルをサーバにアップロードできない場合はhosted versionを使用できる。導入方法
headタグ下にコピー
上記は必須ファイル&デフォルトファイルでの場合。
ハイライト部分の見た目はshThemeDefault.cssをその他のcssに替えることでバリエーションがある。
設定部分は
- SyntaxHighlighter.config.tagName = "code";…ハイライトするコードの囲みタグに
を使用する。 - SyntaxHighlighter.config.stripBrs=true;…行末に改行タグがある場合無視する。(改行文字で改行)
- SyntaxHighlighter.config.bloggerMode=true;…「ブログで使う人はこれ」っとのこと。。。
autoloaderについて
HTML,javascript,PHP・・・それぞれでbrushファイルが別になっているため、一つのサイト(ブログ)内で様々な言語のサンプルコードをハイライトしたい場合は、すべてのbrushファイルを全ページのheadタグで指定する必要がある。しかしサイト全体でheader部分を共有している場合、ページによってはサンプルコードの言語以外のbrushファイルは必要ない(loadするだけ時間の無駄だ)。
autoloaderはそういう問題を解決する。コードのタイプと対応するbrushの組み合わせを定義しておいて、いざサンプルコードがレンダリングされるときに実際のbrushファイルをロードする。(必要になったときに初めて読みこむ、rubyのlazy loadみたいだ。)この方法なら使用されないbrushファイルが実際読み込まれることはない。
がしかし、利用する場合、本家サイトにあるautoload用サンプルコードをコピー&ペーストすればよいが、ペースト箇所はDOM上でハイライトしたい箇所の後に評価されるようにしなくてならない。サンプルではhtml閉じタグの直前になっている。しかし、scriptタグやcss読み込みのlinkタグをこの場所に書くのはHTMLのスタンダート的によくない模様。http://validator.w3.org/でチェックするとエラーになる。。。SEO的によくない影響があるかも!?


