Movable Type の記事中の&を&に変更する方法
Movable Type を使ってアンカーやアフィリエイトリンクなどを付けたブログ記事を書いたときに、リンクに含まれる&を&に自動的に変換する方法を紹介します。
1.基本
(X)HTML では、テキストやURLに含まれる & は & と、実体参照で記述する必要があります。
例1:テキスト
【誤】
ドラッグ&ドロップ
【正】
ドラッグ&ドロップ
例2:URL(Google の「Movable Type」の検索結果のリンク)
【誤】
<a href="http://www.google.co.jp/search?hl=ja&q=movable+type&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=&aq=f&oq=">「Movable Type」の検索結果</a>
【正】
<a href="http://www.google.co.jp/search?hl=ja&q=movable+type&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=&aq=f&oq=">「Movable Type」の検索結果</a>
2.Movable Type のブログ記事内にある & を & に変換する
各テンプレートにある MTEntryBody タグに、次の regex_replace タグ(青色部分)を追加すれば、ブログ記事内にある & をすべて & に自動変換して、ページを出力します。
<$mt:EntryBody regex_replace="/&/g","&"$>
次のようにしておけば、元からある & は変換対象になりません。
<$mt:EntryBody regex_replace="/&(?!amp;)/g","&"$>
ただし、他の実体参照(<など)がブログ記事に含まれている場合もすべて変換対象になってしまうので、プライベートタグを使って記事ごとに振り分けるのも手かもしれません(というか、もっとエレガントな正規表現があるかもしれません)。
<mt:EntryIfTagged tag="@ref">
<$mt:EntryBody regex_replace="/&/g","&"$>
<mt:Else>
<$mt:EntryBody$>
</mt:If>
実体参照したいブログ記事のタグに「@ref」を付与しておきます。
また、自動ではありませんが、下記のプラグインで実体参照化する方法もあります。
3.参考サイト
以下です。ありがとうございました。
- Movable Type検索結果画面のMTIncludeタグでファイルを読み込む方法
- Movable Typeの月別コンテンツアーカイブリスト用テンプレート
- コンテンツデータでMTEntriesWithSubCategoriesの代替テンプレートタグ
- MTContentFieldタグの使い方
- Movable Typeでブログ記事一覧をカスタムフィールドでソートする方法
- MTの本文フィールドからimg要素のURLを取得する方法
- MTEntriesタグで指定した数の記事を除外して表示する方法
- Movable Typeのテンプレートタグの中でテンプレートタグを使う方法
- Movable Typeのテンプレートタグをテンプレートで生成する方法
- Movable TypeのMTEntriesタグで特定の複数ブログ記事を出力する方法
- Movable TypeでCSVデータからtable要素を作る方法
- MTIncludeタグのnameモディファイア
- Movable Type(MT)の特殊変数の入れ子
- ブロックタグにelseタグを組み込んで判定する
- Movable Type 5 におけるウェブサイトとブログの複数指定方法
こんにちは。
エントリの中でしたらMT4だとリッチテキストエディタを一度開けばXHTMLでないコードを実態参照に変換してくれると思うのですが、不完全なところがあったりしたのでしょうか?
>ヲレさん
こんにちは。
情報ありがとうございました。
リッチテキストの動作確認はあまり行っていなかったので、全く存じませんでした(普段も使用していません)。
頂いた情報については、ブログでも別途エントリーしたいと思います。
それではよろしくお願い致します。