Nucleus(JP)フォーラム

NucleusCMS日本語版ユーザーのためのサポートフォーラムです。疑問が生じたらまずは記事検索をご利用ください。

ログインしていません。

#26 2006-01-29 21:07:27

sakurae
メンバー
登録日: 2004-09-26
投稿: 105
ウェブサイト

Re: スキン チェンジャー? プラグインを探しています

こんにちは、お世話になります。
サイト改装のため新しいスキンを作り、このプラグインを使って切り替えながら表示確認をしています。
バージョンは 0.6、コアの /nucleus/libs/SKIN.php の parse 関数の1行目

global $manager, $CONF;

の下に

$manager->notify('InitSkinParse',array('skin' => &$this, 'type' => $type));

を追加しております。
現状では新しいスキンが未完成のため、<%if(loggedin)%>〜<%endif%> の中に
<%SkinSwitcher%> を記述して管理人の私以外切り替えできないようにしているのですが、
複数のウィンドウを開きながら双方で切り替えをしているうちにデフォルトスキンに戻れなくなってしまいます。
仕方ないのでブラウザからクッキーを削除しようとしたところ、複数のクッキーが発行されていて
一番最初に発行されたクッキーが有効なため後から何度スキン変更しても反映されないように見えました
(あまり仕組み分かってないので違うかもしれませんが…)。
Nucleus は v3.21、確認したブラウザは Firefox 1.5 (for MacOS X) と Safari で、タブブラウジング使用です。
対処法がありましたらご教授宜しくお願いいたします。

オフライン

#27 2006-02-03 13:00:15

sakurae
メンバー
登録日: 2004-09-26
投稿: 105
ウェブサイト

Re: スキン チェンジャー? プラグインを探しています

sakurae さんの発言:

仕方ないのでブラウザからクッキーを削除しようとしたところ、複数のクッキーが発行されていて
一番最初に発行されたクッキーが有効なため後から何度スキン変更しても反映されないように見えました
(あまり仕組み分かってないので違うかもしれませんが…)。

後から分かったのですが、有効になっている Cookie は必ずしも最初のものではないようです。
うちでは FancyURL を使っているのですが、例えば item ページでスキン切り替えをすると
Cookie のパスは「/item」となり、index スキンから飛ぶと「/」だったり「/ブログ名」だったり「/catid」だったりします。
これらパスが違うために複数の Cookie が発行されていたようなので、これを「/」で統一する方法があれば解決しそうな気がします。

オフライン

#28 2006-02-03 23:59:00

nakahara21
メンバー
From: 尼崎
登録日: 2003-11-14
投稿: 1,298
ウェブサイト

Re: スキン チェンジャー? プラグインを探しています

cookieのパスが変化するって言うのは初耳です。
グローバル設定のcookie設定をデフォルトから変更されました?
『cookieパス』はスラッシュ1個がデフォルトの値ですが。


nakahara21
http://nakahara21.com/
(ただいま調整中です)

オフライン

#29 2006-02-04 00:12:54

sakurae
メンバー
登録日: 2004-09-26
投稿: 105
ウェブサイト

Re: スキン チェンジャー? プラグインを探しています

御返信有難うございます。
御質問の答えですが、Cookie パスはスラッシュ一つ、Cookie ドメインは空白のままでデフォルトから変更しておりません。
先程こちらの記事を読んで下さった他の方からアドバイスを頂き、プラグイン内の setcookie を

setcookie ("nuc_skinswitch", "", time() - 3600, "/", "サイトURI");

というように変更してみたのですが、パスの最後にスラッシュが一個増えただけで「/」への統一は出来ませんでした。

オフライン

#30 2006-04-24 10:19:42

nakahara21
メンバー
From: 尼崎
登録日: 2003-11-14
投稿: 1,298
ウェブサイト

Re: スキン チェンジャー? プラグインを探しています

とってもとっても対策が遅れました。
FancyURLを使っている場合、クッキーが何個も発行されてしまうバグをつぶしたつもりです。
Nucleusのクッキー設定をきちんと読み込んでクッキー発行しているつもりです。
(なにぶん、クッキー設定をいじったことがないので自信はありませんが...)

NP_SkinSwitcher.phpのみを変更しています。
バージョンアップの方は、NP_SkinSwitcher.phpを上書きするだけでダイジョウブです。


Attachments:
zip NP_SkinSwitcher07.zip, Size: 6.31 KiB, Downloads: 588

nakahara21
http://nakahara21.com/
(ただいま調整中です)

オフライン

#31 2006-04-24 12:58:28

sakurae
メンバー
登録日: 2004-09-26
投稿: 105
ウェブサイト

Re: スキン チェンジャー? プラグインを探しています

バージョンアップどうも有難うございました。
自分では全くのお手上げで、結局このプラグインを諦めたままサイトの改装を終わらせていました。
ちょっと触った程度ですが問題なく動作しているようです!
このプラグインがあると改装する前のスキンも無駄にならず活用 (?) 出来そうです。

オフライン

#32 2006-04-29 12:56:39

sakurae
メンバー
登録日: 2004-09-26
投稿: 105
ウェブサイト

Re: スキン チェンジャー? プラグインを探しています

お世話になっています。
FancyURL 対応の v0.7 でスキンチェンジが正常に動くようになったのですが、
ブラウザでフィードを表示させようとするとおかしな動作になることに気づきました。
具体的に言うと RSS までも SkinSwticher で選択したスキンで表示しようとするため
Firefox のライブブックマークが機能しなくなったりします。
一旦ブラウザを終了させれば元に戻りますが根本的な解決策などありましたらご教授下さい。

オフライン

#33 2006-08-02 15:36:31

monika
メンバー
登録日: 2005-07-02
投稿: 64

Re: スキン チェンジャー? プラグインを探しています

<!-- l --><a class="postlink-local" href="http://japan.nucleuscms.org/bb/viewtopic.php?t=2202">viewtopic.php?t=2202</a><!-- l -->
からの続きです。
ブラウザを閉じてもスキンを記憶する方法を探しています。
expiresを入れれば良いようですがどう入れればよいでしょうか?

(移動にあたり、cha_cya様本当にありがとうございます!!)
--------------------------------
現在下記サイトのようなサイトを作っています。

http://cyuki.orichara.net/

皆に見せて大丈夫なジャンルだけを含んだスキン、
一部の方にしか受け入れられないジャンルを含んだスキン

という方法で訪問者さんに移動して頂いているので、
出来ればブラウザ閉じても一定期間はcookie保持をしたいのです。
どうぞ、ご指導お願います!!


*-------------*

Nucleus CMS v3.41
Firefox 11.0
Windows7

*********************
◆◇◆Orichara.net◆◇◆
    http://orichara.net/
*********************

オフライン

#34 2006-08-02 15:52:44

藤咲
Administrator
From: 広島
登録日: 2003-11-17
投稿: 1,211
ウェブサイト

Re: スキン チェンジャー? プラグインを探しています

monika さんの発言:

ブラウザを閉じてもスキンを記憶する方法を探しています。
expiresを入れれば良いようですがどう入れればよいでしょうか?

コードを追ってみました。phpでcookieをセットするとすればsetcookie関数を使っていると思うので、このプラグインで言えば以下の行になります。

setcookie($cookieName,'',(time() - 3600),$CONF['CookiePath'],$CONF['CookieDomain'],$CONF['CookieSecure']);

でsetcookie関数の記述方法は
http://www.spencernetwork.org/memo/tips-2.phpによると

setcookie("クッキー名", "クッキーの値", "有効期限", "パス", "ドメイン名", "セキュア属性");

ということなので、上記コードで有効期限を設定しているのは
(time() - 3600)の部分になります。上の参考サイトによると

過去の日付を指定することで強制的に無効にすることができます。

と書いてありますので、現在の時刻(time())から3600秒(60×60=1時間)を引くことで過去の日付を指定して
有効期限を無効にしていると思われます。
なので、たとえば有効期限を1日にしたいのであればこの部分を
(time() + 24*3600)
とすればいいと思います。1週間なら
(time() + 7*24*3600)
1ヶ月(30日)なら
(time() + 30*24*3600)

試す環境はないんで、100%これとは言い切れないんですが、上記理由からこれじゃぁないかな、って思います。
ですね。


藤咲
備忘録とかもろもろ
http://fjsk.tk/

オフライン

#35 2006-08-02 17:38:46

monika
メンバー
登録日: 2005-07-02
投稿: 64

Re: スキン チェンジャー? プラグインを探しています

藤咲様、お返事ありがとうございます!!
今試してみたところ、「(time() - 3600)」を「(time() + 30*24*3600)」等に変更してみたのですが、
やはりブラウザを閉じると元に戻ってしまいました :cry:

他の数値には、教えてくださった行の周辺に
「$skinID」のような「ドルマーク付き」の変数があるので
このクッキーの期限も「expire」か何かに渡してやらなくちゃいけないのでしょうか?


*-------------*

Nucleus CMS v3.41
Firefox 11.0
Windows7

*********************
◆◇◆Orichara.net◆◇◆
    http://orichara.net/
*********************

オフライン

#36 2006-08-02 18:58:35

NKJG
メンバー
From: あなたのうしろ
登録日: 2005-03-28
投稿: 56
ウェブサイト

Re: スキン チェンジャー? プラグインを探しています

doSkinVar 90行目の後に

$cookieContentExtra .= "expires=".gmdate('D, j-M-Y H:i:s', (time() + 30*24*3600))."GMT;";

でどうでしょう。

74行目の後に

setcookie($cookieName,$skinID,(time() + 30*24*3600),$CONF['CookiePath'],$CONF['CookieDomain'],$CONF['CookieSecure']);

も必要かも。

オフライン

#37 2006-08-03 00:01:08

monika
メンバー
登録日: 2005-07-02
投稿: 64

Re: スキン チェンジャー? プラグインを探しています

NKJG様、お返事ありがとうございます!

$cookieContentExtra .= "expires=".gmdate('D, j-M-Y H:i:s', (time() + 30*24*3600))."GMT;";

だけでは無理でしたが

setcookie($cookieName,$skinID,(time() + 30*24*3600),$CONF['CookiePath'],$CONF['CookieDomain'],$CONF['CookieSecure']);

を入れてみると、ちゃんと、ブラウザ閉じる前のスキンが表示できるようになりました!!
一応、ログイン状態&IE,ファイアーフォックスそれぞれで試してみましたが問題は無いようです。

本当に、皆さんに感謝です!!
cha_cya様、藤咲様、NKJG様、どうもありがとうございます!!!


*-------------*

Nucleus CMS v3.41
Firefox 11.0
Windows7

*********************
◆◇◆Orichara.net◆◇◆
    http://orichara.net/
*********************

オフライン

#38 2006-08-03 00:16:42

NKJG
メンバー
From: あなたのうしろ
登録日: 2005-03-28
投稿: 56
ウェブサイト

Re: スキン チェンジャー? プラグインを探しています

上手く行ってよかったです!

ちなみに上のほうのコードが、メニューからスキンを選んだときにセットするcookieの有効期限設定です。
それだけだとメニューを選びなおさない限り確実に有効期限が切れるので、ページを表示するたびにcookieを保存しなおして有効期限を延ばしています。それが下のコードです。

オフライン

#39 2006-08-03 00:27:45

藤咲
Administrator
From: 広島
登録日: 2003-11-17
投稿: 1,211
ウェブサイト

Re: スキン チェンジャー? プラグインを探しています

あら、外してましたか :oops:
いや、うまくいって良かったです。ちゃんと読まずにテキトウに見てちゃいかんなぁ…。

NKJGさま、フォローありがとうございます 8)


藤咲
備忘録とかもろもろ
http://fjsk.tk/

オフライン

#40 2006-08-03 09:52:35

NKJG
メンバー
From: あなたのうしろ
登録日: 2005-03-28
投稿: 56
ウェブサイト

Re: スキン チェンジャー? プラグインを探しています

えらそうなこといって上のコード間違えてました。
ただしくは

$cookieContentExtra .= "expires=".gmdate('D, j-M-Y H:i:s', (time() + 30*24*3600))." GMT;";

ですね。

[size=200:1r8tq3zz]たぶん

オフライン

#41 2006-11-26 10:35:36

Katsumi
メンバー
From: CA
登録日: 2005-06-24
投稿: 637
ウェブサイト

Re: スキン チェンジャー? プラグインを探しています

[url=http://japan.nucleuscms.org/bb/viewtopic.php?t=2450]プラグイン管理画面関連の脆弱性/url]を解決したバージョン、0.7.2 です。NP_0TicketForPluginのインストールに加えて、以下のものにアップグレードしてください。


Attachments:
zip NP_SkinSwitcher072.zip, Size: 6.6 KiB, Downloads: 700

オフライン

#42 2010-03-11 18:05:24

naha
メンバー
登録日: 2004-10-31
投稿: 68

Re: スキン チェンジャー? プラグインを探しています

コアver3.41でこちらのプラグインを使用しています。

インストール後、ページ上にスキンを切り替えるフォームは出るのですが、スキンを切り替えられません。
SKIN.phpの追記は既に該当部分に同じコードがあったので特に書き換えてはいません。

また、上記に関連して、管理操作履歴に以下のログが残っていました。

プラグイン「NP_SkinSwitcher」を読み込めませんでした(ファイルが見つかりません)

ホームページにアクセスしたりスキンを切り替えようとするとログが残るのではなく、
ある時突然ログが残ります。
また、一行だけ残るときもあれば、同時刻にいっぺんに1000行以上もログが吐かれることがあります。

対処方法をご教授いただけたらと思います。よろしくお願いいたします。

オフライン

#43 2010-03-12 00:37:47

naha
メンバー
登録日: 2004-10-31
投稿: 68

Re: スキン チェンジャー? プラグインを探しています

上記の件につきまして、
管理操作履歴にログが残るのは、違うディレクトリに同じデータベースとURLを設定した
別のNucleusを昔設置したのをすっかり忘れていて、それが悪さをしていたようです。お騒がせいたしました。

スキンを切り替えできないという現象はまだ続いていて、
スキンを切り替えようとするたびに以下のエラーがログに出ていました。

PHP Fatal error:  Call to a member function getDefaultSkin() on a non-object in /home/***/nucleus/plugins/NP_SkinSwitcher.php on line 84

よろしくお願いいたします。

オフライン

Board footer