it-swarm-ko.tech

템플릿 제안 차단

제목별로 각 블록에 대해 사용자 정의 템플릿을 사용하는 방법이 있습니까? 예를 들어, 블록 이름을 "test1"로 지정하고 "left1"영역에있는 경우 다음 템플릿 제안을 사용하려고합니다.

  • block-left1-test1.tpl.php
  • block-left1.tpl.php
  • block-test1.tpl.php

블록에 대한 템플릿 제안 목록이 있습니까?

6
amirash

Drupal 테마 시스템에는 "템플릿 제안"이라는 개념이 있습니다. 테마 후크가 호출되면 Drupal은 테마 후크가 템플리트 또는 함수로 구현되었는지 확인합니다. 템플리트의 경우 해당 테마 후크에 대한 모든 사전 프로세스 함수가 ​​호출됩니다. 이는 모든 모듈 또는 템플릿이 템플릿에 사용할 수있는 변수에 자체 데이터를 추가 할 수 있음을 의미합니다. 이러한 변수는 큰 배열 인 $variables로 전달됩니다. 이 배열에는 템플릿 제안 목록이 $variables['template_files']라는 중첩 배열로 포함될 수 있습니다. Drupal은 나중에 해당 목록을 뒤집고 찾은 첫 번째 기존 템플릿을 사용합니다. 자세한 내용은 drupal.org의 설명서 를 참조하십시오.

이제 할 수있는 일은 :

  1. [themename]_preprocess_[themehook]라는 테마의 template.php에 함수를 추가하십시오 (예 : function mytheme_preprocess_block(&$variables) {})
  2. 이 함수에서 원하는 템플릿 이름 제안을 구성하십시오.
  3. 이러한 제안을 $variables['template_files'] 배열에 추가하십시오.

그건 그렇고, 내가 실수하지 않으면 템플릿 제안에서 지역 이름을 사용할 수 없습니다. 블록이 렌더링 될 때 출력이 표시 될 지역을 아직 알 수 없기 때문입니다.

PS 1 : 사용중인 Drupal 버전을 알려 주면 도움이됩니다.

추신 2 :이 질문이 https : //drupal.stackexchange.com/

6
marcvangend

블록 (및 나머지 코어)에 대한 템플릿 제안 패턴은 http://drupal.org/node/1089656 에서 찾을 수 있습니다. 블록의 제목을 사용하는 대신 블록의 ID를 사용합니다. block-block--1.tpl.php는 블록 모듈이 정의한 (사용자 정의 된) 블록의 ID가 1 인 블록입니다 (ID를 찾을 수 있음) 블록을 편집 할 때 URL에 모듈).

지역 이름을 사용할 수도 있지만 블록은 한 지역에만 들어갈 수 있으므로 id와 지역 이름을 모두 사용할 필요는 없습니다.

3
Jody

원하는 것을 정확하게 수행할지 확실하지 않지만 Block Theme module 소리가납니다. 살펴볼 가치가있는 유사한 모듈은 Skinr 입니다.

1
Matt V.