ユーザ登録情報カスタマイズモジュール

2007/05/29 | XOOPS

その昔XOOPSをインストールした際、ユーザの登録情報をカスタマイズするといえば「白扇」だった。「今はさぞ進化したことだろう」、と思ったら今でも白扇だった。
何でも、白扇の新版「新扇」というのが開発中らしいが、進捗はどうなっていることやら。既に開発期間も2年ほど過ぎようというのに、いまだに情報があまりない。おそらくまだ出来上がっていないのだろう(作者さん、がんばって!)。
いちおう「ミニ白扇」なるものもあるらしい。まぁ、これもおそらく白扇と似たような感じなのだと思う。どちらを使うかはまた後日検討して決めるとする。
現在運営中のサイトの一つが、初めてmojaviを使って構築したサイトなのだが、タコなプログラムを書いてしまったので、リニューアルを検討中。もっとも・・・mojaviの勉強のために構築したのだから、ずいぶん役にはたった。リニューアルのためのフレームワークを何でやるか、XOOPSかcakePHPなのだ。もう少し研究して、XOOPSが無理っぽいようだったらcakePHPで。ちょっとがんばってみる。

XOOPS本「Customizing Xoops」

2007/05/28 | XOOPS
あまり買うつもりもなかったのだが、仕事で本格的に使う必要もあり、少し不安に駆られたのでXOOPS本を買った。今回買った本はこちら。

「Customizing Xoops」

なぜこの本を買ったかというと・・・実は結構迷った。その理由はどれもイマイチに思えたから、ということもあるし、書いてあるネタはウェブをあさればすぐに出てきそうな話題ばかりだから。とは言っても不安を解消しなくてはいけないし(笑)、元来アナログな自分なので、本屋で立ち読みし、Amazonでレビューをしっかり読んで結局この本を買うにいたった。
本の内容としては「まぁまぁ」「悪くない」というレベルと思う。CMSでもブログでもそうだけど、フレームワークを使ってシステムを構築すると、ファイルが複数に分割されてしまいがちだけど、この本は説明が(ばか)丁寧で、デフォルト設定のテンプレートってことで、その記述までも掲載されている。ある意味紙面の無駄だけど、画面で見るよりもやっぱり紙だよね。見やすい。

既存のモジュールに関する説明だが、この本には期待しないほうがいい。だってそんな記述はほとんどないから(もちろん最低限なことはかいてあるけど)。主に自分でモジュールを作ったりする人向け、というコンセプトなのだと思う(まぁ、タイトルどおりなんだが)。
それでもモジュール「TinyD」(静的ページ作成モジュール)などは詳しく書かれているので、自分にとっては非常に有用な書籍になりそうだ(まだ全部読んでないんでね)。
ということで、個人的にはかなりいい本だと思う。
悪い点としてあえてあげれば、無駄な紙面が多い(最初のカラーのXOOPSサイトカタログとか)こと。だいたいハックするための本なんだから、無駄な記述はいらんだろうと思う(初心者向けじゃないんだからさ)。

XOOPSのインストール

2007/05/27 | XOOPS

XOOPSをインストールするのはもう何年かぶりとなる。前回インストールした際は、インストーラがまだまだいけてなくて、途中で真っ白な画面表示になったりしてトラぶったが今回はこなれているだろうか、と少し不安を持ちつつインストールを開始した。ここにはインストールした手順をメモしておく。

(1) 設置場所の準備
専用のドメインなりサブドメインを用意してそのルートディレクトリにインストールすることにした。基本的にXOOPSで全てまかなうのが常套だと思うので、サブディレクトリに設置するといった、イレギュラーな処理はすべきでないだろう。

(2) データベースの用意
XOOPSで使用するMySQLデータベースをあらかじめ用意しておく。

(3) FTPする
XOOPSからアーカイブをダウンロード、解凍し、出来上がったファイルのうちhtmlディレクトリ内のファイル全てをサーバ上のドキュメントルートディレクトリにアップロードする。

(4) ブラウザでアクセスする
ドキュメントルートに設置しているので、以下のようにアクセスしてみる。
http://xoops.example.com

(5) 最初の画面
ここでインストールで使用する言語を選択する。通常なら迷わずjapanese(日本語)を選択する。

(6) 説明画面がでるので必要に応じて読んで次に進む

(7) アクセス権チェック
アップロードした際には特に何も設定しなかった場合、アクセス権限のチェックでひっかかる。ここで出た指示に沿ってアクセス権限を設定する。ここで設定するファイルは4つ。
○uploads/ ウェブからファイルをアップロードした際に、ファイルがここにおかれる
○cache/ 諸般キャッシュがここに作成される
○templates_c/ XOOPSではSmartyを使用しているので、コンパイル済みファイルの設置場所としてこのディレクトリを使う
○mainfile.php 各種設定などが書き込まれる

(8) 正しく設定すると次に進めるようになる

(9) データベース・パスの設定
作成したデータベースへのログイン情報などを設定する。大抵はデータベースのホスト名、ユーザ名、パスワード、データベース名を入力するだけでいいはずだ。

(10) 設定内容の確認画面が表示される

(11) 設定内容がmainfile.phpに書き込まれる

(12) パス・URLの確認が表示される

(13) データベース設定の確認が表示される

(14) データベースへの接続がチェックされる
ここまできてようやくデータベースへの接続がチェックされる。本当ならmainfile.phpへデータベースへのログイン情報を書き込む前にチェックすべきなのだが、まぁ、仕方ない。問題なければ次に進む。

(15) 必要なテーブルがデータベース内に作成される
(14)で問題なければ、ここも問題はないだろう(よほどちゃんとアクセス権限を設定したりする場合はここでエラーが出るかもしれない)。

(16) 管理者情報の入力
管理者ログインに関する情報を設定する。

(17) 管理者情報がデータベースに書き込まれる
データベースに書き込まれた内容が確認として表示される。あと、一部設定ファイルにも書き込まれるようだ。

(18) インストール完了
ここまでくればインストールが無事完了、となる。

しかし入力内容の確認がかなり冗長で、ちょっとうざいかもしれない。そのあたりがこなれてくるといいなと感じた。ちなみにインストール直後は、非ログイン状態だと何も表示されない。それはデフォルトの設定が、非ログイン者に対しては全て非表示になっているからだ(親切にデフォルトでも何か表示されたほうが普通の人にはわかりやすいのに・・・)。ここから徐々にちょっとずつ設定していくことが必要になる、ということだ。

さて第一段階終了。次のステップもまた逐次ここでメモしていく。

JavaScriptのクロスドメイン対策

2007/05/26 | JavaScript/Ajax

JavaScriptで異なるドメインに対してリクエストを送ることはできないと書いたけど、コメントをもらって回避策があることを知った。JavaScriptのdojoというフレームワークを使って回避できるということだったが、なにぶんJavaScriptにうといので、もろもろ検索して探ってみた。JavaScriptのフレームワークといえばprototype.jsがメジャーと思いそちらでも調べてみたら、やっぱりできそうな感じ。ん〜、やっぱりフレームワークを少しかじらなくてはいけないのか、と思ってたらいい検索キーワードに出会えた。

「クロスドメイン」

一般的には「JavaScriptではクロスドメインな制御ができない」とでもいわれているようだ。そこでこれをキーワードにいろいろと検索してみた。それで見つけたのがこのページ

理屈としてはこんな感じ。
○JavaScriptの外部スクリプトならどこからでも呼び出せる。
 <script src=”http://example.com/hoge.js”></script>
○これをボタンクリック時などに実行できればいい。
○普通はHTMLが読み込まれた時点でのみ、ファイルの読み込みされるのでタダ記述するだけではだめ。
○イベントドリブンで処理する。以下のスクリプトで動的に読み込ませることができる。
 var s=document.createElement(‘script’);
 s.src=”http://example.com/hoge.js”;
 document.body.appendChild(s);

これでいい。おそらく戻り値が必要な場合はJASON形式で返してやれば何とかなるのだろう(今回はリクエストさえ送ることができればいいので省略)。これでずいぶんすっきりした。

しかしJavaScriptのフレームワーク、奥が深い。まぁGmailでもGoogle Mapsでもそうだけど、サーバサイドプログラミングばっかりやっていた人間にとっては驚くほど魅力的だ。JavaScript・・・できなきゃだめだろうな。

「書き込みできません」って?

2007/05/25 | JavaScript/Ajax

「AJAXを使ってデータをPOSTし、非同期通信して、結果を返してinnerHTMLで表示」というルーチンを考え、実際そのようなプログラムを書いてみた。
テストをする段階になって、いろんなサーバで試してみたのだが、うまくいくときといかない場合がある。なぜなぜ???。
エラーが出るときはIEで「書き込みできません」というメッセージが出る。これはどうも外部ホストと通信しようとした際に表示されるエラーらしい。つまり、読み込み元のHTMLがおいてあるホストと異なるホストへ通信しようとするとエラーが生じることがわかった(セキュリティ上の理由で)。
つまりHTMLファイルのURLホスト名と、呼び出すJavaScriptの配置してあるホスト名が違うとエラーが出るのだ。むやみに外部のホストにAJAXでデータを送信させない、ということだ。
ちなみにこの問題は回避できない。まったく違う代替案を探る必要がある。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net