Syntax Highlighterも対応したよ!

Syntax Highlighterの導入メモ

 SyntaxHighlighter - Alex Gorbatchev

 いろいろなプログラムやマークアップ言語を、さも専用エディターの画面のように色分けしてくれるJSです。標準の使い方は上記のURLを参考のこと。今回は、a-blog cmsに組み込む際のサンプルです。

 大雑把に3ステップ

  1. HEAD要素内に出力用の記述を用意する
  2. インクルードファイルにまとめておく
  3. admin/blog/edit.html にカスタムフィールドを追記する

※モジュールとカスタムフィールドが何となく分かってる方向けの記事です

index.html側のHEAD要素内

<!-- BEGIN_MODULE Touch_NotAdmin -->
    <!-- BEGIN_MODULE Blog_Field --><!-- BEGIN brushes:veil -->
        <script type="text/javascript" src="/syntax/scripts/shCore.js"></script><!-- BEGIN brushes:loop -->
        <script type="text/javascript" src="/syntax/scripts/shBrush{brushes}.js"></script><!-- END brushes:loop -->
        <link type="text/css" rel="stylesheet" href="/syntax/styles/shCore.css"/>
        <link type="text/css" rel="stylesheet" href="/syntax/styles/shThemeDefault.css"/>
        <script type="text/javascript">
            SyntaxHighlighter.config.tagName = "code";
            SyntaxHighlighter.all();
        </script>
    <!-- END brushes:veil --><!-- END_MODULE Blog_Field -->
<!-- END_MODULE Touch_NotAdmin -->

 こんな感じで書いています。ブロックを色々と書いていますので大雑把な説明を。

Touch_NotAdmin
管理ページでないときにブロックの中身が表示されるモジュールです。エントリーの編集画面は他のJSもゴリゴリ動いている上に、別にSyntax Highlighterが必要な場所でもないので。
Blog_Field
ブログに関連づけられたカスタムフィールドを呼び出すためのモジュールです。{brushes}という変数を設定しています。これ自体が配列なのでloopで呼び出しています。
brushes:veil
brushesという変数がなければ、そのブロックの中身を出力しないための記述です。brushesを設定していない状態で、他の関連する記述が露出してしまうことを防ぎます。

冗長な記述は外部にまとめちゃう

<head>
<!-- 中略 -->
<!--#include file="/include/syntax.html" -->
</head>

 実際にはこんな感じでSyntax Highlighter関連の記述は別ファイルにまとめておいて、head内でインクルードしています。