質問箱/5089

カテゴリデザイン・CSS・スキン
サマリユーザーがskinを変更できるようにしたい
バージョン1.4.7
投稿者F.C.
状態完了
投稿日2012-02-15 (水) 17:22:31

質問

こんにちは、いつもお世話になっています。

スマホ版Pukiwikiを作ろうと思っているのですが、それだけであれば、UAを判別してskinファイルを切り替えれば済む話です。 しかし、スマホユーザーの中にはPC版サイトをスマホから見たいと思っていらっしゃる方もいるかと思うので、skinファイルをユーザーが変更できるようにする機能が欲しいです。

そこで、PukiWiki公式サイトを検索したら、以下のskin.inc.phpが出てきました。

dev:BugTrack/634

このページに掲載されている通りに「default.ini.php」「html.php」「func.php」の3箇所を修正し、pluginフォルダにskin.inc.phpをアップロードして、Menubarに

#skin

と書きましたが、バージョンが古いためか分かりませんがうまくいきませんでした(私が使用しているのは1.4.7ですが、そのページでは1.4.3をもとに説明されています)。 差分に示されている部分も若干記述が違っていたので、変更箇所を間違えた可能性もあります。

できれば、現行の1.4.7に「ユーザーがskinを変更できる機能」を追加する手順をご教授いただければ幸いです。 回答よろしくお願いします。

回答

  1. pukiwiki.ini.php
    • 「$agents」で、「default」→「$set_skin」に全て変更。
    • 「$agents」の直前に以下を追加。
      //skinの切り替え
      if( isset($_COOKIE['skin']) ){ // クッキーがあれば読み出し
      	$usr_skin=$_COOKIE['skin'];
      }else{//なければ
      	$expire = time() + 2592000; //cookie(skin)の有効期限(30日)
      	setcookie('skin', 'sp', $expire);//skin切り替え用のcookieをセット
      }
      if($usr_skin=='pc'){
      	$set_skin='default';
      }else{
      	$set_skin='s_phone';
      }
  2. skinディレクトリにスマホ用のスキン(s_phone.ini.php)を作成。
  3. default.ini.phpをコピーしたs_phone.ini.phpを作成し、スキンファイルの設定を先程作成したものに変更。
  4. 以下のsetskin.phpをホームディレクトリにアップロード。 setskin.php
    <?php
    	$ref = $_SERVER['HTTP_REFERER'];//リファラー(訪問元URL)を変数$refに格納
    	$expire = time() + 2592000; //cookieの有効期限(30日)
    	setcookie('skin', 'sp', $expire);
    
    	if($_COOKIE['skin'] == 'sp'){//元のskinがスマホ用ならPC用に変更
    		$skin='pc';
    	}elseif($_COOKIE['skin'] == 'pc'){//元のskinがPC用ならスマホ用に変更
    		$skin='sp';
    	}
    
    	setcookie('skin', $skin, $expire);//cookieをセット
    
    	header("Location: $ref");//元のページへリダイレクト
    ?>
  5. setskin.phpへのリンクを切り替える2つのスキンファイル内に設置。 このリンクをクリックすると、スキンが切り替わります。どちらのスキンを選択したかはクッキーに保存されます。

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

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

SourceForge