it-swarm-ko.tech

path_to_theme () 반환 "모듈 / 시스템"

테마 로고를 블록으로 렌더링하려고합니다.

Page.tpl.php에서 path_to_theme()을 호출하면 실제 경로를 반환하지만 modulename.module에서 호출하면 "modules/system"을 반환합니다.

4

모듈에 갇혀 있거나 path_to_theme()이 내가 원하는 것을 반환하지 않는 컨텍스트에있을 때마다 다음을 사용하여 현재 전역 적으로 선택된 테마에 액세스합니다.

global $theme;
$path_to_theme = drupal_get_path('theme',$theme);

예를 들어 내가 서브 테마에 있거나 내 테마의 약간 다른 맛 (모바일 대 데스크톱)에있는 경우 $theme를 사용하여 활성 테마를 얻습니다.

11
electblake

영역 .tpl 파일 내에서 path_to_theme 함수를 호출 할 때도이 문제가 발생했습니다. Mr. electblake의 코드 개념 사용

내 Drupal theme template.php에 다음과 같은 함수를 만들었습니다.

function mythemepath() {
global $theme;
$mythemepathvar = drupal_get_path('theme', $theme ) ;
return $mythemepathvar;
}

이제 모든 템플릿 파일에서 간단히 호출 할 수 있습니다.

<img src="<?php echo mythemepath(); ?>/images/imagethumbnail.png" />
2
LayoutPH

테마 컨텍스트 (예 : 테마 함수 또는 템플릿 파일) 내에서 path_to_theme()현재 테마 요소 현재 활성 테마. 따라서 테마에서 호출하면 테마를 반환하지만 모듈에서 호출하면 해당 테마 요소를 만든 모듈의 경로를 반환합니다.

foo.module에서 호출하고 modules/system를 받고 있으므로 page.tpl.php의 사용자 정의 구현이없는 테마 컨텍스트에서 호출 할 가능성이 높습니다. . 따라서 기본 템플릿의 기본 경로는 modules/system입니다.

활성 테마의 경로를 얻으려는 경우 테마 컨텍스트 외부에서 path_to_theme()을 사용합니다.

그렇지 않으면 다음을 사용할 수 있습니다.

variable_get('theme_default', 'bartik') 

기본 테마를 가져 오거나 :

global $user;
print $user->theme;

현재 사용자의 테마를 가져옵니다.

2
user7

나는 이와 같은 문제가 있었다. 나는 page.tpl.php 템플릿이 아닌 page-front.tpl.php 템플릿 파일 만 가지고 있기 때문이라는 것을 알았습니다. page.tpl.php를 추가했고 모든 것이 다시 작동했습니다. :)

2
Dustin

M에서 발생한 유일한 시간은 내 테마에 theme_preprocces_node (또는 문제가 페이지 파일에있는 경우 페이지)가 없기 때문입니다. 그래서 그것은 그것을 가지고있는 어떤 모듈을 가리키고있었습니다.

이를 해결하기 위해 다음과 같은 사전 절차를 선언했습니다.

function mytheme_preprocces_node(&vars)
{

}

그리고 마술처럼 작동했습니다.

1