#author("2016-03-25T21:33:55+09:00","","") #author("2022-05-14T22:39:45+09:00","","") ** switchSkin.inc.php [#r41e10e2] |RIGHT:100|LEFT:360|c |~サマリ|クッキー情報によりスキンを変える| |~リビジョン|1.0| |~対応バージョン|All (未確認)| |~投稿者|[[.>./]]| |~投稿日|&new{2016-03-24 (木) 04:23:36};| #setlinebreak スマートフォン用スキンを導入時に簡単にPC用と切り替えできるようにする。 なお、pukiwiki.inc.phpの細工が必要となる。 スマートフォン用スキンをsp.ini.php、パソコン用をpc.ini.phpとした。 一応default.ini.phpとkeitai.ini.phpもそのまま使えるが、正常に表示するためには default.ini.phpをpc.ini.phpにコピーする必要がある。 *** ソース(plugin/switchSkin.inc.php) [#mcf54f07] <?php function plugin_switchSkin_convert() { $_body .= <<<_HTML_ <p>表示切り替え : <a href="?cmd=switchSkin">PC版 / スマホ版</a ></p> _HTML_; return $_body; } function plugin_switchSkin_action() { $expire = time() + 60 * 60 * 24 * 30; //クッキーの有効期限 if ($_COOKIE['skin'] == 'pc') { $skin = 'sp'; } else { $skin = 'pc'; } setcookie('skin', $skin, $expire); header("Location: $_SERVER[HTTP_REFERER]"); } ?> *** パッチ(addSwitch.patch) [#e2429bb8] --- _pukiwiki.ini.php 2016-02-15 05:19:02.000000000 +0900 +++ pukiwiki.ini.php 2016-03-24 04:32:29.283189300 +0900 @@ -452,6 +452,7 @@ $usedatetime = 1; // If you want to to ignore desktop-PC browsers for simple wikisite, // copy keitai.ini.php to default.ini.php and customize it. +/* $agents = array( // pattern: A regular-expression that matches device(browser)'s name and version // profile: A group of browsers @@ -546,3 +547,5 @@ $agents = array( array('pattern'=>'#^#', 'profile'=>'default'), // Sentinel ); +*/ +require 'uaSwitch.php'; *** ソース(uaSwitch.php) [#m3ef5dac] <?php /////////////////////////////// //// User-Agent settings $sp_ua = array( 'iPhone', // iPhone 'iPod', // iPod touch 'Android', // Android 'BlackBerry', // Blackberry 'Windows Phone', // Windows Phone ); $sp_ua_list = '/ ('.implode('|', $sp_ua).' )/i'; $kt_ua = array ( 'DoCoMo', // docomo 'UP\.Browser', // au-kddi 'J\-PHONE/', // j-phone 'Vodafone', // vodafone 'SoftBank', // softbank 'WILLCOM', // willcom 'emobile', // emobile ); $kt_ua_list = '/ ('.implode('|', $kt_ua).' )/i'; $expire = time() + 60 * 60 * 24 * 30 ; //クッキーの有効期限 if (isset($_COOKIE['skin'])) { $usr_skin = $_COOKIE['skin']; } elseif (preg_match($sp_ua_list, $_SERVER['HTTP_USER_AGENT'])) { //setcookie('skin', 'sp', $expire); $usr_skin = 'sp'; } elseif (preg_match($kt_ua_list, $_SERVER['HTTP_USER_AGENT'])) { //setcookie('skin', 'kt', $expire); $usr_skin = 'kt'; } else { //setcookie('skin', 'pc', $expire); $usr_skin = 'pc'; } setcookie('skin', $usr_skin, $expire); switch ($usr_skin) { case "kt": $set_skin = "keitai"; break; case "sp": $set_skin = "sp"; break; case "pc": $set_skin = "pc"; break; default: $set_skin = "default"; break; } $set_skin = (is_file($set_skin.".ini.php")) ? $set_skin : "default" ; $agents = array( array('pattern' => '#^#', 'profile' => $set_skin), ); ** バグ等 [#g4ae90a5] - 類似ネタ: [[dev:BugTrack/634]] スキンを定義でなく変数指定にしてほしい(skinプラグイン) ,[[自作プラグイン/tdiary.inc.php]] tDiaryテーマ設定プラグイン -- &new{2016-03-24 (木) 19:53:27}; - 新しくUAによりスマホとガラケーを選び直して残りをPCとしています。応用すればテキストブラウザ用のスキンも選択できるかと思われます -- &new{2016-03-25 (金) 06:18:48}; - switchSkin.inc.php→switchskin.inc.phpにし、ページに#switchSkin()を記載すると使用できるようでした。 -- &new{2022-05-14 (土) 22:39:45}; #comment(noname)