Word特有の文字を置き換えるでエンティティを選択する場合の注意と対策
前置き
MT4で三点リーダー(…)が三連ピリオド(...)に変換される様に、一部の記号が似た記号に変換されるのはWord特有の文字を置き換える(Smart Replace)という設定のせいだ。これについては以前の記事を読んで欲しい。
その際の対策としてエンティティを選択する事を紹介したが、エンティティに設定を変更する場合には注意が必要だった。
注意
この注意は、環境ではなくテンプレートに使用しているテンプレートタグに関係する。それは、置き換えるフィールドに対応するテンプレートタグにencode_htmlモディファイアを使えないという事だ。encode_htmlモディファイアを使うとエンティティ変換されたもののアンパサンド(&)が、さらに変換されて、記号が暗号のようになってしまう。
例えば、三点リーダー(…)を使った記事タイトルを出力するのにタグを<$MTEntryTitle encode_html="1"$>
と記述した場合。
… > … > &#8230;(ソース) … > … > …(表示)
記号がエンティティ化 、さらにHTMLエンコード化され、最後は三点リーダーとして表示できていない。
対策
この問題を避ける一番の方法はエンティティを選択しない事。対応するASCII文字か置き換えないを利用すればよい。
どうしてもエンティティを選択する場合、その対処法は二つ。
一つは置き換えるフィールドで絞って選択する方法。テンプレートで置き換えるフィールドに対応するテンプレートタグでencode_htmlモディファイアが使っていないものに絞って選択すればよい。
もう一つはテンプレートを修正する方法。置き換えるフィールドに対応するテンプレートタグのencode_htmlモディファイアをテンプレートから除去すればよい。
どちらの場合も置き換えるフィールドと対応するテンプレートタグが重要だ。以下がその対応。
- タイトル
<$MTEntryTitle$>
- ブログ記事
<$MTEntryBody$>
- 追記
<$MTEntryMore$>
- キーワード
<$MTEntryKeywords$>
- 概要
<$MTEntryExcerpt$>
- タグ
<$MTTagName$>
<$MTTagLabel$>
記事のフォーマットにもよるが、MTEntryBodyやMTEntryMoreからencode_htmlモディファイアを外せる人は少ないと思う。個人的には、Word特有の文字を置き換える(Smart Replace)は置き換えないにしておくのが無難だと思う。
コメント[0]
コメント投稿フォーム
コメントを投稿するにはJavaScirptが必要です。ブラウザのJavaScriptを有効にしてください。
トラックバック[0]
トラックバックはまだありません。
コメントはまだありません。