Posted by sfinity on September 25, 2012 at 3:05pm
はじめて質問させて頂きます。
半年ほど前からDrupal7を使用しWebシステムを構築しています。
日本での情報が少ない中、このコミュニティは凄く貴重なコミュニティだと思います。
(まだ半年ですがDrupalの設計思想に感動しています)
早速の質問で恐縮なのですが、CCKのリストフィールドにユーザ一覧を表示させて
メールアドレスを選択させたいと考えています。
いろいろと調べ、Viewsでリストを作成し、それをCCKへ設定できるような感じなのかな?とまではわかったのですが、どのモジュールでどのように行ったら良いのかがイマイチ判りませんでした。。
どのような方法でも良いので、CCKフィールド(Edit画面)に、ユーザ一覧の名前(label)をリスト表示し、それを選択するとメールアドレス(value)が設定できるような方法は無いでしょうか?
すみませんが、ご教授頂ければ幸いです。

Comments
Formatterで詰まりそう
方針としては、Referenceモジュールか Entity Referenceモジュール
を使ってEdit画面からUserを紐付けて情報を取ってくることになります。
これは問題なくできるはずです。
ただ、問題は表示の方です。
ぱっと質問を見たときは簡単じゃないかと思って、User referenceを試してみましたが
ユーザーページへのリンク付きのユーザー名を表示するのが基本で細かなフィールド指定が出来ないですね。
Emailだけを表示させることは標準では難しいかも知れません。
カスタムでFormatterを作ればいいのか、別の方法があるのか、どなたかわかる方おられたらお願いします!
qchanさん
qchanさん
reference関係のモジュールというのもあるんですね。
(時間がある時に、どのようなモジュールか試してみたいと思います)
残念ながら、表示が難しいのですね。。
ありそうなモジュールですが、難しいのですかね・・・
ご連絡ありがとうございます。
何点か確認です
Entity ReferenceとViewsだけで開発なしでおそらく実現できる気がしますが、ちょっと確認させてください。
これは、リスト表示する内容はユーザー名という意味でしょうか?また、「メールアドレスを設定できる」というのは、ノードのView画面に該当ユーザーのアカウント編集ページへのリンクが表示されれば良いのでしょうか?
blauerbergさん はい、リスト表示する内容はユーザ
blauerbergさん
はい、リスト表示する内容はユーザ名を想定しています。
そして、選択したユーザ名のvalueをメールアドレスにしたいと考えています。
これは違っています。
わかりにくい説明で申し訳ありません。
イメージは一般的なメーラにあるような宛先を選択する動作を考えています。
この宛先選択をリスト表示でEdit画面のCCKフィールドのリストタイプで設置
したいと考えています。
現在行っている内部処理をご参考までに記載します。
特定のノードで「依頼」を選択して保存を行うと、Rulesモジュールを使用してログインしているユーザと同じグループに設定されているメンバー全員にメール送信している状況です。
これを、ユーザを指定して送信できないものかと考えている状況です。
選択されたユーザーのメールアドレスをRulesに渡したいという事ですね
ノードのView画面で何かしたいわけではなく、Edit画面でノードを保存後に
Rulesに選択されたユーザーのメールアドレスを渡したいという事ですね。
Entity Reference でフィールドを作った場合、保存されるフィールドの実体は
テキスト型の値ではなく、Entiry(この場合User Entiry)への参照になります。
ので、簡単に実現するなら、Rulesで宛先の設定にPHPコードの結果を使えますので、$nodeオブジェクトから
のようにEntity(User)のメールアドレスを引き出すのが楽だと思います。
一応、ノード保存 -> メール送信までは動作も確認しました。
開発なしでいけるかも、と思いましたが、この方法だと4行ですがPHP Snippetを書く必要がありますね。
また、1行目のアクセス方法は微妙です。Drupal 7で追加されたAPI経由でユーザオブジェクトを取得すべきですね。
blauerberg
blauerberg さん
コードまで書いて頂きありがとうございます。
さっそく試してみたいと思います!(来週になるかもしれないですが・・・)
Drupal7について質問でき、なおかつ日本語でやりとり出来ることに
感動しています(T_T)
Rulesモジュールも本当に凄いと思います。
なによりPHPコードをかけるところも便利ですよね。
早く試してみたいです。
できました!
blauerbergさん、皆様、
ありがとうございます!
Entity ReferenceモジュールとRulesのPHPコードの組み合わせで
実現できました。
実際には、複数選択とし、PHP内でfor文にて取得しています。
やはり、Drupal凄いです。
参考まで
Organic Groupのビデオ見ていて思ったのですが、
Eva Modulesとかどうでしょう。
http://drupal.org/project/eva
Viewで作成したものをAttachでFieldに取り込めるというものです。
ViewをFieldにAttachできるというものです。
それにViewのBulk Operationで、ユーザーを選択してメール送信動作加えれば
http://drupal.org/project/views_bulk_operations
Fieldにて、Viweを使ったユーザー選択 ->メール送信も可能なような気がしてきます。
試してないので、EVAでそのようにできるか分からないのですが、もしかしたら、できるかもしれません。
ご参考までに。
nobuyuki3さん 情報、ありがとうございます。 EV
nobuyuki3さん
情報、ありがとうございます。
EVAもインストールして試そうと思ったのですが、イマイチ使い方が判らず
断念しました。。
Entity Reference+Rules(PHP)にて実装できました。
ありがとうございました。