特定のroleのユーザーのページを自動生成

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

こんばんは、
私、大学の研究室のページを作ろうとしている者です。
研究室の学生の研究成果を簡単に紹介していくためのページで、基本的な機能はできあがってきているのですが、
「登録したユーザーの情報を自動で生成するページを作れないか」という風に頼まれたことで、現在悩んでいます...。

現状、ユーザーを登録するごとに以下の4つの手順を踏んでいます。
[1]ユーザーを新規登録(プロフィールを入力)
[2]ページを新規作成、URLエイリアスを入力(連番)
[3]プロフィールを表示するブロック、投稿した記事一覧のブロックを作成、
 表示するページを指定
[4]ユーザー一覧ページにて、htmlベタ書きでユーザーを追加

これを、[1]だけの作業で、各ユーザーのページを自動で作成してくれるようなシステムを作りたいのですが、
ユーザー登録のタイミングで新規のページを作成したり、ViewsとPanels、Blockを新規で作ったり...ということをどうやって自動化していいか検討がついていない状況です。
それともテンプレート的なページを作り、URLを見て表示するデータを変えるようにすればいいのでしょうか?

どなたか良いアイディア、方法をご存知の方、ご協力をお願いします!

Comments

nobuyuki3's picture

SNSみたいにユーザーページで良かったでしょうか。
以下、Drupal7におけるユーザーページで私のやっている方法です。

ユーザーごとの投稿履歴はViewで実現できます。
USER ACTIVITY PAGE USING VIEWS IN DRUPAL7.mov
http://www.youtube.com/watch?v=iWWMvMPFS1Q

これと同じ感じですが、各ユーザーのブロックに関しては、Context filterを使って「名前、アイコン、プロフィール」表示させます。ViewのContext filterの使い方が少し面倒ですが、投稿履歴と同じでユーザーごとにブロック表示が可能になります。

私の場合には、Display suitと組み合わせて各ユーザーのプロフィールページ(ページ、ブロックともに)を作っています。そうする事で、レイアウトが自由にできるだけでなくて、プロフィールページの方にブロックを入れられる(ここに投稿履歴を入れたりできる)ので、便利です。

プロフィールにどのモジュールを用いるかによるかもしれません。
私は、Profile UXを使ってプロフィールページ作っています。
http://drupal.org/project/pux

後の管理を考えても、シンプルな方法だと思います。

Drupal7をお使いでしたら

kenppx's picture

一応確認なのですが、各ユーザーのプロフィールページにすべての情報を集約させますか?
それか、別ページを作ってそこに研究成果などを表示させますか?

①ユーザーはプロフィールページのみを持っていて、そこにプロフィールと研究成果などの情報など
 すべてを集約する場合。

②ユーザーはプロフィールページとは別に、研究成果などを表示するページを持っている場合。

①の方法でしたら、プロフィールに必要項目をフィールドで追加してpanelsでプロフィールページを書き換えて、そこにviewsのcontextual filter(urlを見て見せるコンテンツを動的に変える方法)で項目を
必要な形で見せてやる方法はいかがでしょうか?

②の方法でしたら、とりあえず新規登録のタイミングで自動的に別のNodeを作る必要がありそうですね。
そうなると、rulesモジュールを利用してNodeを自動作製するのはいかがでしょうか?

①、②どちらがご希望に近いでしょうか?

感謝です!

mi041302's picture

nobuyuki3さん、kenppxさん、
お返事ありがとうございます!

「Context filter」の使い方がよくわかっていないので、
勉強の必要がありそうです
Display suit、少し見てみたのですが便利そう! 使っていきたいです

ただ、今回の場合、
kenppxさんの
②ユーザーはプロフィールページとは別に、研究成果などを表示するページを持っている場合。

こちらが理想に近そうです。
Rulesモジュールって、何でもできそうですね。
まずRulesモジュールで、特定のアドレスを持つページを
自動生成するところまではいけました。

現状、
ユーザが投稿したファイルの一覧ブロックを作成し、表示したいと思って
奮闘していたのですが、
RulesのActionの「Add Vies loop」から、
事前にViewsで作っておいた一覧をページに組み込むやりかたがわかりません...

1.ユーザページに、Viewsのブロックを表示する方法
 →Rulesモジュール、Viewsモジュールどちらを使えばいいのでしょうか?
2.ユーザーごとにViewsの内容を変える方法
 →ユーザーごとに表示を変える条件分岐はどの画面の何をクリックすれば
  いいのでしょうか...?

重ねての質問になりますが、ご協力をお願いします...

Rules使わなくても良いかもしれません。

kenppx's picture

②の様にプロフィールページを複数作る方法ですね。了解しました。
先日はRulesと書きましたがRulesを使わなくても、もっと簡単にできるのではないかと思いました。
すみません…。Rulesはとてもイケてるモジュールですが、忘れてください。

profile2モジュールを利用してはいかがでしょうか?
http://drupal.org/project/profile2

profile2モジュールを使うとプロフィールページが複数作れますので、簡単にご希望を実現出来そうです。
複数作ったプロフィールページに、お好みのフィールドを加えてあげればプロフィールページとは
別に研究成果のページも作れちゃいます。

profile2で作ったプロフィールページはnobuyuki3さんが挙げて下さった、
Display suitモジュールで操作できると思います。

まとめますと、profile2モジュールで作ったページをdisplay suiteモジュールでレイアウトする。
profile2モジュール + display suiteモジュールの組み合せを是非お試しください。

余談ですが、私は以前にdisplay sutieモジュールと似た機能を持つ、panelsモジュールで
profile2で作ったページのレイアウトを操作しようとしたのですが、できませんでした。
page managerモジュールの問題(?)で現時点ではどうもpanelsでは操作出来ないようです。
どなたか、panelsでprofile2モジュールで作ったプロフィールページを編集出来た方が
いましたら情報を頂けると幸いです。

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

Group organizers

Group categories

Group notifications

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

Hot content this week