프로그래밍 방식으로 테마가 활성화되어 있는지 확인


9

드루팔 설치에서 테마가 활성화되어 있는지 확인하려면 어떻게해야합니까? module_exists ()와 같은 것이지만 테마를 찾고 있습니다. 설명서에서 아무것도 찾을 수 없습니다.

답변:


6

list_themes 사용

매개 변수

$ refresh : 데이터베이스에서 테마 목록을 다시로드할지 여부 기본값은 FALSE입니다.

반환 값

현재 사용 가능한 테마의 연관 배열. 키는 테마의 머신 이름이고 값은 다음과 같은 속성을 가진 객체입니다.

  • filename : .info 파일의 파일 경로 및 이름입니다.
  • name : 테마의 머신 이름입니다.
  • status : 활성화 된 경우 1, 비활성화 된 테마의 경우 0
  • info : .info 파일의 내용
  • stylesheets : 미디어 속성의 첫 번째 키 (예 : 'all')를 사용하고 두 번째는 파일 이름 (예 : style.css)을 사용하는 2 차원 배열입니다. 값은 완전한 파일 경로입니다 (예 : themes / bartik / style.css). .info 파일에 스타일 시트가 정의되어 있지 않으면 설정되지 않습니다.
  • scripts : 파일 이름을 키로 사용하고 전체 파일 경로를 값으로 사용하는 JavaScript의 연관 배열. .info 파일에 스크립트가 정의되어 있지 않으면 설정되지 않습니다.
  • prefix : 기본 테마 엔진 접두사.
  • engine : 테마 엔진의 머신 이름입니다.
  • base_theme : 이것이 하위 테마 인 경우 .info 파일에 정의 된 기본 테마의 시스템 이름입니다. 그렇지 않으면 요소가 설정되지 않습니다.
  • base_themes :이 테마의 기본 테마, 기본 테마의 자체 기본 테마 등으로 시작하여이 테마의 기본 테마 조상의 하위 테마 인 하위 테마 인 경우 각 항목에는 테마의 기본 테마와 동일한 배열 키가 있습니다. 기계 이름 및 사람이 읽을 수있는 테마 이름과 같은 값; 시스템 이름이 일치하는 테마가 시스템에 존재하지 않으면 값은 대신 NULL입니다 (시스템은 해당 테마 자체에 기본 테마가 있는지 여부를 알 수 없으므로 기본 테마 배열을 종료 함). 테마가 하위 테마가 아닌 경우 설정되지 않습니다.
  • sub_themes : 직접 하위 테마 (즉,이 테마를 기본 테마로 선언), 하위 테마의 하위 테마 등 시스템에있는 연관 테마 배열. 키는 테마의 기계입니다. 이름과 값은 테마의 사람이 읽을 수있는 이름입니다. 시스템에이 테마를 기본 테마로 선언하는 테마가없는 경우이 요소가 설정되지 않습니다.

활성화 된 테마를 얻으려면 path_to_theme 을 사용하십시오 .

활성 테마 또는 테마 구현을 처리하는 모듈을 가리킬 수 있습니다. 예를 들어, 테마 호출 범위 내에서 호출되면 테마 기능이 처리되는 위치에 따라 다릅니다. 모듈에서 구현 된 경우 모듈을 가리 킵니다. 활성 테마에서 구현 된 경우 활성 테마를 가리 킵니다. 테마 호출 범위 밖에서 호출되면 항상 활성 테마를 가리 킵니다.


3

데이터는 실제로 정확히 같은 장소 인 system테이블에 보관됩니다. 확인해야 할 기존 함수를 찾을 수 없었지만 (어딘가에있을 수도 있지만) 핀치해야합니다.

function theme_exists($theme_name) {
  $themes = list_themes();
  return isset($themes[$theme_name]) && $themes[$theme_name]->status == 1;
}

1
theme_exists테마 시스템과 관련하여 발생 가능한 문제를 회피하기 위해 함수를 호출
하지는 않겠지

1
list_themes ()는 이미 정적 캐싱을 수행하므로이 함수에는 필요하지 않을 것입니다.
Letharion

1
@Chapabu 나는 물건을 만들고 싶습니다 ... 흥미로운;)
Clive

@Letharion 죄송합니다. 방금 말씀하신 의미를 얻었습니다. 비트를 제거 할 것입니다
Clive

1
나는이 기능이 필요하지 않다는 것을 의미하지는 않았다. 캐싱을 통해 개선 될 수 있다고 언급 한이 사례에서는 도움이되지 않을 것이라고 생각합니다.
Letharion
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.