人々が私のサイトに登録するとき、私は彼らに既存のグループに参加するか、それが存在しない場合は新しいグループを作成してほしいです。それらは1つのグループのメンバーのみであり、サイトで使用されるグループタイプは1つだけです。
オートコンプリートウィジェットセットがあり、その機能を変更したいので、エラーメッセージをスローする代わりにグループを作成します。私はog.moduleを変更することは良いアイデアではないと思います。特定の変更を多くのユースケースで機能するように一般的にするのは簡単ではないので、pre-にフックするカスタムモジュールを作成すると思います。ユーザーエンティティの機能を保存し、存在するかどうかを確認します。存在しない場合は、グループを作成してメンバーシップを作成しますか、それとも別の方法がありますか?
分類法をグループコンテンツとして使用し、ユーザープロファイルの用語参照オートコンプリートフィールドを使用してみましたが、現時点ではogが分類法で完全に機能していないようで、添付されたフィールドデータが分類法に保存されないという他の問題が発生しましたノードタイプをグループコンテンツタイプとして使用する方法に戻ります。
hook_user_insert()
は、プロセスのトリガーが遅すぎます。 hook_form_FORM_ID_alter()
を使用して、オートコンプリート検証コールバックを変更し、カスタム関数を使用しました。
_ function MYMODULE_form_user_register_form_alter(&$form, &$form_state, $form_id) {
$form['group_audience']['und'][0]['gid']['#element_validate'][0] = 'MYMODULE_field_audience_autocomplete_validate';
}
_
MYMODULE_field_audience_autocomplete_validate()
は、エラーをスローする代わりにグループを作成することを除いて、元の関数と同じです。
あなたの大前提は健全だと思います。代わりに hook_user_insert() を使用したくなります。これは、ユーザーが作成される前ではなく、作成された後に呼び出されます。
OG7に必要なフックはすべて、グループのチェックと作成、およびユーザーの挿入にあります。