뷰 블록을위한 템플릿 파일 생성


19

커스텀 블록 테마에는 많은 것이 있지만 뷰로 생성 된 블록은 어떻습니까?

내 조회수 블록에는 id : block-views-posts-listing-block,

템플릿 파일 이름을 지정하는 여러 가지 방법을 시도합니다 (예 : block--block--views-posts-listing-block.tpl.php). 그러나 올바른 파일 이름을 찾을 수 없습니다.


1
테마 개발자 모듈은 당신에게 템플릿 파일의 이름을 알 수 있습니다.
Oswald

고맙지 만 D7 용 Themer가 제대로 작동하지 않는 것을 발견했습니다.
Codium

답변:


18

보기를 편집하십시오. 블록 세부 사항의 "고급"설정에서을 클릭하십시오 "Theme: Information". 템플릿 파일의 옵션 목록이 표시됩니다.

예를 들어, 블록의 이름이 "게시물 목록"인 경우 "테마 정보"옵션으로 나열된 가능한 이름을 참조하십시오.

* Display output: views-view.tpl.php, views-view--posts-listing.tpl.php, views-view--default.tpl.php, views-view--block.tpl.php, views-view--posts-listing--block.tpl.php
* Style output: views-view-unformatted.tpl.php, views-view-unformatted--posts-listing.tpl.php, views-view-unformatted--default.tpl.php, views-view-unformatted--block.tpl.php, views-view-unformatted--posts-listing--block.tpl.php
* Row style output: views-view-fields.tpl.php, views-view-fields--posts-listing.tpl.php, views-view-fields--default.tpl.php, views-view-fields--block.tpl.php, views-view-fields--posts-listing--block.tpl.php
* Field Content: Title (ID: title): views-view-field.tpl.php, views-view-field--title.tpl.php, views-view-field--posts-listing.tpl.php, views-view-field--posts-listing--title.tpl.php, views-view-field--block.tpl.php, views-view-field--block--title.tpl.php, views-view-field--posts-listing--block.tpl.php, views-view-field--posts-listing--block--title.tpl.php 

예를 들어 , 블록에 이름 게시물 목록 이 있고 스타일이 형식화되지 않은 경우 "테마 정보"는 이름을 제안합니다 views-view-unformatted--posts-listing--block.tpl.php(여러 이름 중 하나 일 뿐임). 원래 views-view-unformatted.tpl.php템플릿 파일 (/ modules / views / theme에 위치)을 현재 테마 디렉토리에 복사 하고이 파일의 이름을 제안 된 이름으로 바꿀 수 views-view-unformatted--posts-listing--block.tpl.php있습니다. 그런 다음 템플릿 파일 내에서 변경하십시오. 이 템플릿으로 원하는대로 변경할 수없는 경우 필요에 따라 다른 템플릿을 찾으십시오.

결국 새 템플릿을 추가하면 템플릿 파일 목록을 다시 스캔하십시오.

중대한! 템플릿 파일을 추가, 제거 또는 이름을 바꿀 때 시스템에서 파일을 다시 검색하여 Drupal이 변경 사항을 인식하도록해야합니다. "템플릿 파일 재검색"버튼을 클릭하면 Drupal의 테마 레지스트리가 지워지고이 재검색 프로세스가 시작됩니다. 강조 표시된 템플릿 ( "템플릿 파일 다시 검색"버튼 위의 템플릿 목록에 있음)은 시스템의 새로운 상태를 반영합니다.

Oswald가 제안한 테마 개발자 모듈 http://drupal.org/project/devel_themer 는 귀하의 기준에 따라 특정 요소를 변경하기 위해 가능한 템플릿을 감지하는 데 유용 할 수 있습니다. 프로덕션 환경에서 활성화 된이 모듈을 권장하지 않습니다 (제 경우에는 뷰와 충돌이있는 것처럼 보이기 때문에 테스트 환경에서 모듈을 비활성화 했음에도 불구하고 필요할 때 매우 유용했습니다)


아니요. 테마 뷰에서 출력을 차단하는 데 도움이되지 않습니다. 테마보기 내용만을위한 것이지만, 나의 관점을 감싸는 테마 블록을 원합니다
Codium

안녕하세요.보기-> 차단 설정에서 "테마 정보"로 표시되는 템플릿 목록을 다시 검토하십시오 --block. 이름으로 끝나는 템플릿이 몇 가지 있습니다. reescan 템플릿을 기억하고 템플릿을 현재 테마의 디렉토리에 넣습니다 (모듈 /보기 / 테마에서 선택한 템플릿을 복사). 템플리트에는 "테마 정보"목록에서 제안한 이름이 있어야합니다. 작동합니다.
cigotete

@ drupality, 나는 프로세스를 검토하는 단계와 함께 예제를 추가했습니다 . 답변 에서 " 예를 들어 "단락 에서 검토하십시오 .
cigotete

고맙지 만 기본 div class = "content"래퍼도 제거 할 수 없습니다. 뷰로 만든 HTML 만 변경할 수 있습니다
Codium

2
@ moon.watcher 오해라고 생각합니다. "block"으로 템플릿 파일을 종료해도 블록 자체의 테마에는 영향을 미치지 않습니다. 뷰가 출력하는 블록에만 해당 템플릿 파일을 만듭니다 (뷰가 동일한 뷰에서 여러 블록을 출력 할 수 있음). 뷰의 테마 컨텐츠는 블록 테마 엔진으로 출력되며 block.tpl.php에서 제공하는 마크 업으로 래핑됩니다. Drupality가 (나뿐만 아니라)하려고하는 것은 블록 자체의 테마를 변경하는 것입니다.

18

테마 개발자 (일명 devel_themer)에 따르면 D7에서 답을 찾는 사람들은 규칙을 사용하여 뷰의 블록에 대한 tpl 재정의를 만들 수 있습니다.

block--views-- {보기의 machine_name} -block

따라서이 예에서 당신은 얻을 것이다

block--views- post-listing -block.tpl.php

공백이 없으면 (인라인되도록 모든 것을 올바르게 편집 할 수 없었습니다.


noTxt가 올바른지 확인하고 블록 섹션으로 이동하여 블록을 편집하면 URL에 밑줄, my_view_name-block과 함께 뷰의 블록 이름이 표시됩니다. 밑줄을 my-view-name으로 바꾸고 다음 형식을 사용하십시오. "block--views--my-view-name = block.tpl.php"
Nevos

2
예,보다 정답입니다. block--views--VIEWNAME-MACHINENAMEOFDISPLAY.tpl.php 머신 이름 앞에 단일 대시를 표시하십시오! 머신 이름 = 기본적으로 이름은 block, block-1 등으로 지정되지만 뷰 UI에서 이름을 바꿀 수 있습니다.
Nikit

7

30 분의 끝에 tpl 이름을 바꾸는 마지막 결론은 다음과 같습니다.

block--views--[view-name]-[display-name].tpl.php

[view-name]-[display-name] 부분은 noTxt처럼 말하거나 '-'와 함께보기의 id 이름과보기 표시의 id 이름과 결합 할 수 있습니다. 끝에있는 -block이 올바르지 않습니다 .


5

드루팔 8에서

여기에 이미지 설명을 입력하십시오

필드 템플릿은 다음과 같습니다.

views-view-fields-[view-name]-block-1.html.twig


이 질문은 D7에 관한 것이 었습니다 ... 왜 Drupal 8 이 답에 있습니까?
Pierre.Vriens

@ Pierre.Vriens 질문은 (모듈이 아닌) 견해에서 인기가 있으므로 여기에 D8 버전 답변을 추가해야한다고 생각했습니다.
No Sssweat

이제 흥미로운 아이디어입니다 ... 그렇다면 이 + 21K 질문에 대해 동일한 작업을 수행하는 것은 어떻습니까?
Pierre.Vriens

@ Pierre.Vriens는 그다지 인기가 없습니다.
No Sssweat

1
8 태그 추가, nice;)
Codium

1

block--views--[view-name]-[display-name].tpl.php로 변경되어야합니다 block--views--[view-name]-[machinename].tpl.php.

다른 이름으로 작성된 뷰 고급 섹션에서 머신 이름을 찾을 수 있습니다.


1

위에서 설명한 파일 이름 패턴은보기 이름 + 표시 이름이 특정 문자 수보다 긴 경우에만 작동합니다 !! 나는 이것에 사로 잡히고 ... block.tpl.php로 끝나는 템플릿 파일 이 작동 하는 이유 와 다음 디스플레이가 작동 하지 않는 이유를 찾을 수 없었습니다 block-1.tpl.php.

이름이 너무 길면 Views는 머신 이름을 MD5 해시로 바꿉니다. 사용해야하는 템플릿 이름을 확인하려면 $conf['theme_debug'] = TRUE;settings.php를 추가 한 다음 페이지 소스를 확인하십시오. block--views--d131dd02c5e6eec4.... 와 같은 것을 찾으면 뷰의 기계 이름을 줄이는 것이 좋습니다 (관리하는 경우 사람이 읽을 수있는 이름이 아닙니다). 또는 해당 바보 같은 이름의 템플릿 파일을 사용해야합니다.

참조

Views 블록의 컴퓨터 이름이 "해시"(?)

https://www.drupal.org/node/346602


0

이 페이지 ( https://www.drupal.org/node/1089656 )와 뷰에서 사용되는 밑줄에 대한 정보를 확인하십시오 .

또한 뷰가 하나 더있는 예에서 뷰 이름이 "front_news"인 뷰로 생성 된 블록이 있고 ID가 "block_1"인 경우 테마 후크 제안은 block--views--front-news-block-1입니다. tpl.php (표시 ID 또는보기 이름에 밑줄이있는 경우 단일 대시로 변환해야 함)


0

패널 창 내부의 블록의 경우 noTxt 및 기타에서 제공하는 솔루션이 작동하지 않습니다. 그러면 구문은 다음과 같습니다 (밑줄 없음).

panels-pane-block--views-[view-name]-[display-machine-name].tpl.php

이 탁월한 테마 재정의 사례를 파악하기 위해 $ conf [ 'theme_debug'] 설정을 제공 한 user3074436에게 감사합니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.