2012-06-09 6 views
3

이것은 현재 설정 한 것입니다.Drupal 7 - 페이지에 블록 추가

다음 지역으로 새 사용자 테마를 만들었습니다.

regions[header] = Header 
regions[content] = Content 
regions[footer] = Footer 

page.tpl.php

<div id="Header"> 
     <div class="row"> 
      <div class="span12" style="text-align:center;padding-top:20px;"> 
       <div><a href="/"><img src="logo.png" width="150" height="150" alt="KT Logo"></a></div> 
      </div> 
     </div> 

     <div class="row">&nbsp;</div> 
    </div><!-- /Header --> 

    <div id="Navigation"> 
     <div class="row" style="text-align:center;"> 
      <div class="span12" style="text-align:center;"> 
       <?php print render($page['header']); ?> 
       <hr class="style-two"> 
      </div> 
     </div> 
    </div><!-- /Navigation --> 

    <div id="Content"> 

     <div class="row">&nbsp;</div> 

     <div class="row"> 
      <div class="span8 offset1"> 
       <h1><?php print $title; ?></h1> 
      </div> 
     </div> 

     <div class="row">&nbsp;</div> 

     <div class="row"> 
      <div class="span10 offset1"> 
       <?php print render($page['content']) ?> 
      </div> 
     </div> 

     <div class="row">&nbsp;</div> 
    </div><!-- /Content --> 

    <footer> 
     <div class="row"> 
      <div class="span12"> 
       <img src="separator.png" alt="separator"> 
       <?php print render($page['footer']); ?> 
      </div> 
     </div> 
     <div class="row">&nbsp;</div> 
    </footer> 

</div><!-- /container --> 

이 모든 것이 잘 작동하고 내가 좋은 몇 가지 기본 페이지를 만들었습니다. 문제는 페이지의 2 블록으로 사용자 정의 "컨텐츠 유형"을 원할 때입니다. 하나는 메인 컨텐츠가 왼쪽에, 하나는 사이드 바가 오른쪽에있는 것입니다. 이제는 지역이 어떻게 작동하는지 완전히 이해하지 못하고 있습니다.

나는 sidebar_second 효과와 같은 것을 원하지만 어떻게 내 너비로 설정할지 모르겠다. 다음은 내 지역의 스크린 샷입니다. http://goo.gl/XFVnl

그래서 사이드 바 영역을 포함 할 수 있도록 내 콘텐츠 영역이 표시되는 방식을 변경해야한다고 생각하십니까? 어떤 도움

+0

두 분 모두 도와 주셔서 감사합니다. 다른 구조화 된 페이지에 대해 여러 page.tpl.php 파일을 만들 수 있습니다. 이것이 나를 혼란스럽게 만들었습니다. 이 이미지는 나를 도왔습니다. [link] (http://goo.gl/OFZgr) –

답변

1

콘텐츠 유형별 템플릿은 일반적으로 node.tpl.php 파일이며 페이지 템플릿은 page.tpl.php 파일입니다. 당신이 그들의 .INFO 파일 테마로 모든 지역을 추가,

먼저 node.tpl.php을 사용하는 경우

page.tpl.php 파일이 이미 포함되어 있습니다. 이는 블록 관리 페이지에서 사용 가능한 영역에 직접적인 영향을 미칩니다. 정의한 모든 영역 (.info 파일)을 모든 page.tpl.php 파일에 표시 할 필요는 없습니다.

page.tpl.php 파일에 3 개의 영역이 있으므로 그대로두면 작업이 계속됩니다. 그러나 특정 노드 유형에 대한 page.tpl.php를 재정의하려면 테마의 template.php 파일에서 설정해야합니다. 당신은 간단하게 "Drupal에"이 page.tpl.php 파일을 사용하도록 요청하십시오. 노드 유형은 "페이지"입니다 (예를 들어).

template.php 파일에 추가하십시오. 노드 유형이 (machine name)이 "book"인 경우 Drupal은 page-node.txt 파일을 다른 page.tpl.php 파일로 보지 않습니다. 노드 - [유형] .tpl.php을 거기 변경합니다 -

<?php 
function themename_preprocess_page(&$variables) { 
    if (!empty($variables['node'])) { 
    $variables['theme_hook_suggestions'][] = 'page__node_' . $variables['node']->type; 
    } 
} 
?> 

이제 페이지에 page.tpl.php 파일을 복사 할 수 있습니다. 이 파일에 입력 한 내용은 해당 노드 유형의 페이지 템플리트에 사용됩니다. (참고 : "페이지"와 "노드"사이의 하이픈과 노드 "와"[유형] "사이의 하이픈 2 개) 변경 사항을 볼 수없는 경우 캐시를 비우는 것을 잊지 마십시오.

1

에 대한

덕분에 나는 첫 번째 단계는이 모든 페이지에 표시되지 않습니다 경우에도 다른 지역과 함께 당신의 .module 파일에 sidebar 지역을 선언하는 것입니다 생각합니다. 확인할 수있는 페이지 템플릿에서

(사이비 코드) 지금 당신은 당신이 그것을 보여주기 위해 특정 콘텐츠 형식 또는에 표시하기 위해 특정 경로를 지정할 수 있습니다 블록을 만들 때

if (isset($page['sidebar'])) { 
    <div sidebar float left theme this how you want> 
    print render($page['sidebar']); 
    </div> 
} 

에. 위의 코드는 페이지에 사이드 바에 블록이 있는지 확인하여 그에 맞게 렌더링합니다.

drupal 스택 교환에 게시하면 답변을 얻을 확률이 더 높습니다. https://drupal.stackexchange.com/

관련 문제