xoops内でPHPでスマートフォンを判別して、if文でソースを追加する方法
xoops内でスマートフォン判別する方法
ページ全体をスマートフォン化するのは、手間がかかるし、技術的に難しい、
現在のPC用のサイトに、ひとてま加えて、スマートフォンでアクセスしているときには、電話のボタンを置いて電話を掛けやすくしたり、スマートフォンで入力しやすいフォームに飛ばしたりしたい
と考えたことありませんか?
phpでスマートフォンを判別して、スマートフォンでアクセスした場合のみ、if文でhtmlを書き出す方法をお教えいたします。
xoopsのthemeファイル内で利用できるスマートフォン判別PHP
xoops_root_path/themes/ ファイルの現在利用しているテーマファイルの先頭に、以下のスマートフォン判別用のソースを記述します。
<{php}>
//スマートフォンならPCサイトへリダイレクト
function is_mobile () {
$useragents = array(
'iPhone', // Apple iPhone
'iPod', // Apple iPod touch
'Android', // 1.5+ Android
'dream', // Pre 1.5 Android
'CUPCAKE', // 1.5+ Android
'blackberry9500', // Storm
'blackberry9530', // Storm
'blackberry9520', // Storm v2
'blackberry9550', // Storm v2
'blackberry9800', // Torch
'webOS', // Palm Pre Experimental
'incognito', // Other iPhone browser
'webmate' // Other iPhone browser
);
$pattern = '/'.implode('|', $useragents).'/i';
return preg_match($pattern, $_SERVER['HTTP_USER_AGENT']);
}
<{/php}>
xoops内で利用できるスマートフォン判別後のif文の記載方法
もしスマートフォンだったら、このソースを表示する。EOF の間のソースが表示されます。
<{php}>
//判別実行
if (is_mobile())
{
print<<<EOF
<span style=" font-size:1em">test</span>
EOF;
}
//}
<{/php}>
xoopsの各モジュールのテンプレートファイル内ではjavascriptの方が使いやすい。
is_mobile.js といったjsファイルをルートディレクトリにアップロード
// JavaScript Document
// Thanks to BraveNewCode's WPtouch iPhone Theme for the UA list.
// (http://wordpress.org/extend/plugins/wptouch/)
function is_mobile () {
var useragents = [
'iPhone', // Apple iPhone
'iPod', // Apple iPod touch
'Android', // 1.5+ Android
'dream', // Pre 1.5 Android
'CUPCAKE', // 1.5+ Android
'blackberry9500', // Storm
'blackberry9530', // Storm
'blackberry9520', // Storm v2
'blackberry9550', // Storm v2
'blackberry9800', // Torch
'webOS', // Palm Pre Experimental
'incognito', // Other iPhone browser
'webmate' // Other iPhone browser
];
var pattern = new RegExp(useragents.join('|'), 'i');
return pattern.test(navigator.userAgent);
}
上記のjsファイルをthemeファイルで読み込みます。
<script type="text/javascript" src="<{$xoops_url}>/is_mobile.js"></script>
picoモジュールのテンプレート内で、javascriptのif文を追加
<script type="text/javascript">
//もしPCだったら
if(!is_mobile()){
document.write("PC");
}
//もしスマートフォンだったら
if(is_mobile()){
document.write("スマホ");
}
</script>
- whois ansi のCreation Date Registration Date Expiry Date とは ( xoopsズープス ) [37872 view] 2011年09月23日
- xxoops2.2.0でaltsysをインストールした後、エラーが出て、altsysモジュールが白紙のときの対処法 ( xoopsズープス ) [32132 view] 2011年12月03日
- bulletinモジュールの投稿者名とヒット数とコメント数を消す。 bulletin_item.html ( xoopsズープス ) [31504 view] 2010年06月20日
- リストタグで横並びにして、かつ、フロート(回り込み)を解除する方法(崩れる 対処法) ( xoopsズープス ) [30211 view] 2011年04月05日
- 「ページを開けません。サーバーが応答を停止しています。」の問題について ( xoopsズープス ) [29717 view] 2012年09月19日
- xoops2.2.0でaltsysをインストールした後、ブロック部分と管理ページの日付が文字化けしたときの対処法 ( xoopsズープス ) [29447 view] 2011年07月23日
- light box 2.04 close.gif loading.gifが表示されない lightbox.js ( xoopsズープス ) [28662 view] 2010年06月21日
- Picoモジュールの 「コンテンツ内容」ブロックを利用して、スマーティーを利用できるカスタムブロックを実現する方法 ( xoopsズープス ) [27603 view] 2011年07月29日
- Smartyにtruncateという文字列修正の関数がある。指定した文字数で文字列を切り捨てるという便利なものなのだが、マルチバイト文字列に対してこれを使うと文字化けが起こって... ( xoopsズープス ) [27375 view] 2011年04月04日
- fckエディタで「invalid file type」と表示されて、ファイルがアップロードできない ( xoopsズープス ) [26551 view] 2010年05月14日