1

ドメインアクセスモジュールを使用して多数のマイクロサイトを実行しているライブのDrupalサイトにいくつかの改善を加えているところです。ユーザーがノード編集画面からコンテンツを投稿できるメニューを制限する方法を見つけようとしています。いずれかのドメインのユーザーは、そのドメインに関連付けられているメニューにのみコンテンツを投稿できる必要があります。

これを達成する簡単な方法はありますか?使用できるフックがいくつかあると思いますが、今のところそれらを特定することはできません。これを実現し、現在のサイトにコードを追加してフォームを変更できるようにするために、モジュールをさらにインストールする必要はありません。このサイトは、すでにインストールしなければならない多数のモジュールに苦労しています。

4

3 に答える 3

1

モジュールのreadmeによると、ユーザー管理で特定の権限を設定する必要があります。

この機能を有効にするには、一部の役割に「ドメインノードの編集」および(オプションで)「ドメインノードの削除」権限を付与する必要があります。次に、個々のユーザーアカウントを特定のドメインに割り当てて、ドメインエディターとして割り当てます。

何ヶ月も前のモジュールでの私の経験から、グローバルな$ userオブジェクトをチェックして、ユーザーがアクセスできるドメインを見つけることができます。次に、フォーム変更を使用して、選択ボックスから表示したくないオプションを削除できます。ただし、Drupalの場合と同様に、他の誰かにコードを記述させることをお勧めします。したがって、ドメインモジュールがこの機能を提供する場合は、それを使用してください。

于 2010-06-14T10:06:58.403 に答える
1

Drupal7の更新されたコードは次のとおりです。

/**
 * Implements hook_form_FORM_ID_alter().
 */
function MYMODULE_form_page_node_form_alter(&$form, &$form_state) {
  global $_domain;
  if (isset($_domain['domain_id'])) { // only display domain's primary links
    $menus[domain_conf_variable_get($_domain['domain_id'], 'menu_main_links_source')] = $_domain['sitename'].' Main menu';
  }
  if (isset($menus)) {
    $options = menu_parent_options($menus, $form['#node']->type);
    $form['menu']['link']['parent']['#options'] = $options;
  }
}
于 2012-11-14T13:07:36.907 に答える
0

最終的に、私が取り組んでいる特定のプロジェクトでこれを修正する方法を見つけました。module_form_alterに、次のものを追加しました。-

global $_domain;
if (isset($_domain['domain_id'])) { // only display domain's primary links
  $menus[domain_conf_variable_get($_domain['domain_id']
    ,'menu_primary_links_source')] = $_domain['sitename'].' Primary links';
}
if ( isset($menus) ) {
  $options = menu_parent_options($menus, $form['menu']['#item']);
  $form['menu']['parent']['#options'] = $options;
}

これにより、メニューオプションが、現在のドメインのプライマリリンクメニューだけに制限されます。これは、まさに私たちが望んでいたものです。

以前に私を正しい方向に向けてくれたFabianに感謝します。

于 2010-06-14T16:09:36.483 に答える