ケータイ用の画像出力

iPhoneを通常の画面縦向きで見た場合、iWebkitで出力したノードの画像の縦横比が歪んでいるのに気付きました。ノードが出力した横幅360pxの画像が画面横向きでは正常な縦横比ですが、画面に収まらない場合、縦横比を無視して強制的に横方向の長さを調整してしまうようです。

また、ガラケーの画像の適切なサイズは一般に横幅240pxとされています。ガラケーで画像の横幅を360pxにすると殆どの機種で右端がキレてしまうことになります。Viewsのページでは出力画像のサイズを調整できますが、ノードではテーマによってテンプレートを切り替える必要があります。これは相当手間がかかりそうだと、さんざん調べまくって解決策を見つけました。

この前インストールしたMobile ToolsモジュールにMoble Tools Build Modeという設定項目があります。ノードやユーザーのオブジェクトの表示方法のAPIを提供するDisplay Suiteというモジュールをインストールした上で、このBuild Modeを有効化にすると、コンテンツタイプのフィールドの表示画面に、Mobile themeという設定タブがでてきます。

これでMobile Toolsで適用しているテーマに、画像フィールドの設定を通常のノードとは異なるimagecacheから選択できるので、ガラケーやiPhone用に、横幅240pxの画像を出力できるようになりました。

Mobile Toolsというモジュール、思った以上にかなり凄いモジュールのようです。

追記:

Mobile Toolsのimagecacheが通常のPC用のテーマにも適用されてしまっているのに気付きました。作者の方ともやりとりさせてもらったのですが、どうやらバグが残っているようです。修正を待ちたいと思います。

その間、モバイル用のnode.tpl.phpの$contentsを細かくフィールド毎の変数に置き換えてPC用とモバイル用の画像のサイズを変える方法を採っています。