web-dev-qa-db-ja.com

現在表示されているページが管理ページであるかどうかをどのように検出できますか?

ページが現在表示しているユーザーが管理者であると見なされるかどうかをどのように検出しますか?管理テーマを有効にすると、管理ページを認識できます。

私の場合、この条件が満たされ、ユーザーが「モジュールを管理」できる場合は、通知を印刷したいと思います。

18
Daniel

これはpath_is_admin(current_path())で実行できます。

たとえば、次のフック実装を使用できます。

function mymodule_init() {
  if (user_access('administer modules') && path_is_admin(current_path())) {
      drupal_set_message(t('Message'));
  }
}
31
Daniel

ダニエルの答えは現在のパスが「管理」であるかどうかを判断するのに正しいですが、管理テーマが使用されているかどうかをもっと直接確認したい場合(あなたの質問はあなたが探しているものについて少しあいまいなようです)、あなたは行うことができます…

global $theme;
if ($theme === variable_get('admin_theme', 'seven')) {
  // …
}

…ただし、bootstrapプロセスの早い段階で、つまり$themeが定義される前に実行しようとすると、失敗する可能性があります。

9

Drupal 8メソッドを探す場合:

if (\Drupal::service('router.admin_context')->isAdminRoute()) {
  // …
}

(8.7.5の前処理関数および core-patchで使用 8.0でテスト済み)

2
William Turrell

管理テーマが使用されているかどうかを確認するには(Drupal 8の場合)使用できます

$theme_name = \Drupal::service('theme.manager')->getActiveTheme()->getName();

テーマ名を取得します。

0
kbrinner