현재 본 페이지가 관리 중인지 어떻게 알 수 있습니까?


18

페이지가 현재보고있는 사용자를 관리하는 것으로 어떻게 감지합니까? 관리 테마가 활성화되면 관리 페이지를 인식 할 수 있습니다.

필자의 경우이 조건이 충족되고 사용자가 '모듈을 관리 할 수있는 경우'알림을 인쇄하고 싶습니다.

답변:


30

이 작업을 수행 할 수 있습니다 path_is_admin(current_path()).

예를 들어, 다음 후크 구현을 사용할 수 있습니다.

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

1
답은 OP의 "행정"정의에 따라 다르며,이 정의는 질문이 처음 게시 된 이후에 변경되었을 수 있습니다. 컨텐츠 편집 페이지를 "admin"페이지로 간주하지만 node / 123 / edit와 같은 페이지의 경우 path_is_admin ()이 false를 리턴합니다. 한편이 페이지는 관리자 테마를 사용하거나 사용하지 않을 수 있습니다. 모든 페이지는 관리자 테마를 사용할 수 있으며 모든 페이지는 관리자 테마를 사용하지 않을 수 있습니다. OP의 현재 정의는 "관리 테마가 활성화 될 때 관리 페이지를 인식 할 수 있습니다"입니다.
arnoldbird

9

Daniel의 답변은 현재 경로가 "관리"인지 여부를 결정하는 데는 맞지만 관리 테마가 사용 중인지 더 직접 확인하려는 경우 (질문이 약간 애매한 것 같습니다) …

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

… 부트 스트랩 프로세스에서 너무 빨리 실행하려고하면 (즉, $theme정의 되기 전에 ) 실패 할 가능성이 있습니다.


OP를 명확히하여 관리자 테마를 찾는 것이 아닙니다. 오히려 관리자 테마는 단순히 관리 경로를 나타냅니다.
다니엘

나는 이것이 당신이 질문을 게시 한 다음 스스로 대답하는 것 중 하나라는 것을 알 때까지 여전히 혼란 스러웠습니다. 데프, 이제 알겠다
개렛 올브라이트


0

관리 테마가 사용 중인지 확인하려면 (Drupal 8의 경우)

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

테마 이름을 가져옵니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.