2011-04-13 5 views
2

지역이나 추가 콘텐츠가없는 페이지가있는 모듈에서 작업하고 있습니다. 일종의 "기다려주십시오"페이지.
어떻게하면 모든 추가 콘텐츠를 지울 수 있습니까 (지역 메뉴 ... 등)? 나는 패널이 능력을 가지고 있지만 그것을 사용하는 미리보기를 찾을 수 없다 생각합니다.
다른 한가지 모듈이 특별한 사용자 정의 페이지를 지정할 수 있습니까? 예를 들어 유지 관리 페이지를 좋아합니까?drupal 7 페이지에서 영역을 프로그래밍 방식으로 비활성화하는 방법은 무엇입니까?

답변

1

영역을 숨기려는 페이지에 대해 특별히 추가 page.tpl.php를 만들 수 있습니다. 명명 규칙은 노드에 대한 명명 규칙과 유사합니다.

url example.com/content/contact가있는 페이지가 있다고 가정 해 보겠습니다. page-content-contact.tpl.php라는 템플릿이 해당 페이지와 그 URL로 시작하는 모든 페이지, 즉 example.com/content/contact/staff 페이지도 해당 템플릿을 사용할 것입니다 (제 생각).

body 요소의 클래스에서 템플릿의 이름을 지정할 수있는 단서를 확인하십시오. 대부분의 테마에서이를 인쇄 할 것입니다. 위의 예에서 body 요소에는 page-content-contact 클래스가 포함됩니다.

+0

그래서이 방법을 사용하면 모듈에 적용 할 수 없지만 테마를 만들 때 그렇습니까? – redben

+0

글쎄, 당신은 아마 별도의 유지하려는 경우, 그냥 테마 폴더 대신 모듈 폴더에 tpl 파일을 넣을 수 있습니다. 그러나 그 페이지의 룩앤필은 모듈 자체보다 테마와 관련이 있다고 주장 할 수 있습니다. 그것은 철학적 인 질문이 더 많습니다;) – angelika

1

내가 생각할 수있는 것은 당신이 말하는 "페이지"에서 당신이 말하는 지, 지역/메뉴를 인쇄하지 않거나 다른 템플릿을 사용하는지 확인하기 위해 page.tpl.php 파일에 체크를 쓰는 것뿐입니다. http://drupal.org/node/223440

+0

감사 Thor, 테마 devel! 나는 내가 할 수있는 것을보기 위해 그것을 사용하는 것을 생각했다. – redben

9

page.tpl.php 방법은 유연하지 않습니다. 프리젠 테이션 로직을 기반으로합니다. 비즈니스 로직 솔루션에 hook_page_alter()를 사용해야합니다. 예 :

또한 매우 powefull Context module을 봅니다.

/** 
* Implements hook_block_list_alter() 
* 
* Hides the right sidebar on some pages. 
*/ 
function THEME_NAME_block_list_alter(&$blocks) { 

    // This condition could be more interesting. 
    if (current_path() !== 'node/add/yourcontenttype') { 
    return; 
    } 

    // Go through all blocks, and hide those in the 'sidebar_second' region. 
    foreach ($blocks as $i => $block) { 
    if ('sidebar_second' === $block->region) { 
     // Hide this block. 
     unset($blocks[$i]); 
    } 
    } 
} 

참고 :이 전에 블록을 렌더링하고 싶은 경우

+0

이것은 나를 위해 일했으나 이것이 가장 좋은 방법이라고 생각합니까? 사이드 바를 사용하지 않는 커스텀 테마가 더 좋을 것 같지만 작동시키지 못했습니다. – cmcnulty

+0

일반적으로 이것은 좋은 방법처럼 보입니다. 그러나이 훅에서도 블록이 이미 렌더링되었음을 알았습니다. 블록을 렌더링하는 시간이 낭비됩니다! – donquixote

+0

나는이 해결책을 많이 좋아한다. 요청 상태를 확인하여 404 페이지의 영역을 제거하는 데 사용했습니다. 404 페이지 URL은 아무거나 될 수 있기 때문에 Drupal의 블록 설정에서 필터링하는 방법이 아닌 것 같습니다. –

0

흥미롭게도,이 후크는 테마 또는 모듈에있는 경우에 상관없이 작동하는 것 같다. (제발 내가 틀렸다고 정정 해주세요)

관련 문제