現在のページがdrupalの管理セクションにあるかどうかを確認するにはどうすればよいですか?メインメニューの一部のページにログインフォームを表示したいのですが、ブロック選択メニューにログインページが表示されます。解決策を提案してください。
5 に答える
Drupal 7の場合、path_is_admin()を使用できます。
if (path_is_admin(current_path())) {
// Do stuff.
}
Drupal 8の場合isAdminRoute()
$is_admin = \Drupal::service('router.admin_context')->isAdminRoute();
if ($is_admin) {
// Do stuff.
}
私はあなたの最終目標を完全には理解していませんが、あなたの質問に対する2つの答えがあります:
1)if (arg(0) == 'admin') { ... }
adminセクション全体にadmin /のプレフィックスが付いたパスがあるため、誰かがadminセクションにいるかどうかを示します。
2)admin / settings / admin / themeで、adminセクションに別のテーマを選択できます。そうすると、メインテーマではなく、そのテーマが読み込まれているときに誰かがadminにいることがわかります。
あなたの最終的な目標も正確にはわかりません。もっと説明?
パスをチェックしている場合は、Scott Reynenの#1でうまくいくはずです。
Drupal 6には、デフォルトの変数$is_adminもあります。現在のユーザーが管理者アクセス権を持っている場合、これはTRUEになります。この変数をチェックすると役立つ場合があります。詳細については、こちらを参照してください:http: //api.drupal.org/api/drupal/modules--system--page.tpl.php/6
フォローアップの質問に対して、フロントエンドのテーマは常にadmin / build/blockに表示されます。これは正しく、予想される動作です。ブロックを移動してテーマセクションに割り当てるときに、構成しているテーマのどこにブロックが移動するかを知りたいからです。複数のテーマを有効にしている場合は、admin / build / blockで別のテーマの設定(2行目)をクリックしてみてください。あなたは私が何を意味するかを見るでしょう。
最初の質問では、上記の解決策が実行する必要があります.... 2番目の質問では、ログインブロックをページの中央(つまりメインコンテンツ)に追加したいようですが、それも一部のページにのみ追加します。この場合、ブロック設定ページに移動し、「ユーザーログイン」ブロックをページ上の目的の場所に設定して、[保存]をクリックする必要があります。次に、ブロックの横にある[構成]をクリックすると、「このブロックを表示する必要があるページ」などの設定を構成するためのオプションが表示されます。
Drupal 6の場合:@timmyおよび@Scott Reynen --arg(0)およびsubstr($ _ GET ['q']、0、5)は'admin'と等しく、いくつかのパターンを見逃します。以下のコードは、私のサイトのすべての管理ページのURLを取得します。サイトには多かれ少なかれ含まれている可能性があります。
$arg = arg();
$isAdminPage = ($arg[0] == 'admin' || $arg[2] == 'edit' || $arg[0] == 'user' || $arg[2] == 'workflow' || $arg[2] == 'statistics');
if ($isAdminPage) {
// do admin stuff
}