관리자 테마로 페이지를 강제로 렌더링 (오버레이 모드) 페이지를 관리자 테마로

경로가 ‘admin /’으로 시작하는 페이지와 같이 페이지를 관리자 테마로 강제로 렌더링하는 방법이 있습니까?



답변

contrib 모듈 ThemeKey 가 있습니다

현재 경로, 분류 용어, 언어, 노드 유형 및 기타 여러 속성에 따라 테마를 자동으로 선택할 수있는 단순하거나 정교한 테마 전환 규칙을 정의 할 수 있습니다. 또한 다른 모듈에 의해 노출되는 추가 속성을 지원하도록 쉽게 확장 할 수 있습니다. Drupal의 테마 상속 및 ThemeKey 속성과 함께 다음과 같은 기능을 쉽게 얻을 수 있습니다.

개별 스타일의 채널 프론트 페이지 / “스플래시”화면 날짜 / 시간 선택 크리스마스 테마로 다른 자동 감지 된 모바일 장치를위한 모바일 테마 “제한된”또는 “오래된”브라우저를위한 특수 테마 컨텐츠, 사용자 또는 역할 별 테마 라이브 서버에서 안전하게 재 설계 테스트 환경 (제작, 준비, 테스트, 샌드 박스 등)을 나타냅니다.

관련 질문도 여기에서 확인 하십시오 .


답변

사용자 정의 모듈을 만들어이 작업을 수행 할 수도 있습니다.

방법 1

Drupal의 내부 경로 (일명 경로 소스)를 기반으로 기존 페이지를 테마로하려면이 옵션을 사용하십시오. 이 예는 hook_custom_theme 를 사용 합니다 .

<?php
function MYMODULE_custom_theme() {
  // match node/1
  if (arg(0) == 'node' && arg(1) == '1') {
    return variable_get('admin_theme');
  }
}

방법 2

URL 경로 (일명 경로 별칭)를 기반으로 기존 페이지를 테마로하려면이 옵션을 사용하십시오. 이 예제는 hook_custom_theme 도 사용 합니다 .

<?php
function MYMODULE_custom_theme() {
  // get arguments
  $arg = explode('/', substr(request_uri(), strlen(base_path())));
  // match {wildcard}/path 
  // Using strpos as $arg[1] may end up having stuff like so ?order=title&sort=asc
  if (isset($arg[1]) && strpos($arg[1], 'path') !== false && !isset($arg[2])) {
    return variable_get('admin_theme');
  }
}

방법 3

테마를 지정하고 페이지를 만들려면이 옵션을 사용하십시오. 이 예제는 hook_menu 를 사용 합니다 . 자세한 내용은 hook_menu 에서 다른 훌륭한 기사를 살펴보십시오 .

<?php
function MYMODULE_menu() {
  $items = array();

  // match some/path
  $output['some/path'] = array(
    'title' => t('Page Title'),
    'page callback' => 'MYMODULE_page',
    'theme callback' => 'variable_get',
    'theme arguments' => array('admin_theme'),
  )
}

function MYMODULE_page() {
  return 'Hello world.';
}


답변

모듈 개발자 인 경우 hook_admin_paths 를 사용하여 관리 테마로 렌더링 될 경로를 정의 할 수 있습니다 .


답변

관리자로 시작하는 경로를 ‘admin / mypage’로 지정하십시오.


답변

  1. 이 기능은 현재 D7 코어에 있습니다.

  2. “hook_admin_paths”를 UI에 효과적으로 노출시키는 모듈이 있습니다 :
    https://drupal.org/project/admin_theme


답변