경로가 ‘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’로 지정하십시오.
답변
-
이 기능은 현재 D7 코어에 있습니다.
-
“hook_admin_paths”를 UI에 효과적으로 노출시키는 모듈이 있습니다 :
https://drupal.org/project/admin_theme