2012-01-30 11 views
5

ユーザーがコードレベルのモバイルユーザーであるかどうかを検出する最適な方法は何ですか?Magentoのモバイルユーザーを検出する最良の方法

管理者は、ユーザーエージェントに基づいてテーマを検出して切り替える正規表現ベースのルールを設定できますが、この機能はAPI内で保護されており、開発者が使用できる一連のメソッドとして利用できないようです。

私はdevsとデザイナーがテーマフォルダ内の機能を利用可能/使用不可にするように配慮するべきだと理解していますが、正規表現ルールはやや緩やかに定義されているため、モバイルユーザー向けです

だから、誰かが既にコアからこれを盗聴する良い方法を持っているかもしれません(すでに利用可能である代わりに公開されているものを再度実装することなしに)core/design_package

答えて

5

あなたは、次の方法を試すことができます。

  • がチェックするためにはindex.phpにアクセスして、そこにいくつかのコードを追加し
  • 希望のモバイルテーマのパッケージを使用するように設定した独自のストアビューであなたのウェブサイトのための新しい店をされて作成します現在のユーザーは、前の行

Mage::run($mageRunCode, $mageRunType);

01を、このチェックを追加
  • (この質問は how to check if the request came from mobile or computer in phpがすでにあった)モバイルデバイスを使用します
    • は、この

      ような条件を使用する場合(IS_MOBILE()){ メイジ::ラン( 'mobile_store_code')。 } else { Mage :: run($ mageRunCode、$ mageRunType); }

    UPD:

    function is_mobile() { 
        $user_agent=strtolower(getenv('HTTP_USER_AGENT')); 
        $accept=strtolower(getenv('HTTP_ACCEPT')); 
    
        if ((strpos($accept,'text/vnd.wap.wml')!==false) || 
         (strpos($accept,'application/vnd.wap.xhtml+xml')!==false)) { 
        return 1; 
        } 
    
        if (isset($_SERVER['HTTP_X_WAP_PROFILE']) || 
         isset($_SERVER['HTTP_PROFILE'])) { 
        return 2; 
        } 
        return 0; 
    } 
    

    http://www.manhunter.ru/webmaster/272_opredelenie_mobilnih_brauzerov_na_php.html

    から取られたコードや

    function isMobile() 
    { 
        $regex_match = "/(nokia|iphone|android|motorola|^mot\-|softbank|foma|docomo|kddi|up\.browser|up\.link|" 
           . "htc|dopod|blazer|netfront|helio|hosin|huawei|novarra|CoolPad|webos|techfaith|palmsource|" 
           . "blackberry|alcatel|amoi|ktouch|nexian|samsung|^sam\-|s[cg]h|^lge|ericsson|philips|sagem|wellcom|bunjalloo|maui|" 
           . "symbian|smartphone|mmp|midp|wap|phone|windows ce|iemobile|^spice|^bird|^zte\-|longcos|pantech|gionee|^sie\-|portalmmm|" 
           . "jig\s browser|hiptop|^ucweb|^benq|haier|^lct|opera\s*mobi|opera\*mini|320x320|240x320|176x220" 
           . ")/i"; 
    
        if (preg_match($regex_match, strtolower($_SERVER['HTTP_USER_AGENT']))) { 
         return TRUE; 
        } 
    
        if ((strpos(strtolower($_SERVER['HTTP_ACCEPT']),'application/vnd.wap.xhtml+xml') > 0) or ((isset($_SERVER['HTTP_X_WAP_PROFILE']) or isset($_SERVER['HTTP_PROFILE'])))) { 
         return TRUE; 
        }  
    
        $mobile_ua = strtolower(substr($_SERVER['HTTP_USER_AGENT'], 0, 4)); 
        $mobile_agents = array( 
         'w3c ','acs-','alav','alca','amoi','audi','avan','benq','bird','blac', 
         'blaz','brew','cell','cldc','cmd-','dang','doco','eric','hipt','inno', 
         'ipaq','java','jigs','kddi','keji','leno','lg-c','lg-d','lg-g','lge-', 
         'maui','maxo','midp','mits','mmef','mobi','mot-','moto','mwbp','nec-', 
         'newt','noki','oper','palm','pana','pant','phil','play','port','prox', 
         'qwap','sage','sams','sany','sch-','sec-','send','seri','sgh-','shar', 
         'sie-','siem','smal','smar','sony','sph-','symb','t-mo','teli','tim-', 
         'tosh','tsm-','upg1','upsi','vk-v','voda','wap-','wapa','wapi','wapp', 
         'wapr','webc','winw','winw','xda ','xda-'); 
    
        if (in_array($mobile_ua,$mobile_agents)) { 
         return TRUE; 
        } 
    
        if (isset($_SERVER['ALL_HTTP']) && strpos(strtolower($_SERVER['ALL_HTTP']),'OperaMini') > 0) { 
         return TRUE; 
        } 
    
        return FALSE; 
    } 
    

    コードhttp://snippy.ru/snippet/1864-Prostoy_sposob_opredelit_zahod_na_stranicu_cherez_mobilnyy_brauzer/

    あり、多くのから取ったこの1:例のdecet方法、それ自身のためにそのような例はGoogleで見つけることができます;)

    +0

    クール:)問題はis_mobile()の内容に関するものではありません –

    +0

    Magentoはコア/ design_package(保護されている)に既に組み込まれている同様の正規表現比較を持っています私がまだ見つけていない何か他の人々がこれに使っているもの –

    14

    どうやってですか?私のためにかなりうまくいくと思われます。

    $isMobile = Zend_Http_UserAgent_Mobile::match(
        Mage::helper('core/http')->getHttpUserAgent(), 
        $_SERVER 
    ); 
    

    私は十分な研究を行っていないけれども、多分WURFLアダプタはthis threadごとに、より堅牢です。

    +1

    これはmagentoのための元の良い答えです。 –

    関連する問題