今日のMovable Type 4.2:MT4.1用に作った『テンプレートセット』のプラグインがMT4.2でエラーの出る件について
2008年6月 7日 03:10

エラーが出るのは、MT4.2のja.pmからは、MT4.1独自のテンプレートモジュール名は削除されているからだ。
昨日のブログに「MT4.1で使えたカスタムテンプレートのプラグインは、MT4.2ではテンプレートの構造が変わったので、使えない場合がある。」と書いた。この現象はテンプレートのモジュール名を日本語で書き、config.yamlのlabel表記が英文の場合に起こる。
本日いろいろと検証した結果、エラーの原因は、MT4.2のja.pmから、MT4.1独自のテンプレートもモジュール名が削除されているころが理由であることがわかった。
※jm.pmは英語を日本語に置き換えるファイル
対応方法として、MT4.1用に作った『テンプレートセット』を、MT4.2のテンプレート構造に合わせて作り直し、config.yamlも書き換えるのが最もよいが、早急に作り直しができないという方のために対応方法を解説する。
MT4.1用の『テンプレートセット』のプラグインを作った人は、必ず読んでほしい。
◆エラーの現象
エラー内容を見ると、概ねはこんな感じだ。
テンプレート「ウェブページ」の再構築中にエラーが発生しました:
<mtInclude>タグでエラーがありました:
「ヘッダー」というモジュールテンプレートが見つかりませんでした。
「テンプレートを編集」をクリックすると、該当テンプレートが開くのだが、読み込まれているはずの、「ヘッダー」「フッター」が(新規作成)となっている。
上記のエラー表示がおきた場合は、テンプレートモジュールの管理画面を確認してみよう。

MT4.1では確かに日本語で表示されていたモジュール名が英文表記になっている。
もしや、ja.pmから、MT4.1独自のモジュール名が削除されているのではと思い、/lib\MT\L10N/ja.pmを調べると、該当ファイル名がない。
ではどうするか?3つの方法がある
◆対応方法
1. ja.pmにMT4.1独自のモジュール名を追加する
/lib\MT\L10N/ja.pmの184行目から192行目以降にテンプレートファイル名が書かれているので、その後に下記ソースを追加する
'Comment Detail' => 'コメント詳細',
'Entry Detail' => 'ブログ記事の詳細',
'Entry Metadata' => 'ブログ記事のメタデータ',
'Footer' => 'フッター',
'Header' => 'ヘッダー',
'Page Detail' => 'ウェブページの詳細',
ただしこのやり方はリスクが大きいのでお勧めはできない。プラグインで追加するコンテンツの日本語訳は、プラグインでおこなうのがベストだ。
2. テンプレート内で読み込んでいるモジュールの名前を、config.yamlに書いているlabelと揃える。
たとえば、こんな感じ。
◇ソース
<$MTInclude module="ヘッダー"$>
◇config.yaml
header:
label: ヘッダー
英字表示と日本語表示が混ざってしまうのがまずいと思うなら、プラグインに L10N を持たせてやる方法を利用するといい。
※L10Nを持たせる方法は上ノ郷谷さんに教えてもらった。
3.テンプレート内で読み込んでいる日本語表記のモジュールの名前を、__trans phrase="英文ファイル名"に変換する。
たとえば、
<$MTInclude module="ヘッダー"$>
を
<$MTInclude module="<__trans phrase="Header">"$>
と変換してやる。
なお、この文章を書くにあたっては、シックス・アパート株式会社の上ノ郷谷さんと書簡のやりとりを行い、幾多のアドバイスをいただいた。というのは知らなかった。上ノ郷谷さんに感謝。
MT4.2やMTOS4.2に特化した、『カスタムテンプレートセット』のプラグインは、正規版が出てから作る必要があるので、気が向いたら解説する予定。
#あくまでも気が向いたらだが…:-p
参考になれば幸い。
投稿者: Dakiny 日時: 2008年6月 7日 03:10 |
|
|
| パーマリンク | コメント(0) | トラックバック (0)
トラックバック
このエントリーのトラックバックURL:
http://www.dakiny.com/mtos/mt-tb.cgi/1642
※文章内容と関係のないトラックバックは固くお断り。






