タケユー・ウェブ日報

Ruby on Rails や Flutter といったWeb・モバイルアプリ技術を武器にお客様のビジネス立ち上げを支援する、タケユー・ウェブ株式会社の技術ブログです。

MovableType で.php書き出しをしてPC/スマホ/ガラケーの出し分けをする

DynamicMTMLとか使えない・使いたくないケースで。単にPHPUAの判別してるだけです。

ただしPHPだけではプレビューできないので、拙作のmt-plugin-httpuseragentと組み合わせてます。

案件で使ってるので問題があれば修正。

UserAgent判定PHP テンプレートモジュール

<?php 
    $user_agent = $_SERVER['HTTP_USER_AGENT'];

    $ua = 'pc';

    $docomo = 0;
    $au = 0;
    $softbank = 0;
    $ios = 0;
    $android = 0;
    $blackberry = 0;
    $windowsmobile = 0;

    $tablet = 0;
    $smartphone = 0;
    $featurephone = 0;
    $generic = 0;

    # http://maxfactory.biz/blog/2011/05/27/device_f/

    if(preg_match("/DoCoMo/", $user_agent)){
        $ua = 'docomo';
        $docomo = 1;
        $featurephone = 1;
    }else if(preg_match("/UP\.Brower|KDDI-/", $user_agent)){
        $ua = 'au';
        $au = 1;
        $featurephone = 1;
    }else if(preg_match("/J-PHONE|Vodafone|SoftBank/", $user_agent)){
        $ua = 'softbank';
        $softbank = 1;
        $featurephone = 1;
    }else if(preg_match("/iPhone/", $user_agent)){
        $ua = 'iphone';
        $ios = 1;
        $smartphone = 1;
    }else if(preg_match("/iPad/", $user_agent)){
        $ua = 'ipad';
        $ios = 1;
        $tablet = 1;
    }else if(preg_match("/Android/", $user_agent)){
        $android = 1;
        if(preg_match("/Mobile/", $user_agent) && !preg_match("/SC-01C/", $user_agent)){
            $ua = 'androidmobile';
            $smartphone = 1;
        }else{
            $ua = 'androidtablet';
            $tablet = 1;
        }
    }else if(preg_match("/BlackBerry/", $user_agent)){
        $ua = 'blackberry';
        $blackberry = 1;
        $smartphone = 1;
    }else if(preg_match("/IEMobile/", $user_agent)){
        $ua = 'iemobile';
        $windowsmobile = 1;
        $smartphone = 1;
    }else{
        $generic = 1;
    }
?>

利用方法(メインページ インデックステンプレート)

<mt:if name="preview_template" rtrim="1">
    <mt:IfHttpUserAgent smartphone="1" rtrim="1">
        <$MTInclude module="スマホ-トップページ"$>
    <mt:Else>
        <mt:IfHttpUserAgent featurephone="1" rtrim="1">
            <$MTInclude module="携帯-トップページ"$>
        <mt:Else>
            <$MTInclude module="PC-トップページ"$>
        </mt:IfHttpUserAgent>
    </mt:IfHttpUserAgent>
<mt:else>
    <$MTInclude module="UserAgent判定PHP" cache="1"$>
    <?php if ($smartphone): ?>
        <$MTInclude module="スマホ-トップページ"$>
    <?php else: ?>
        <?php if ($featurephone): ?>
            <$MTInclude module="携帯-トップページ"$>
        <?php else: ?>
            <$MTInclude module="PC-トップページ"$>
        <?php endif ?>
    <?php endif ?>
</mt:if>
  • スタティックパブリッシング
  • 書き出し先 index.php