Movable Type 4.2 のダイナミックパブリッシングでプロフィール画像関連のテンプレートタグが動作しない不具合について
Category:[ダイナミックパブリッシング, トラブルシューティング]
Tag:[MovableType, TroubleShooting, UserPic]
Movable Type 4.2(動作確認は4.261)でダイナミックパブリッシングを使用している場合、プロフィール画像関連のテンプレートタグが正常に動作しないケースがあります。
ご質問を頂きましたので、本エントリーにて情報展開致します。
1.事象
例えば、プロフィール画像を登録しているユーザーがコミュニティブログに記事を投稿した場合、スタティックパブリッシングではメインページで次のようにプロフィール画像が表示されます。
スタティックパブリッシング

このページをダイナミックパブリッシングにするとデフォルトの画像になります。
ダイナミックパブリッシング

なお、いくつかのテンプレートタグを試したところ、以下のテンプレートタグから正常な出力を得られませんでした。
- MTAuthorUserpic
- MTAuthorUserpicURL
- MTEntryAuthorUserpic
- MTEntryAuthorUserpicURL
2.原因
php のソースをトレースしたところ、上記の各テンプレートタグの処理で php/lib/MTUtil.php の userpic_url という関数を起動しています。この関数はプロフィール画像のURLを返却するもので、その中で次の処理がありました。
if (!$thumb->get_thumbnail($dest, $thumb_w, $thumb_h, $asset['asset_id'], $scale, $thumb_name, 'png', true)) {
return '';
}
赤字の部分が示すように、png 画像に限定した処理になっています。テストしたプロフィール画像は jpg だったため、この処理でエラーとなり、テンプレートタグで何も表示されなかったようです。最初に png 画像で実験していたら、この原因には気がつかなかったと思います。
ちなみに、冒頭に示した画像がデフォルトのプロフィール画像になるのは、次のように MTIf タグで MTEntryAuthorUserpicURL タグを判定しているためです(分かりやすくするため改行しています)。
<img src="
<mt:If tag="EntryAuthorUserpicURL">
<$mt:EntryAuthorUserpicURL$>
<mt:Else>
<$mt:StaticWebPath$>images/default-userpic-90.jpg
</mt:If>
" width="<$mt:Var name="userpic_size"$>" height="<$mt:Var name="userpic_size"$>" alt="user-pic" />
3.対処
根本的な解決ではありませんが、とりあえずプロフィール画像に png を利用すれば、ダイナミックパブリッシングでも正常に画像が表示されます。
4.Windows での挙動
Windows(XPなので公式のインストール環境ではありません)では、パスのセパレータが「¥」になるのですが、png 画像を利用しても、次のようにプロフィール画像のパスに「/」と「¥」が混在してしまって正常に画像が表示できないようです。
/mt-static/support/assets_c¥userpics/userpic-1-100x100.png
とりあえず、php/lib/MTUtil.php の userpic_url の処理を一部書き換えると正常に表示できるようになりました。赤字を削除して青字の内容に書き換えます。
...前略...
function userpic_url($asset, $blog, $author) {
global $mt;
$format = $mt->translate('userpic-[_1]-%wx%h%x', array($author['author_id']));
$max_dim = $mt->config('UserpicThumbnailSize');
# generate thumbnail
$src_file = asset_path($asset['asset_file_path'], $blog);
$cache_path = $mt->config('AssetCacheDir');
$image_path = $cache_path . DIRECTORY_SEPARATOR . 'userpics';
$image_path = $cache_path . '/' . 'userpics';
$static_file_path = static_file_path().'support';
...後略...
- Movable Typeでエラー発生箇所を特定する方法
- IE9でMovable Typeを利用する方法
- MTIfタグにtagモディファイアを利用する場合の注意事項
- Movable Type 5のブログの設定で「Can't call method "label" on unblessed reference」が発生する問題について
- Movable Type 5.03へのアップグレードで再構築時に「Script Error」が発生する件について(つづき)
- XREA/CORESERVERでMovable TypeのCaptchaが表示されない不具合について
- Movable Type 5.03へのアップグレードで再構築時に「Script Error」が発生する件について
- Movable Typeの復元時に「Malformed UTF-8 character~」エラーとなる対処について
- Movable Type 5で「テンプレート「Create Entry」の再構築中にエラーが発生しました」というエラーが発生する件について
- Movable Type 5で「サーバーに Image::Magickか、Image::Magickの動作に必要な他のモジュールがインストールされていません。」となる事象について
- ダイナミックパブリッシングでURLが重複する事象について
- Movable Type 5(MT5)の FastCGI 環境で管理画面の URL が変更されない事象について
- ブログ記事タイトルを改行できるようにする
- MTEntries タグ + sort_by モディファイアでブログ記事がソートされない件
- 日本語ドメインによると EntryTrackbackData タグの不具合
- Movable Type 5.0(MT5.0)の Include タグと append モディファイア・prepend モディファイアの組み合わせについて
- Movable Type 5.0(MT5.0)で更新通知が送信できない不具合と対処
- Movable Type 5.0 のスケジュールタスクでエラーになる件について
- Movable Type で「~」が「?」に文字化けする事象や日本語のタグが合算できない不具合を解消する
- Movable Type 4.261 でのダイナミックパブリッシングエラーについて
- Movable Type 4.2 テンプレートセット(フッタ付きリキッドレイアウト対応)
- アフィリエイト収入の確定申告をする(平成20年分)
- Movable Type(MT)テンプレート
- Movable Type で再構築エラーになる場合の原因と対処
- ブログ記事に同一カテゴリーのブログ記事リストを表示(MT4版)
- FFFTPでサーバ内でのファイルの移動やコピーを一発で行なう方法
- コメントとトラックバックを分けて表示する for WordPress(その1)
- Movable Type の再構築を不要にする「ダイナミック・パブリッシング」(その2:設定方法)
- VisibleCustomFieldImage プラグイン v0.10
- dTree プラグイン for WordPress v0.3
≫ Movable Type ダイナミックパブリッシングでのプロフィール画像表示に関する不具合 from ブロッけんJr
MT4.2で、ダイナミックパブリッシングに設定後、プロフィール画像がデフォルト画... [続きを読む]
