entities.confの落とし穴
[ Category : DokuWiki ] 2010年01月13日 13:53
DokuWikiは、極力HTMLタグを使わずに高速で文章が書けるようになっていますが、デフォルトでは文字色を変えたり、右寄せやセンタリングができません。そういう機能を追加した場合は、conf/entities.confを編集したらOKです。デフォルトでは、次のようになっています。
# Typography replacements # # Order does matter! # # You can use HTML entities here, but it is not recomended because it may break # non-HTML renderers. Use UTF-8 chars directly instead. <-> ↔ -> → <- ← <=> ⇔ => ⇒ <= ⇐ >> » << « --- — -- – (c) © (tm) ™ (r) ® ... …
書式は単純。「変換したい文字列(半角スペースを好きなだけ)変換後の文字列」という風に、1行に書けばOKです。では、これに、次のような行を追加してみました。
[red] <span style='color:#d3381c;'> [blue] <span style='color:#2a83a2;'> [green] <span style='color:#47885e;'> [/red] </span> [/blue] </span> [/green] </span>
狙いは「[red]赤色にしたい文字列[/red]」を「<span style='color:#d3381c;'>赤色にしたい文字列</span>」に変換させたいわけですね! でも、コレを実践するとページの表示が崩れてしまいました…。んでもってよく見ると…
You can use HTML entities here, but it is not recomended because it may break
(ココでHTMLタグを使うこともできるんだけどさ、おすすめできないんだ。バグっちゃうかもしんないよ)
なんて記載がentities.confのヘッダに書いてあるじゃないですか。ありゃりゃ…、以前のバージョンならできたのに、どうも、2009-12-25版ではできなくなってしまったようですね…。
さてさて、吐き出されたHTMLコードをよく見ると「color:#」の「#」を表示する時におかしな挙動をするっぽいということが判明。こういう時の対処法は「エスケープのおまじない」ですよね!試しに#の直前にエスケーブを入れてみたところ、ちゃんと動くようになりました。
[red] <span style='color:\#d3381c;'> [blue] <span style='color:\#2a83a2;'> [green] <span style='color:\#769164;'> [/red] </span> [/blue] </span> [/green] </span>
Discussion
- 投稿する前に「Discussionのガイドライン」をご一読くださいませ。