1

アイデアは、新しいユーザーが追加されたときに次のことを達成することです。

  • 新しいグループ (OG) を作成する
  • それを保存
  • ユーザーを保存済みグループ (OG) に追加
  • グループの役割 (OG) を割り当てる

オーガニック グループでルールを使用しています。グループの役割を割り当てることを除けば、すべて問題ありません。一般的なシステムの役割を追加できることは知っていますが、グループ (OG) の役割をプログラムで割り当てる方法を知っている人はいますか?

どんな助けでも大歓迎です

4

3 に答える 3

2

ルールで次のカスタム php アクションを使用して、ユーザーをグループに追加し、OG ロールを割り当てます。

OG ロール番号は、admin/config OG エントリから表示されるように、OG ロールの順序で表示されます。

global $user;

// Load the user we want to add to the group
$account = user_load($user->uid);    

// Add the user to the group - hard code group 18 which is my group as cant 
// get PID from Ubercart order, to pull gid from nid. User, current user, active, 
// etc., all default in 2nd array() param to og_group.
og_group(18);

// Changes the users role in the group (1 = non-member, 2 = member, 3 = administrator member, 4 = Forum Administrator)
og_role_grant(18, $account->uid, 2);

OG ロール 4 (フォーラム管理者) は、私が作成したカスタム OG ロールです。また、「メンバー」(2) がデフォルトだと思いますが、これを入れたのは、将来必要になった場合に他の OG ロールを割り当てる方法を覚えておくためです。

残念ながら、私はPHPの第一人者ではありません.注文したUbercart製品のノードからpidを取得する方法をまだ考えていないので、そのgidを取得できるため、18のgidをハードコードすることはできません.

上記の抜粋されたコード (主に og_role_grant) がルール アクションのカスタム php コード スニペットとして機能することを願っています (ルールがこれを行うため、上部と下部に php タグを含めないことを忘れないでください)。

上記のように、注文した ubercart 製品の gid を取得するという私の問題について何か考えがある場合は、お気軽に共有してください。:)

幸運をお祈りしています

于 2013-06-13T15:06:18.287 に答える
1

この機能を Organic Group Rules 統合に追加する Organic Group パッチが提案されています。

パッチはこちらにあります: https://drupal.org/node/1327326

Grant および Revoke ロール アクションを追加します。

于 2013-09-07T15:59:41.067 に答える
0

og_role_grant ($group_type, $gid, $uid, $rid)を使用して、ロールをユーザーに有機グループにプログラムで割り当てることができます。

これをルールで使用するには、hook_rules_action_info()を使用してカスタム アクションを定義できます。

于 2015-07-05T08:29:49.957 に答える