会員登録時に複数ページで登録

Events happening in the community are now at Drupal community events on www.drupal.org.
Anonymous's picture

以下のモジュールを使わしていただいているんですが、
トップページに入力フォームが集まってしまい非常に見づらいです。

AutoAssignrole
AccountProfile
Legal
Contentsprofile
Profile

会員登録時にフォームの内容を複数に分けて登録したいですが、
何か良い方法、モジュール等はありますでしょうか?

Comments

dokumori's picture

ユーザー登録フォームを複数のステップに分けるにはカスタムモジュールが必要になります。あとはユーザー登録フォーム用のテンプレートを作成してレイアウトを変更したり、CSSでスペースを調整することも可能です。

設定だけで可能なのは、legalモジュールの表示方法をpage linkにすることが考えられます。

質問とは直接関係ありませんが、profileモジュールと content profileモジュールを併用するのは、特別な理由が無い限り避けた方が良いと思います。

ありがとうございます、dokumoriさん!

jun784's picture

ありがとうございます、
よくよく見るとcontent profileはprofileへの依存関係が無いんですね。

multi page regist でグーグルから引っ張っていたんですが、

http://drupal.org/node/743606

を見つけました。
ここでhookが書かれているんですが、すぐ下のコメントで
WorldFallzさんがモジュールのみで表示する方法があるよ。と言ってる気がするんですが、これはできるのでしょうか?

Have you considered doing this with existing modules? This can be done pretty simply with content_profile, autoassignrole and optionally rules, content_complete, and pageroute.

これはコンテンツプロフィールをpagerouteで進めていくのでしょうか?
pagerouteもインストールしてみましたが、
pathの指定、add pageをしてもリンクが反映されず、悩んでいます・・・。

なるほど、pageroute

dokumori's picture

なるほど、pageroute モジュールがありましたね。pagerouteモジュールはノードフォームのみに利用可能なようです。content profileはノードを作成するので論理的に可能だと思いますが、僕自身はこの方法で組んだことがないので詳細は分かりません。

"pageroute multistep registration" で検索したら、このリンクが見つかりました:
http://drupalsn.com/learn-drupal/drupal-questions/question-4436

pageroute と profile_setupモジュールを組み合わせているとのことです。
英語ですが、pageroute モジュールの利用に関する説明があります。
http://drupalsn.com/learn-drupal/drupal-questions/question-4436#comment-...

これも英語ですが、pagerouteのドキュメンテーションはここにあります:
http://drupal.org/node/666504

pagerouteの使い方がわかりません

jun784's picture

dokumoriさん、利用方法までありがとうございます。

ご紹介いただいたサイトの説明どおり、

profile_setup
pageroute

をインストールし、

pageroute -> add page から profile_setup を選び edit を選択しページ設定しましたが、

リンク先に行くと
「アクセスは拒否されました
このページにアクセスする権限がありません。」

と表示され、動作しません。
他の設定も試してみましたが、だめでした。

profile_setupの方でpagerouteの選択もしています。

http://drupalsn.com/learn-drupal/drupal-questions/question-4436#comment-...
この方も同じ問題かと思いましたが、解決策がわかりませんでした。

qchan's picture

アクセスを拒否されたのは、どのロールでしたか?
profile_setupとPage routeで設定したコンテンツタイプに、そのロールに対してアクセス権限を設定されているかを権限ページから確認してみてください。

また、content profile か コアのprofile モジュールのどちらかはEnableになっていますか?

ありがとうございます、qchanさん

jun784's picture

ありがとうございます、

管理者権限でアクセスしてみました。
管理者権限だと全てアクセスできる認識なのですが、別に設定があるんでしょうか。

content profile はenableになっておりますー。

試しに、
node display にて どのロールでもアクセスできるノードを指定します。
直接ノードのURLをたたくと閲覧できますが
pagerouteのURLから飛ぶとアクセスが拒否されてしまいます。

http://example.com/node/1234
OK

http://example.com/pageroute/1234
403 error

qchan's picture

User1だとしても、ログイン済みのユーザーがレジスターページを閲覧すると
アクセス拒否されてしまいます。
別のブラウザなどで未ログインユーザーとして試してみてはどうでしょうか。

ありがとうございます、qchanさん!

jun784's picture

ありがとうございます、まさにその通りでした。

pageroute の
アクセスコントロールにて認証済みユーザーをONにして、
URLエイリアスを user/* から変更したところ、

無事アクセスができました。

実際に、Pagerouteを使って複数ページの登録ができるか試してみます。

Pagerouteから新規ユーザーの登録はできない?

jun784's picture

以下の手順でpagerouteを使って新規ユーザーの複数ページの登録を実現しようとしましたが、
うまく新規アカウント追加ができませんでした。

・moduleのインストール
pageroute
profile_setup
team_of_use
content_profile

・pagerouteの設定
page1. term_of_useにて設定した利用規約を設定
page2. content_profile edit
or
page2. node add -> content_profile
page3. profile_setup edit
or
page3. user/registerへリダイレクト

1.2は行けますが、3でユーザー編集画面になり登録できませんでした。
また、リダイレクトした場合、2で投稿したプロフィールが関連付けされませんでした。

連続で質問申し訳ありません。

jun784's picture

pageroute は諦めてhookで投稿する方法を模索していた所、
タブでフォームを複数に分けているサイトを発見いたしました。

http://artsfestivals.co.uk/user/register

確認したところ tabs を使用しているみたいでしたので

tabs
cck fieldgroupe tabs
quicktabs
form block

を使って試してみましたがうまく実装できません・・・。

page2. content_profile

qchan's picture

page2. content_profile edit
or
page2. node add -> content_profile
page3. profile_setup edit
or
page3. user/registerへリダイレクト

の流れはモジュールのReadmeやTutorialに沿ったものでしょうか。
registerへ行ってからしかユーザー登録作業は始まらないので、

1.2は行けますが、3でユーザー編集画面になり登録できませんでした。
また、リダイレクトした場合、2で投稿したプロフィールが関連付けされませんでした。

はたぶんそうなると思います。

モジュールのIssueページを検索して近い質問を探してみるとヒントが見つかるかもしれません。

日本語で使った方からの回答がすぐもらえるようにコミュニティを大きくしていきたいですね。

助かります、qchanさん

jun784's picture

モジュールのIssueページを検索して近い質問を探してみるとヒントが見つかるかもしれません。

issueページなるものがあるんですね、
探してみます!

Drupalの知名度は日本ではかなり低いですが、
これほど洗練されたCMSは他に無いと思います。

徐々にコミュニティは広がっていくと思います!

WebofromとPanel

kyotaro's picture

これはニーズはありそうですが、中々難しそうですね。
僕自身必要になったことがないもので実際に試したことはないのですが、
PHPを結構書くことになりますが、WebformとPanelsで出来るんじゃないのかなと思いますので
想像に基づく方法を描きます。

1.まずパネルを作りパスを設定しておく。コンテンツは後ほど。

2.Webformで規約用のフォーを作る。高度な設定に、

$_SESSION['nantoka'] = $form_state['values'];

といったことを記述して、フォームの内容をセッションに記録する。
ジャンプさきURLは、上記のパネルに設定

3.Webformでプロフィール用のフォームを作り、高度な設定に

$_SESSION['nantoka'] = array_merge($_SESSION['nantoka'], $form_state['values']);

で、さらにフォームの内容を記録

4.ユーザー登録用のフォームもWebformで作る。
5.汎用のコンテンツタイプにPHPフィルターを適用して、その中で、ユーザー登録をして、プロフィールを登録する・・・(user_save & node_save)保存後も上記のパネルにリダイレクト。
6.パネルの4個のバリアントを作って、それぞれのパネルコンテンツに上記のノードを格納
7.それぞれのバリアントに、コンテキストを作って、$_SESSIONに必要な情報が格納されているかどうかで、どのバリアントを表示するか決定

と、書いていてこりゃ大変だな・・・・と気付きました・・・
ご参考まで・・

追伸:
これの唯一の利点といえば、マイナーなモジュールを使わなくてもよいということぐらいです^^;

kykさん、ありがとうございます

jun784's picture

kykさん、ありがとうございます。

せっかく回答を頂いたのに、ずいぶんとご無沙汰して申し訳ありません。

複数登録ページはModule群の組み合わせはあきらめ、
直接フォームをhookすることで対応しました。

http://drupal.org/node/825488

また、ひと段落しましたら
Multipage registration なる Moduleを作りたいと思います。

日本 コミュニティ: Drupal Japan User Group

Group organizers

Group categories

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: