web-dev-qa-db-ja.com

特定のスペースでのみ機能を利用できるようにするにはどうすればよいですか?

Drupal 6個のオープンアトリウムサイト(つまり、機能、スペース、オーガニックグループ))を実行している場合、ほんの一握りの数百のグループにのみ適用されるカスタム機能をいくつか作成しましたサイトに。

現状では、「機能のカスタマイズ」構成画面にall機能が表示されます。これには、意図的にいくつかの特別なグループのみに制限したい機能も含まれます。

特別なグループでこれらの機能を維持しながら、これらの特別な機能がすべてのグループに提供されないようにする最善の方法は何ですか?

3
smokris

各スペースの機能は、spaces_features_form()関数を介して構成されます。 hook_form_alter() を実装して、特定のグループから機能を選択的かつ条件付きで削除できます。

function MYMODULE_form_alter(&$form, $form_state, $form_id) {
  if ($form_id == 'spaces_features_form') {
    $space = spaces_get_space();
    // Populate the array with hard-coded NIDs, or whatever logic
    // needed to determine if these features should be allowed.
    if ($space->type == 'og' && !in_array($space->group->nid, array(...))) {
      // Hide features foo and bar.
      foreach (array('feature_foo', 'feature_bar') as $feature) {
        $form['spaces_features'][$feature]['#access'] = FALSE;
      }
    }
  }
}
2
jhedstrom

機能はモジュールです。モジュールはシステム全体で有効になり、スペースまたはグループにリンクできません。ただし、カスタムのアクセス許可を作成することで、それらへのアクセスを制御できます。 hook_perm() を参照してください。

1
tim.plunkett

このhook_perm提案に、グループタイプに基づいて適用可能な機能を無効にするためのフォームの変更を追加します。 hook_form_alterはおそらく機能せず、機能関連アイテムはまだ存在しません。 #after_build フックを登録して、それに応じてフォームを変更する必要がある場合があります。

1
lordg

コンテキストは間違いなく進むべき道です。
コンテキスト機能 および スペース は強力な組み合わせです。このDevelopmentSeedの投稿が役立つはずです =「=ブログ機能」を構築するDrupalコンテキストとスペースを使用

1
teknikqa