switchSkin.inc.php

サマリクッキー情報によりスキンを変える
リビジョン1.0
対応バージョンAll (未確認)
投稿者.
投稿日2016-03-24 (木) 04:23:36

スマートフォン用スキンを導入時に簡単に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)

<?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)

--- _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)

<?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),
);

バグ等



トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-11-21 (火) 23:42:13
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.322 sec.

SourceForge