Nucleus(JP)フォーラム

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

ログインしていません。

#1 2005-09-05 20:49:58

kinkin
メンバー
From: 兵庫県
登録日: 2005-08-22
投稿: 13

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

今Nucleusと格闘中ですが、プラグインを作るまでには程遠く、こんなプラグインが欲しいと思って探しています。
複数の人が参加するNucleus BLOGを運営する場合、管理画面は初心者ユーザーには少々使いにくいかなと思うのでスキンタイプだけでも簡単にBLOG画面から変更できればいいのになと思います。

1)SQL追加不要で (そのBLOGの管理者のみBLOG sidebar で表示)
skin_descからスキンタイトル(sdname)とスキンID(sdnumber)を読み出して全スキンタイプをリスト化してselectにする。← 選ぶと切り替わる。
現在のスキンに切り替えるなどの変更ボタンで各BLOGのスキンタイプが変更になる。
※これだと管理責任者(SuperAdmin)がテストでスキンを置けないですけど。

2)スキン選択を管理責任者が指定したものから選べる
上記にプラスして
管理画面上で管理責任者がユーザーに使用を許可するスキン選択設定をする。

こんなプラグインはないものでしょうか?
1)のselectだけでもいいんですけど、skinidを叩くのはどれがどれかを覚えきれないと思いますし、イチイチ管理画面からスキンタイプを変更して確認するのが面倒だと思うので。

オフライン

#2 2005-09-06 08:39:44

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

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

スキンチェンジャープラグインなら作れると思います。
でも、ご希望なのは、管理者が適用するスキンを変更するためのスイッチなのですよね?
ちょっと面白いですね。
フツーは、閲覧ユーザーに選ばせるために設置するのでは?という頭がありました(^^ゞ

覚えていたら今度作ります。


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

オフライン

#3 2005-09-06 09:59:50

kinkin
メンバー
From: 兵庫県
登録日: 2005-08-22
投稿: 13

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

nakahara21さま、プラグイン関係で色々使わせて頂いており大変お世話になっております。
自分が一方的に拝見している方からの返信があるなんて、とても嬉しいです。
この場を借りてお礼&敬意を(*- -)(*_ _)
私自身も閲覧ユーザーに選ばせるタイプっていうのも考えたのですが、XOOPSなどのコミュニティ系なら閲覧側にカスタム出来ることも大事かなと思いますが、BLOGはBLOG管理者が個人的な好みで使う用途が多いと思うので何かにこだわってスキンを選ぶんじゃないかなと思いますから、ユーザーに選択させる必要はないかなぁと考えます。(私的な意見ですが)
スキンチェンジャープラグイン(?)があれば、管理責任者(SuperAdmin)も新しいスキンを追加したりしたことを告知してまわらなくてすみますし、スィッチ方式だとBLOG管理者も気分に応じて気軽にスキンが変更できるし、良いと思うのです。
ぜひぜひ、記憶の片隅において下さい。心から期待してその時をお待ちしております♪
:oops:

オフライン

#4 2005-09-06 11:07:44

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

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

ちょっとプラグインを書いてみましたが、プラグイン単独での実現は今のNucleusプラグインAPIでは難しいことがわかりました。
詳しいことは書きませんが、index.phpにアクセスした時点で、プラグイン側で何かをしようとするよりも前にスキンデータが読み込まれちゃうのです。
もちろん、ページ丸ごと内部的にキャッシュして廃棄してもう一度ページ生成して表示させることも考えましたが、ちょっと無理そうです。

コアファイル内にこういう行を追加して使ってください、的なスクリプトでもいいのでしょうか?
(だとしたら簡単。変更もほんの数行だと思うし)


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

オフライン

#5 2005-09-06 11:40:57

kinkin
メンバー
From: 兵庫県
登録日: 2005-08-22
投稿: 13

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

さっそく対応して頂いてありがとうございます。:D
プラグイン単独では難しいとなると普及しないかもですね、それでも良いですか?? 
なんだか個人的なお願いになってそうで申し訳ないです。
もしnakahara21さまさえよろしければ、その方向でお願いしたいです。
(コアファイルいじるのは個人的には抵抗はありません。)

単にselectでスキン切替にしておく方が需要がありそうなら、こちらでadminなら表示って設定をつけて切り替えて確認してから管理画面で変更って形でも構いません。
でもユーザーが選ぶってなるとskinidをクッキーにセットするとかセッション中は有効にさせるとかが必要なんですよね?
それはまた別物になりそう・・・。

どちらでも結構ですので、nakahara21さまの食指の動く方で・・・お願い致します。(*- -)(*_ _)

オフライン

#6 2005-09-06 11:57:51

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

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

kinkin さんの発言:

(コアファイルいじるのは個人的には抵抗はありません。)
でもユーザーが選ぶってなるとskinidをクッキーにセットするとかセッション中は有効にさせるとかが必要なんですよね?

話が早そうで嬉しいです。
クッキーとかセッションとかurlにパラメータで渡すとか、そういうのは別に簡単なのですが。
http://nakahara21.com/?itemid=180
http://nakahara21.com/?itemid=473
などで既に実験はしてます。(昔なのでしょぼい仕組みを書いてますが)

ただ、その....
スキン切り替えselect formをすべてのスキンに埋め込む必要がありますよね?
スキンを増やすたびにどこかにformを埋め込まなければいけません。(<%SwitchSkin()%>と書くだけですが)
これじゃ、あんまり便利じゃないですよね?
自動フォーム埋め込みの方をちょっと勉強してきます。


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

オフライン

#7 2005-09-06 12:40:30

Andy
メンバー
登録日: 2004-03-18
投稿: 1,495
ウェブサイト

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

nakahara21 さんの発言:

ちょっとプラグインを書いてみましたが、プラグイン単独での実現は今のNucleusプラグインAPIでは難しいことがわかりました。
詳しいことは書きませんが、index.phpにアクセスした時点で、プラグイン側で何かをしようとするよりも前にスキンデータが読み込まれちゃうのです。

スキン切り替えをやりたいから新しいプラグイン・イベントを作りたいという話が,以前デベロッパ・メイリング・リストで出ていました。今のステータスは確認していませんが,いずれ導入されるでしょう。それを先取りするのがいいかな,と想います。

nakahara21 さんの発言:

もちろん、ページ丸ごと内部的にキャッシュして廃棄してもう一度ページ生成して表示させることも考えましたが、ちょっと無理そうです。

性能はよくないでしょうけど,できると想いますよ。NP_AccessControlでそれっぽいことをやっています。
ユーザーごとのプラグイン・オプションでスキンを決めておけば,いいんじゃないかな。

オフライン

#8 2005-09-06 13:24:51

kinkin
メンバー
From: 兵庫県
登録日: 2005-08-22
投稿: 13

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

#本題からそれまくってる部分は無視してください。

本当に早い対応で感謝(&恐縮)しております。

nakahara21 さんの発言:

クッキーとかセッションとかurlにパラメータで渡すとか、そういうのは別に簡単なのですが。
http://nakahara21.com/?itemid=180
http://nakahara21.com/?itemid=473
などで既に実験はしてます。(昔なのでしょぼい仕組みを書いてますが)

既に(もちろん!)読みました。スキンの変更をググりまくりましたので、常に表示されてました。 smile
この方法を試そうかと悩んだのですが、ひょっとするとスキンスィッチなんてのもどこかに埋もれてたりしないかなと思って書いたんです。
結果的には、お手数をお掛けしてあつかましいなぁと自分で思ってます。申し訳ないです。:oops:

nakahara21 さんの発言:

スキンを増やすたびにどこかにformを埋め込まなければいけません。(<%SwitchSkin()%>と書くだけですが)
これじゃ、あんまり便利じゃないですよね?
自動フォーム埋め込みの方をちょっと勉強してきます。

・・・そんなお手間をお掛けして良いものかと・・・なんなら埋め込みまくりますよ。
今でもプラグインやスキンを見つけては埋め込みまくりですから。
特にLinks部分は、LinkListに全部置き換えてたりしてます。(笑)
(まだスキン数は、20程度ですけど100個も超えると確かに大変そうですが、気合でやるです。)
しかもテンプレやスキンにではなく sidebar.incとかに(笑)、なんのためのスキンやテンプレかと思いますが、大抵sidebar.incで設定しないと一番下か一番上かにしか埋め込めないものが多いしLinksなんか触れないので・・・。
実は、↑この辺もNucleusのネックかなと思ったりします。
いっそsidebar.incとかをスキンやテンプレートに自動的に全部埋め込んで編集可能にしてくれないかなと。
元に戻すを押すとスキンの標準に戻るとか・・・。
Nucleusの本体への要望なのかな。そもそもスキン全体のsidebarの一括編集って管理画面上にないですもんね。

でも・・・、自動埋め込みってどうやって、どんなことが出来るのか興味津々です。
スキンを増やしてプラグイン変数を追加する時に、プラグインを追加してその変数を覚えている間はいいのですが、忘れた頃に設定しようとすると、プラグインの管理画面から製作者のサイトへ行って情報を確認しないとバカな私には以前設定したスキンと同様にしか設定できないのです。
で、ちょっと知恵をつけて(?)、プラグインの説明のところに、無理矢理サイトからコピった変数の解説丸ごと埋め込んで参照してます。
著作者の意図が残るようにオリジナル説明の後ろに長々と追加してます。:oops:

思ったのですが(実現可能かとか詳細は考えてませんので思いつきですが)、全てのインストール済みプラグインから変数を抜き取ってスキンごとに追加設定するなんて機能があればいいのにと。
例えば、LinkListの内部で指定処理されているようなリスト表示方法をスキンにあわせて指定出来て、あとは各プラグイン毎の必要な変数をリスト表示させてそれをラジオボタンとかで選んで表示順を設定するとsidebar.incが自動的に書き換わるとか、自動的に書き換わらなくても、コピペしてsidebar.incを書き換えたりインクルードしてるところに張り付けて書換ればいいとか・・・。
こんなことが出来れば、100個あってもすぐにスキンが好みに変えられるし・・・夢のようだ。(笑)
スキンごとの(リスト)表示方法にあわせてプラグイン変数を追加するのも結構大変な作業だなぁと思ったりしてるので、私のようにNucleus初心者向けにこんな機能も欲しいなと思います。

何の話かわからなくなりましたが、本命はスキンチェンジャーですので、お手数をお掛けしますが何卒宜しくお願い致します。

オフライン

#9 2005-09-07 19:53:20

Andy
メンバー
登録日: 2004-03-18
投稿: 1,495
ウェブサイト

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

スキン切り替えプラグイン,作ってみました。
プロトタイプなので,とりあえず動作検証が目的なので
本格的に使うにはいろいろいじる必要があると思います
(できたらだれか引き継いでください)。

これを使うにはコアの編集が必要です。

nucleus/libs/SKIN.php内parse関数の先頭に

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

を加えてください。
プラグインの使用方法はスキンに<%SkinSwitcher%>と入れるだけです。
スキン切り替えはブラウザを閉じるまで有効です。


Attachments:
zip NP_SkinSwitcher.zip, Size: 810 B, Downloads: 958

オフライン

#10 2005-09-08 08:34:02

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

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

試してみましたが、切り替わらないのはなぜだろう...これから調査してきます。
...原因わかりました。javascriptでクッキーセットしてますが、IEではダメでした。firefoxではOKでした。

ま、とりあえず、引き継がせてもらいます。


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

オフライン

#11 2005-09-08 10:28:41

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

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

原因の原因、わかりました。

1)プルダウンメニューが
<option var="5">skinName</option>
と生成されている。
2)これを受け取るとき、optionのvalueは空の値と見なされる。
3)optionのvalueが空の値の場合、
  IEは空の値を取得する
  firefoxは要素の内容(つまり「skinName」)を値と見なして取得する

という事のようで。
で、選択されたスキンを適用するときは、クッキーの値をスキン名として処理しているので、firefoxで動作した様です。

正しく、<option value="5">skinName</option>と書いてやって、スキン取得の際にidで取得するように変更したら直りました。

が、たとえソースを見て初めてわかるとは言え、スキンIDを出力しちゃうのは良くないですかね?
スキン名だけで処理するようにした方がいいかな?
....と思ったけど、htmlspecialcharsで値を与えたり戻したりとか考えるとややこしそうなのでスキンIDで値与えることにします。


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

オフライン

#12 2005-09-08 11:19:52

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

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

一応、修正版です。
表示されているblogのデフォがわかるようにもしてます。


Attachments:
zip NP_SkinSwitcher02.zip, Size: 1.01 KiB, Downloads: 977

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

オフライン

#13 2005-09-08 11:50:16

Andy
メンバー
登録日: 2004-03-18
投稿: 1,495
ウェブサイト

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

バグつぶしありがとうございます。
valueと書いたつもりだったのですが,varだったとは :oops:
valueをセットしているつもりなのにスキン名がクッキーに入っていて
不思議だなあとは思ったのですが… :?

オフライン

#14 2005-09-09 09:19:12

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

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

Andy さんの発言:

valueをセットしているつもりなのにスキン名がクッキーに入っていて
不思議だなあとは思ったのですが… :?

人のミスを晒して性格悪いなぁと思いつつも、ブラウザによる挙動の差異を発見したので書かずにいられませんでした。ごめんなさいです。
でも、やっぱりAndyさんも不思議と思っていたのですね wink

ところで、kinkinさんのお望みの動作をするモノができました。
表示しているblogのadmin権限を持っている人は、「このスキンをこのblogのデフォにセットする」リンクがselect窓の下に現れますので、ここをクリックすれば適用されます。
なんだかとても便利で楽しいです!
使うときはSKIN.phpの書き換えを忘れずに。

ダウンロードはこちら


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

オフライン

#15 2005-09-09 09:21:17

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

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

あとは、select候補に出したくないスキンを指定する管理ページの作成が必要ですね。
feeds方面はスイッチ埋め込めませんから!

...そしたらはっちどん、劇場で使えますよ!新規blog作成しなくてもスキンを放り込むだけでOKですよ!


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

オフライン

#16 2005-09-09 11:10:48

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

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

ってなわけで、選択肢に出したくないスキンを指定することができるバージョンを作りました。

アップグレードする人は、一度アンストールしてからもう一回インストールし直してください。
選択肢に出したくないスキンを選択するのは、プラグインの管理メニューです。
(オプション使うのが面倒だったのでquickmenuにしちゃいました...すいません)

言語ファイル作るほどでもないのでちょこっとだけ英語出ますがわかると思います。

ダウンロードはこちら


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

オフライン

#17 2005-09-10 16:39:13

kinkin
メンバー
From: 兵庫県
登録日: 2005-08-22
投稿: 13

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

Andy さま nakahara21 さま
ありがとうございます。
仕事で出張してた間に欲しいと思っていたものが出来上がっていて感激しました。
これだと、ユーザーに選ばせるって言う使い方も、BLOG管理者のスキン選択スィッチとしても出来て完璧です。

色々とご無理をお願いして本当にお手数をお掛けしました。
BLOGを簡単にイメージチェンジ出来るし、色々な方に使ってもらいたいプラグインです。

オフライン

#18 2005-09-10 22:33:51

はっち
メンバー
From: 岩手
登録日: 2003-11-19
投稿: 251

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

おぉぉぉぉぉぉぉぉぉぉ。すんばらしい!!
劇場、作りなおそっかな big_smile

オフライン

#19 2005-09-12 01:21:40

Andy
メンバー
登録日: 2004-03-18
投稿: 1,495
ウェブサイト

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

いくつかエラーが出ています。
index.phpの48行目<td>が<th>になっています。
59行目,</form>の前に</div>が必要です。
管理画面で
Warning: mysql_result(): Unable to jump to row 1 on MySQL result index 32 in
。。。。。。(略)。。。。。。。NP_SkinSwitcher.php on line 169
と出て,一覧が表示されません。

オフライン

#20 2005-09-12 09:25:07

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

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

とりあえずのbugfixしました。0.5です。
blog別にselect候補を選べるように機能upさせたいので、テーブル構造を変更しました。
0.4以下の人は、プラグインオプションで「テーブルを削除する」にチェックを入れた後、アンインストールしてから再インストールしてください。

ログアウト時のエラー、管理画面で正常出力されないバグに対応した0.6です。
選択肢に出したくないスキンの指定はプラグインの管理ページにて指定できます。
1)グローバル設定として、どのblogでも選択肢に入れたくないスキン(例えばfeed関連)を指定できます。
2)オプションとして、blog別に「このblogを表示している間は選択肢に入れたくない」スキンを設定できます。
なお、あるスキンを選択した状態のウィンドウで別blogにジャンプした場合、ジャンプ先のblogにてこの選択中のスキンがblog別非選択候補に入っている場合は、そのジャンプ先のデフォのスキンで開きます。
(これ、英語で書けるかな。だいぶ不安。伝わらなかったらAndyさんサポートプリーズ)

今まで書いてませんでしたが、このスキンセレクターはクッキーを利用しています。
スキンの選択はそのウィンドウが開いている間のみ有効です。(次回訪問時まで保存はさせません)

★0.7にて発行するクッキーにNucleusのクッキー設定を反映しました。FancyURLでも動作すると思います。


Attachments:
zip NP_SkinSwitcher07.zip, Size: 6.31 KiB, Downloads: 1,334

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

オフライン

#21 2005-09-13 01:46:25

はっち
メンバー
From: 岩手
登録日: 2003-11-19
投稿: 251

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

ver.0.5です。
quickmenuから入ったんですが、

Select skin you don't want to put in choices.
グローバル設定

ってなってて下に何も出てきてないです。うーん。

ログアウトしてから劇場に入ると
mySQL error with query SELECT tadmin FROM nucleus_team WHERE tblog=1 and tmember=: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1


Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /~~/stp.happy.nu/nucleus/libs/MEMBER.php on line 129

って、エラーがでます。
この状態でスキンを選択すると変更にはなるんですが、同じエラーが表示されます。
でも、ログインするとエラーが消えます。

もしかして、スキンっていうスキン全部に<%SkinSwitcher%>を入れなきゃならなかったですか?
とりあえず、劇場新スキンが思いつくまでテストしようって思ってMT系とgrey、今、使用しているスキンである0503には書き込みました。
SKIN.phpに書き込んでからインストールしたのもまずかったでしょうか・・・。
しばらく劇場このままにしておきます。うまく説明できなくって :oops:

オフライン

#22 2005-09-13 08:40:10

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

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

報告をありがとうございまする。

とりあえず、ログアウト時のエラー、確かに確認しました。
なぜ??な状態ですが今から考えます。

それと、管理ページの方、ソースはどうなってますか?
「グローバル設定」の続き。


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

オフライン

#23 2005-09-13 08:44:53

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

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

エラーの原因、わかりました。
NP_SkinSwitcher.phpに1行追加してください。

	function canChange($blogid) {
		global $member;
		if(!$member->isLoggedIn()) return 0;
		return $member->isBlogAdmin($blogid);
	}

↑3行めの1行です。


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

オフライン

#24 2005-09-13 10:14:59

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

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

原因は私の荒いタグの書き方でした。すいません。
bugfixしました。
使い方もちょっと丁寧に書きました。

<!-- l --><a class="postlink-local" href="http://japan.nucleuscms.org/bb/viewtopic.php?p=8569#8569">viewtopic.php?p=8569#8569</a><!-- l -->
をどうぞ。


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

オフライン

#25 2005-09-13 20:38:57

はっち
メンバー
From: 岩手
登録日: 2003-11-19
投稿: 251

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

管理ページの方、0.6にあげたらでました!
ありがとうございまっしゅ! big_smile

オフライン

Board footer