Themekeyモジュール

未だにIE対策に頭を悩ませることが多いです。以前はIE6、IE7が課題だったのですが、作るサイトがHTML5+CSS3になってきて、今度はIE8 対策が大きな頭痛の種になってるご同業者さんも少なくないのでは?

自分がお預かりしているサイトを平均して、IE6とIE7を足しても既に5%もないくらいになりましたが、IE8は今も15%以上あります。WindowsXPはIE9に対応していません。ChromeなりFirefoxなりをインストールしてくれるとありがたいのですが、XPユーザーが20%程度に対して5ポイントほど減っているだけです。

一方これらのサイトでもモバイル比率は急上昇、50%を超えるケースも少なくなくなってきました。来年4月にXPのサポートが終了しても、使用しつづけることのリスクは高まるものの動くことは動く訳で、一気にXPからWindows7とかにアップグレードされるとは考えにくく、逆にネットはモバイルだけでいいや、という層が増えてくるのではないかと思われます。

いずれは不要になるとしても当面はやはりIE8対策からは逃げられず、一方ではしっかりとモバイル対応をしておくことが大切と考えています。

これまでIE対策としては、CSSハックとか条件付きコメントタグでIE用のCSS(それもIEのバージョン毎に別のCSS!)を読み込んだりして対応してきましたが、CSSだけでなく、これまで以上にjavascriptを多用するようになり、ちょっと対応しきれなくなってきたと感じています。

それにこれまでの方法だと、どこでIE用の対策をしているのか、IEでfirebugが使えないこともあって、自分のやっていることが分からなくなることもしばしばです。

で、DrupalサイトでIE用にテーマ自体を切り替えらる方法はないか、ずっと探していたのですが、漸く見つけました!

Themekeyというモジュールです。17,000件とユーザー数はさほど多くないのですが、Drupal内のパス、コンテンツタイプ、日付時刻、ユーザーのブラウザやOS、ユーザーのロール、等々実に様々な条件に対して、テーマを切り替えて出力してくれる極めてスグレもののモジュールです。

ちなみにDrupal6の場合、ブラウザの判定にはThemekey propertiesというモジュールを追加する必要があります。

最初はちょっと戸惑いましたが、例えばIE6からIE8にだけ特定のテーマを適用する場合はこんな設定になります。

まずユーザーのブラウザがIEを設定して、次にIE6以上であることを設定、さらにIE9未満であることを設定しています。バージョンの数字は整数値を入れることで6.000...1から8.999...9を特定できるようになっているようです。

出力もすごく安定しています。例えば既存サイトをリニューアルしてレスポンシブデザインに対応させるといった場合、IE8以下にはこれまでのテーマをそのまま使えばいいことになります。

IE対策だけじゃなくていろんな活用ができそうです:

  • 特定のユーザーやロールに対して特定のテーマを適用し、サイトのリニューアルのための開発サイトを構築する。
  • レスポンシブデザインサイトでiOSとAndroidで異なる出力をする。
  • Switchthemeと組み合わせて、レスポンシブデザインサイトでスマホからPC用出力を選択できるようにする。
  • 特定の条件に対してサブテーマで一部だけを変える。
  • サブディレクトリで他のページと全然違うデザイン、レイアウトのサイトを運用する。

いずれも、Themekeyでなくても他の方法もありそうですが、設定のしやすさだけでもこのモジュールの優位性はあると思います。