it-swarm-ko.tech

노드 제목 앞에 필드를 표시하는 방법은 무엇입니까?

D7에 티저를 표시 할 때 노드 제목 앞에 특정 필드를 렌더링하려고합니다.

효과적으로 this 에서 this 로 가고 싶습니다.

Node.tpl.php 업데이트를 살펴 보았지만 $title에서 $content 따라서 어떻게 접근해야할지 모르겠습니다. 일부 검색 후 사람들이 Drupal-6 에서이 문제를 해결하기 위해 CCK ConTemplate 모듈 사용을 제안했지만 더 Drupal-7 솔루션이 있는지 궁금합니다.

어떤 제안?

39
irishbuzz

Display Suite 도 꽤 멋집니다.

Display Suite를 사용하면 끌어서 놓기 인터페이스를 사용하여 컨텐츠가 표시되는 방식을 완전히 제어 할 수 있습니다. 수십 개의 템플릿 파일을 통해 작업하지 않고도 원하는 방식으로 노드, 뷰, 주석, 사용자 데이터 등을 정렬 할 수 있습니다. 더 많은 드래그 앤 드롭 재미를 위해 사전 정의 된 레이아웃 목록 (D7 만 해당)을 사용할 수 있습니다!

8
stevepurkiss

제목 모듈- http://drupal.org/project/title 을 살펴보십시오. 시나리오에 유용 할 수 있습니다. 나는 당신과 비슷한 이유로 어떤 이유로 설치/활성화했으며 제목 필드를 배치하는 방법에 유연성을 부여하는 것 같습니다.

나는 그것을 비활성화하고 Display Suite를 사용하고 있으므로 리콜이 약간 스케치 될 수 있습니다.

7
Greta

이것은 해킹 솔루션이며 누군가가 더 우아한 것을 내놓을 것이라고 확신하지만 당신이 갇혀 있고 아무도하지 않을 경우를 대비하여 ...

page.tpl.php를 사용하여 $title의 인쇄를 모두 제거하고 기계 이름이 $ new_title 또는 이와 유사한 이름의 Title이라는 새 사용자 정의 필드를 추가 할 수 있습니다. 그런 다음 노드 편집시 원래 제목 상자를 숨기고 노드 저장에서 계산 필드 또는 일부 사용자 정의 PHP를 사용하여 $new_title$title에 복사하십시오.

그런 다음 CSS를 작성하여 $ new_title을 이전 페이지 제목처럼 보이게하고 필드 관리 화면에서 드래그 앤 드롭하여 원하는 순서대로 필드를 배치 할 수 있어야합니다. $new_title$title (으)로 복사 했으므로 브라우저 표시 줄의 페이지 제목이 계속 작동하고 누락 된 노드 제목에 대해 불평 할 것이 없습니다.

내가 말했듯이, 그것은 해킹이지만 작동합니다. 더 많은 정보가 필요하면 알려주세요

4
Frederik

page.tpl.php (garland)

...
      <div id="center"><div id="squeeze"><div class="right-corner"><div class="left-corner">
          <?php print $breadcrumb; ?>
          <?php if ($mission): print '<div id="mission">'. $mission .'</div>'; endif; ?>

          /*
           * Print custom block or var
           */
          <?php if ($custom_block): print '<div id="custom-block" class="clear-block">'. $custom_block .'</div>'; endif; ?>

          <?php if ($tabs): print '<div id="tabs-wrapper" class="clear-block">'; endif; ?>
          <?php if ($title): print '<h2'. ($tabs ? ' class="with-tabs"' : '') .'>'. $title .'</h2>'; endif; ?>
          <?php if ($tabs): print '<ul class="tabs primary">'. $tabs .'</ul></div>'; endif; ?>
          <?php if ($tabs2): print '<ul class="tabs secondary">'. $tabs2 .'</ul>'; endif; ?>
          <?php if ($show_messages && $messages): print $messages; endif; ?>
          <?php print $help; ?>
          <div class="clear-block">
            <?php print $content ?>
          </div>
          <?php print $feed_icons ?>
          <div id="footer"><?php print $footer_message . $footer ?></div>
      </div></div></div></div> <!-- /.left-corner, /.right-corner, /#squeeze, /#center -->
...

template.php

/**
 * Override or insert variables into the page template.
 */
function phptemplate_preprocess_page(&$variables) {
  $node = $variables['node'];
  if($node->type == MY_NODE_TYPE) {
    $variables['custom_block'] = 'bla bla bla';
  }
}
3
dobeerman

이것은 원래 게시물의 티저 질문에는 적용되지 않지만이 문제를 우연히보고 전체보기에서 문제를 해결하려는 사람들에게는 코드가없는 옵션이 있습니다. 예를 들어) 해당 블록을 콘텐츠 블록 위에 있지만 동일한 지역에 배치하십시오.

3
brad

Template.php에서 전처리 기능을 사용해야한다고 생각합니다.

/**
 * Override or insert variables into the page template.
 */
function THEMENAME_process_page(&$variables) {
  // look for $variables['page_title'] if i remember
}

그리고 추가로

/**
 * Override or insert variables into the node template.
 */
function THEMENAME_preprocess_node(&$variables) {
  //
}

변수를 덤프하고 원하는 것을 수행하십시오. 추가/제거/업데이트.

2
dobeerman

Display Suite 및 "Region to Block"추가 기능을 사용하는 코드없는 솔루션으로이 문제를 해결했습니다. 나는 유연성을 위해이 솔루션을 가장 좋아합니다.

기본적으로, "Region to Block"추가 부분을 활성화하고 Display Suite에서 "Fulltext Content"디스플레이를 활성화하십시오. (전체 노드 디스플레이에서 제목 이상의 컨텐츠를 표시한다고 가정하면 다른보기 모드 제외 기본값으로 사용할 수 있음). 이제 "전체 텍스트 내용"의 "디스플레이 관리"부분의 화면 하단에 "블록 영역"탭이 나타납니다. 여기에 새 블록 이름을 입력하고 원하는 필드를 저장하고이 블록으로 끌어다 놓습니다. 마지막으로 새로 만든 블록을 블록 화면에서 above 노드 제목으로 이동하십시오.

http://www.youtube.com/watch?v=y4wyjxyhbNA 여기에서 동일한 접근 방식의 비디오를 볼 수 있습니다. 물론 왼쪽 블록이 아닌 제목 위에 블록을 배치해야합니다. 끝에.

2
Mirsoft

아래 코드는 다음과 같은 코드로 작동합니다.

<?php
// this goes in template.php
// check if node type page and then add to $vars array
// declaring $vars['foo'] gives you a $foo variable to use in page.tpl.php

function YOURTHEMENAME_preprocess_page(&$vars, $hook) {
    if (isset($vars['node'])) :
        if($vars['node']->type == 'page'):       
            $node = node_load($vars['node']->nid);
            $output = field_view_field('node', $node, 'field_image', array('label' => 'hidden'));       
            $vars['my_image_field'] = $output;               
        endif;
    endif;
}
?>

마지막으로 page.tpl.php에서 필드를 쉽게 인쇄 할 수 있습니다.

<?php
if ($my_image_field):
   print render($my_image_field);
endif;
?>
1
user991554

이미 테마를 사용하여 빌드하고 제목 맨 위에 필드를 추가하려고 시도했을 것입니다.

Drupal 7에 테마를 구축하는 모든 개발자에게 제 제안은 Omega 테마 + 컨텍스트 및 델타 모듈을 사용하는 것입니다.

영역, 블록 및 필드 배열에 대한 유연성.

1
AnAnD

당신은 패널 모듈로 할 수 없습니다

0
houmem