- このページの位置
- ホーム > blogっぷり! > 石輪っぷり! > MovableType > エントリータイトル等の「<」「>」「&」「"」
石輪っぷり!
エントリータイトル等の「<」「>」「&」「"」
[MovableType] 2007年6月20日 21時42分
このサイトはWeb標準やアクセシビリティといったことを重視して制作しており、その検証の目安のひとつとして、各ページのフッター部分に設置している
,
のバナーから、そのページの構文チェックができるようにしている訳ですが、スタッフの皆さんのブログのページで、時々構文エラーとなるページが出てきます。
大抵はエントリー本文の書き方によるものが多いのですが、6月20日の長谷川っぷり!のエントリーは、エントリータイトルによる構文エラーが発生していました。
それは、「『女性起業コンペ "ama-con 2007』」というタイトルで、XHTML で属性の値を書くときに使う「"」が使われています。それも開きと閉じのセットでなく、何故か1つだけ。
これが原因で、リンクの title属性として生成している「title="『女性起業コンペ "ama-con 2007』"のコメント」といった部分が途中の「"」で属性の値が閉じられたと認識されていました。
#それはさて置きこのエントリーのメール本文そのまま貼り付けはアクセシビリティ的に問題あるんですけど。>しゃちょー
さて、同じような問題が、エントリーに「<」や「>」、「&」を使った場合にも発生します。これらの記号類に全角文字を使用すればエラーは発生しませんが、スタッフ全員がこういった知識を持っているわけではないですし、MTで構築したサイトをクライアントに納める場合はなおさらです。
かと言って、エントリータイトルやカテゴリ名称に「<」や「>」、「&」、「"」は使わないでっていうのも問題がありますので、MT のテンプレート側で解決する必要があります。
それには、MT のグローバル・タグ・アトリビュートのひとつ、「encode_html」を利用します。
エントリータイトルを吐き出す「<$MTEntryTitle$>」などのMTタグにこのアトリビュートを付けて「<$MTEntryTitle encode_html="1"$>」というふうに記述すると HTMLエンコードされ、「<」は「<」、「>」は「>」に、「&」は「&」に、そして今回の「"」は「"」に変換されて HTML 上に記述されます。
ところが、MT の標準テンプレートにはこのアトリビュートがほとんど使われていません。私自身もエントリータイトルに HTML で使用する記号類が使われることはないだろう(私が使用する場合は最初から HTMLエンコードして書くし)と、たかをくくってこのアトリビュートを使ってなかったわけですが、今回、長谷川っぷり!でやってくれちゃった(失礼)わけです。
お陰さまで、全てのテンプレートに記述している「<$MTEntryTitle$>」に「encode_html="1"」を追加するきっかけとなりました。
カテゴリ名称を吐き出す「<$MTCategoryLabel$>」や「<$MTArchiveTitle$>」にも同様に「encode_html="1"」を追加するといいんですが、スタッフのblogでは今のところほとんどカテゴリを使用されてないので今回は見送りです。
エントリー本文も同様なのですが、本文や追記にはリンクや引用を挿入すると HTML が生成されますし、このサイトでは本文にMTタグが使える Process Tags プラグインを導入している関係上、正規の HTMLタグや MTタグがエンコードされてしまってはいけないで、ここには「encode_html」は使えません。なので、エントリー本文や追記で「<」や「>」、「&」、「"」がそのまま使われると正しく表示されなかったり、構文エラーになる場合があります。
その代表例が amazon の商品ページへのリンクを貼り付けたときに、リンク先の URL内に使用されている「&」です。最初の頃は、気がついた時に「&」を「&」と修正していましたが、こうも頻繁に出てくるともう追いつきません。
トラックバック(0)
- :
コメント(1)
コメントする
- « 前の記事
- position プロパティは IE7 で使えない
- 次の記事 »
- 「Movable Type 4」出荷日変更












1
えへへ、ごめんなさい(^^;
投稿者: のら | 2008年3月 5日 9時39分