Posted by KRider on April 8, 2015 at 1:11pm
こんばんは
タイトルの通りですが,あるコンテンツタイプを,OGを用いてグループコンテンツとしています。
そのコンテンツタイプで作られたAというコンテンツがアップデートされた場合,Aコンテンツの所属しているメンバーのみに,アップデートされたことをメールで送付したいと思っています。
OGをインストールした段階で,それらしいrule(rule名:OG new content notification)ができており,何とか改変して使えないかと試行錯誤しているのですが,なかなかうまくいきません。(例.所属していないユーザにまでメールがいく等)
皆様,どうかご教授ください。m(T_T)m
Comments
OG group content
OG group content notificationの定義を見た感じだと、更新されたノードのgroup audienceからgroup memberを取得してメールを送信しているようなので、期待通り動くように見えます。
今使っているRulesの定義をエクスポートした結果を貼ってもらえれば何かわかるかもしれません。
私も rule ( OG new content
私も rule ( OG new content notification ) を見てみましたが、ざっと見たところでは blauerberg さんが言われているとおり本来 KRider さんのご期待どおりの動きをする rule のようです。これがうまく動かないということはバグで何らかのエラーが出ているのではないかと思います。 blauerberg さんがおっしゃるところ以外にログレポートを有効にして( /admin/config/workflow/rules/settings )ログを見られると問題の原因がわかるかもしれません。
返信ありがとうございます。 一旦rulesを初期化して,ロ
返信ありがとうございます。
一旦rulesを初期化して,ログを取り直してみました。
初期状態ではconditionに以下のようなエラーが有ります。
Entity is group content
Parameter: Entity: [node]
エラー: The data type of the configured argument does not match the parameter's entity requirement
これを以下のように変更した状態でイベントを起こしました。(actionは初期値のまま)
Entity is group content
Parameter: Entity: [node:members:0]
このイベントのログは以下のようになりました。
Rules evaluation log-Close all-
" Reacting on event After updating existing content.
0 ms Reacting on event After updating existing content.
7.405 ms Evaluating conditions of rule OG new content notification. [edit]
19.129 ms The condition og_entity_is_group_content evaluated to TRUE [edit]
19.137 ms AND evaluated to TRUE.
" Rule OG new content notification fires. [edit]
0 ms Rule OG new content notification fires.
0.087 ms Evaluating the action og_get_members. [edit]
2.081 ms Unable to get variable group_members, it is not defined.
4.504 ms Unable to evaluate loop. [edit]
4.545 ms Rule OG new content notification has fired.
23.713 ms Finished reacting on event After updating existing content.
ここから何かわかりますでしょうか・・・?
エラーメッセージをお出しいただきありがとうございます。私の
エラーメッセージをお出しいただきありがとうございます。私の環境でも試してみて、ざっくりとですが理解できたように思います。
こちらの変更を行うとロジックがおかしくてなってしまいますので、この変更は行わず condition はデフォルトのままで使ってみてください。
condition に出るエラーについては、私の環境で再現したところ、 group content であるコンテンツタイプがひとつも存在しなければエラーのままですが、いったん group content であるコンテンツをひとつでも作成するとエラーがなくなりました( group content がないために出ているエラーのようです)。
その後、実際に group content のコンテンツを投稿すると問題なくメール送信されるようになりました。
ご参考になればと思います(ざっとやっただけですのでもしかしたら間違っている部分があるかもしれません・・その場合はすみません・・)。
なるほど 確かにコンテンツタイプの設定欄からGroup
なるほど
確かにコンテンツタイプの設定欄からGroup Contentにチェックを入れたら,rulesのエラーメッセージがなくなりました。
またイベントの発生時(私はグループコンテンツの編集/更新をイベントとしています)にコンテンツのGroup Audienceフィールドに,編集/更新するコンテンツを選択することによって,該当コンテンツのOGメンバーにメールを送ることが確認できました。
このGroup Audienceフィールドを選択せずにメールを送ることは可能でしょうか?
ユーザに選択させたくない項目なので・・・
質問の連投になってしまい申し訳ありませんが,よろしくお願いします。(T_T)
問題解決されたとのことで何よりです。 このGroup
問題解決されたとのことで何よりです。
そうなんですね。こちらは「コンテンツ投稿時に【 Group Audience 】というフィールドの設定ができるが、これに何らかのデフォルト設定を行ってユーザが選択できないようにされたい」という理解でよろしいでしょうか?
KRider さんがコードを書かれるかどうかで、採るべきアプローチが分かれるように思います。
KRider さんがもしコードを書かれるのであれば、たとえば以下の方法で実現できるかと思います(おそらく、必要なコードもそれほど多くありません)。
コードを書かれないのであれば・・・すみません、ご要望のことを実現するモジュールがあるかどうかパッとはわかりません( 2 の部分については、もしかしたら以下のモジュールが使えるかもしれません)。。
Field default token
https://www.drupal.org/project/field_default_token
ご参考になればと思います。。
そういうことですね。 やはりコードを書く必要がありましたか
そういうことですね。
やはりコードを書く必要がありましたか・・
承知しました。
ご助力ありがとうございました!