|
日時: 2008/05/19 17:34
名前: lightbox
|
日時: 2008/05/19 17:34 名前: lightbox
SyntaxHighligter を埋め込むマクロを実装しています。
以下専用構文
※ @CODESET は、SyntaxHighligter の実行文の埋め込みです。
※ オリジナルの説明では、.js をページの最後に書く必要があります。
※ また、世間のサンプルではページのロードイベントを使用しているものがありますが、それでは正しく動かない場合もあります。
※ 外部 js、css -> head、実行文 -> 最後のソースコード以降の任意の場所、が管理上理想的です。
拡張子:
function the_content($more_link_text = '(more...)', $stripteaser = 0, $more_file = '') {
$content = get_the_content($more_link_text, $stripteaser, $more_file);
$content = apply_filters('the_content', $content);
$content = str_replace('>', '>', $content);
# **************************************************
# ここから改造
# 専用マクロを正規表現で検索して置き換え処理
# ここでは、外部ファイルからソースコードを取り出して
# SyntaxHighligter の構文に置き換え
# **************************************************
$matches = array();
mb_ereg_search_init( $content, "@CODE\(([^\)]*),([^\)]*)\)", "i" );
while( TRUE === mb_ereg_search() ) {
$work = mb_ereg_search_getregs();
$matches[] = $work;
}
foreach( $matches as $key => $value ) {
$repl_file = file_get_contents( "codetext/" . $value[2] );
$repl_file = str_replace('<', '<', $repl_file);
$repl_file = str_replace('>', '>', $repl_file);
$content = str_replace($value[0], "<pre name='code' class='{$value[1]}'>{$repl_file}</pre>", $content);
}
$content = str_replace(
'@' . 'CODESET',
'<script type="text/javascript">dp.SyntaxHighlighter.ClipboardSwf = "/clipboard.swf"; dp.SyntaxHighlighter.HighlightAll("code");</script>',
$content);
# **************************************************
# ここまで改造
# **************************************************
echo $content;
}
↓実装サンプル
http://winofsql.sakura.ne.jp/wordpress/?page_id=7
|