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

バグ等

  • 類似ネタ: dev:BugTrack/634 スキンを定義でなく変数指定にしてほしい(skinプラグイン) ,自作プラグイン/tdiary.inc.php tDiaryテーマ設定プラグイン -- 2016-03-24 (木) 19:53:27
  • 新しくUAによりスマホとガラケーを選び直して残りをPCとしています。応用すればテキストブラウザ用のスキンも選択できるかと思われます -- 2016-03-25 (金) 06:18:48


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-03-25 (金) 21:33:55
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.367 sec.

OSDN