質問 > フロント機能 > 2.3系でPCと携帯&スマホの振り分けについて |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
popo |
投稿日時: 2012/2/18 8:13
対応状況: −−−
|
長老 登録日: 2008/10/1 居住地: 投稿: 189 |
2.3系でPCと携帯&スマホの振り分けについて EC-CUBEバージョン
2.3.0 PHPバージョン PHP 5.2.17 DBバージョン PostgreSQL 7.4.19 お世話になります。 2.3系と古いタイプで運営しているのですが、昨今スマートフォンでのアクセスが多くなってきており、PCのブラウザでエージェントをスマホにしてアクセスしてみると、PC用のページが表示されました。 スマホからPC用のページで注文はできるのでしょうか? 私はスマホを持っていないので、試す事ができません。 スマホは表示画面がPCより狭いので、携帯用のページを表示させて、携帯用のページから注文してもらおうかと考えています。 ですが、どこで携帯とPCを振り分けているのか分かりません。 古いタイプなので、分かる方がいるか分かりませんが、振り分けを行っているファイルなど御存知の方が入れば、教えて頂けると助かります。 よろしくお願い致します。 |
yona |
投稿日時: 2012/2/20 17:55
対応状況: −−−
|
半人前 登録日: 2012/2/10 居住地: 投稿: 25 |
Re: 2.3系でPCと携帯&スマホの振り分けについて スマホはjsも使えますし、ほぼPCと同じ挙動をすると考えてよいと思います。
PCページで注文もできますよ。 (ご指摘の通り画面サイズの関係で、非常に使いづらかったりしますが...) UAで振り分け/リダイレクトを行っているのは、 /html/require.php です。 |
popo |
投稿日時: 2012/2/21 7:32
対応状況: −−−
|
長老 登録日: 2008/10/1 居住地: 投稿: 189 |
Re: 2.3系でPCと携帯&スマホの振り分けについて ご回答ありがとうございます。
エージェントの判別をして振り分けを行っているのは、下記のファイルだと分かりました。 data>class>SC_MobileUserAgent.php ですが、どこを触ったら良いのか分からずです。 上記のファイルを修正して振り分けを行ったら良いのか、またはhtaccessで振り分けを行ったら良いのか、迷ってしまっております。 htaccessでの振り分けの場合、下記のサイトを見つけました。 http://www.realize-web.jp/blog/001/post_143.php スマホからの「hogehoge.com」へのアクセスは、携帯と同じ「hogehoge.com/mobile/」へ飛ばしたいと考えています。 htaccessで「RewriteEngine On」での振り分けの場合は、下位フォルダまで影響してしまうので、そのままではループしてしまいそうなので、どのフォルダへ「RewriteEngine Off」を設置したら良いのかも分かりません。 「SC_MobileUserAgent.php」での対応、または「htaccess」での対応のどちらでも良いので、スマホからのアクセスは携帯ページへ飛ばす方法をアドバイス頂ければ助かります。 |
yona |
投稿日時: 2012/2/21 14:03
対応状況: −−−
|
半人前 登録日: 2012/2/10 居住地: 投稿: 25 |
Re: 2.3系でPCと携帯&スマホの振り分けについて おっしゃっている通り、SC_MobileUserAgent->isMobile() でUA判別していますので、
ここにスマートフォンUAの場合もtrueで返す処理を入れればアクセス振り分けはできます。
ちなみに、$this->isSmartPhone() は、取得したUAからスマートフォンかを判別するメソッドを 自作するという前提で書いています。 ご存知かもしれませんが、たとえばドコモのUA判定だと以下のようなことをやっています。 (SC_MobileUserAgent->isMobile()でreturnするときに呼んでいるメソッドです。) これと同じことを、「iPhone」「iPod」「Android」でやればスマートフォン判定ができます。 /data/module/Net/UserAgent/Mobile.php
|
popo |
投稿日時: 2012/2/22 20:31
対応状況: −−−
|
長老 登録日: 2008/10/1 居住地: 投稿: 189 |
Re: 2.3系でPCと携帯&スマホの振り分けについて アドバイスありがとうございます。
PHPの知識がないため、「$this->isSmartPhone()」の自作に自信ができないです(>_<) まずやる事は、「SC_MobileUserAgent.php」を下記のように修正。 「$this->isSmartPone();」は、「$objAgent->isEZweb()」のように、「$objAgent->isSmartPone()」ではなく、「$this->isSmartPone();」で正しいでしょうか?
次にUAの追加についてですが、例えば、下記のように書き換えれば良いのでしょうか? /data/module/Net/UserAgent/Mobile.php
あと「/data/module/Net/UserAgent/Mobile/」フォルダの中に、各キャリアごとにファイル(DoCoMo.php、EZweb.phpなど)が入っていますが、ここにはファイルを追加する必要はないでしょうか。 お手数をおかけしますが、アドバイスをお願い致します。 |
yona |
投稿日時: 2012/2/23 10:48
対応状況: −−−
|
半人前 登録日: 2012/2/10 居住地: 投稿: 25 |
Re: 2.3系でPCと携帯&スマホの振り分けについて 引用:
isSmartPhone() をどこに実装するかで変わります。 SC_MobileUserAgentクラス内に実装し SC_MobileUserAgentクラス内で呼べば $this->isSmartPhone() ですし、 Net_UserAgent_Mobilelクラス内に実装し SC_MobileUserAgentクラス内で呼べば $objAgent->isSmartPhone() です。 (このあたりは PHP の基本的なところなので、 解説サイトなどで調べればすぐわかると思いますよ^^) 個人的に Net_UserAgent_Mobile をいじるのが嫌なので、SC_MobileUserAgent 内に実装するのを想定していました。 分かりづらい書き方ですみません; 引用:
問題ないと思いますが、このままだと iPhone だけしか判定できませんが大丈夫ですか?? ほかのスマートフォンUAの追加は以下のような処理でできるかと思います。
引用:
キャリア毎のphpは、固有の処理(キャリアやモデル取得とか)を行っているようですが、 今回はUA判定だけなので必要ないです。 |
popo |
投稿日時: 2012/2/24 9:17
対応状況: −−−
|
長老 登録日: 2008/10/1 居住地: 投稿: 189 |
Re: 2.3系でPCと携帯&スマホの振り分けについて アドバイスをして頂いた通りに記述してみましたが、上手くできませんでした。
UAをスマホにしてもPCにしても、画面が真っ白になってしまい何も表示されなくなってしまいました。 data>class>SC_MobileUserAgent.php 上記のファイルに「$this->isSmartPhone()」を追記。
/data/module/Net/UserAgent/Mobile.php 上記のファイルに下記を追記。
特に複雑な追記をしているわけではないので、間違っていないと思いますが、何が悪いのかが分かりません。 また試しに「Mobile.php」のDocomoの箇所を下記のようにしてみました。 「SC_MobileUserAgent.php」はデフォルトに戻してあります。 要するにスマートフォンのUAがあった場合は、DoCoMoと判別するようにしました。
上記のようにするとPCからのアクセスでは問題なくトップページは表示されますが、スマートフォンのUAに変更してからアクセスしてもPC用のトップページが表示されてしまいます。 ちなみに、UAは「Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; ja-jp) AppleWebKit/533.17.9 (KHTML,like Gecko) Version/5.0.2」としています。 何か別の箇所にも修正を加えないといけないのかもしれません。 アドバイスをお願い致します。 |
yona |
投稿日時: 2012/2/24 10:03
対応状況: −−−
|
半人前 登録日: 2012/2/10 居住地: 投稿: 25 |
Re: 2.3系でPCと携帯&スマホの振り分けについて すみません、 isMobile() の記述が間違っていました;
SC_MobileUserAgent 内に書くならば以下になります。
popo様は /data/module/Net/UserAgent/Mobile.php に isSmartPhone() を実装されたとのことなので、 実際は $objAgent->isSmartPhone() ですが。 また、スマートフォンのUA判定ですが、 preg_match('!^iPhone!', $userAgent) という記述では、UAの文字列の先頭に iPhone がこないと true が返ってこないので、 preg_match('!iPhone!', $userAgent) または strstr($userAgent, 'iPhone') でUA判定ができます。 2.4.1ベースですが、これでモバイルサイトが表示されました。 |
popo |
投稿日時: 2012/2/24 13:43
対応状況: 解決済
|
長老 登録日: 2008/10/1 居住地: 投稿: 189 |
Re: 2.3系でPCと携帯&スマホの振り分けについて yona様のアドバイス通りに修正をしたら、無事にスマートフォンを判別する事ができました。
何度もアドバイスをして頂きありがとうございました。 またお手数をおかけして、申し訳ありませんでした。 デフォルの状態では、スマートフォーンはPC用のページが表示されますが、2.4系を利用しているyona様はそのままの状態にしているのでしょうか? スマホを持っていないので、スマホの画面でPCページの表示では見難いと思い、携帯ページを表示させようと思ったのですが、yona様やその他の2.3系や2.4系を利用している方は、スマホからのアクセスについてどのように対応にしているのか興味があります。 無事に解決できて良かったです。 ありがとうございました。 |
yona |
投稿日時: 2012/2/24 17:06
対応状況: −−−
|
半人前 登録日: 2012/2/10 居住地: 投稿: 25 |
Re: 2.3系でPCと携帯&スマホの振り分けについて うーん、SPの対応は特に気にしてなかったです。デフォの状態です^^;
言われてみれば使いづらかったかもしれないですね... これまでバージョンアップでSP対応があったりしたので、 意識している方はSPの用意もちゃんとされているのでしょうか。 なにはともあれ、解決できてよかったです。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |