はじめての DynamicMTML #14 - デバイスごとに表示を分ける MTIfUserAgent と MTUserAgent

今回は、サイトにアクセスしてきたユーザーエージェントによって条件分岐する MTIfUserAgent タグと、ユーザーエージェントの情報を出力する MTUserAgent タグを紹介します。...

今回は、サイトにアクセスしてきたユーザーエージェントによって条件分岐する MTIfUserAgent タグと、ユーザーエージェントの情報を出力する MTUserAgent タグを紹介します。

MTIfUserAgent

MTIfUserAgent タグは、wants モディファイア、like モディファイアを指定して、ページにアクセスしてきたユーザーエージェント情報によって分岐するブロックタグです。

wants モディファイア

wants モディファイアには、Smartphone、Keitai、Tablet のいずれかを指定します。小文字でも大丈夫です。

Smartphone を指定した場合は、Android、BlackBerry、iPhone(iPod touch)、iPad、Palm、Opera Mini、Windows Phone の場合にブロックタグの中身が実行されます。

Keitai を指定した場合は、DoCoMo、AU、SoftBank の場合にブロックタグの中身が実行されます。

Tablet を指定した場合は、iPad またはユーザーエージェントに Mobile の文字を含まない smartphone の場合にブロックタグの中身が実行されます。なお、wants="Smartphone" exclude="Tablet" としていしても、wants="Tablet " と同様に扱いになります。

like モディファイア

like モディファイアには、任意の文字列を指定します。その文字列が、HTTP_USER_AGENT に含まれている場合にブロックタグの中身が実行されます。wants モディファイアよりも先に評価されます。

例えば、次のようにした場合、IE6 が該当します(他にも該当しますが)。

<mt:IfUserAgent like="MEIE 6.0"> </mt:IfUserAgent>

MTUserAgent

MTUserAgent タグは、ユーザーエージェントを判別する文字列を出力します。

raw モディファイア

raw モディファイアを指定(raw="1")するとユーザーエージェントの情報(HTTP_USER_AGENT情報)をそのまま出力します。サンプルページを用意したので確認してみてください。

wants、like モディファイア

MTIfUserAgent タグと同様、wants モディファイアと like モディファイアも指定できます。

例えば、wants モディファイアに smartphone を指定した場合、Android、BlackBerry、iPhone(iPod touch)、iPad、Palm、Opera Mini、Windows Phone からのアクセスのときに 1 が出力されます。

このように、MTUserAgent タグと MTIfUserAgent タグは、内部では同じ関数($app->get_agent())が呼ばれています。つまり、MTIfUserAgent タグの説明で、ブロックタグの中身が実行されるパターンのときは、MTUserAgent タグは 1 を出力するということになります。

したがって、MTIfUserAgent の条件分岐を明示的に出力することができるので、テンプレート構築中のデバッグにも使えるかもしれません。

また、wants="agent" を指定した場合は、iPhone や PC といったユーザーエージェント名を出力します。

以上です。

Published 2012-02-28
Updated 2019-06-25