it-swarm-korea.com

page.tpl.php의 필드

내 page.tpl.php 3 사용자 정의 필드에 내 웹 사이트에 추가 된 최신 콘텐츠 유형을 표시하고 싶습니다.

세 개의 사용자 정의 필드 인 field_1, field_2, field_3이있는 "Articles"라는 사용자 정의 컨텐츠 유형이 있습니다.

"기사"에 추가 된 최신 콘텐츠의 세 필드를 웹 사이트의 모든 페이지에 어떻게 표시 할 수 있습니까? 뷰를 사용하지 않고 이것을하고 싶습니다.

1
Sergiu B

정확한 답은 없지만 몇 가지 지시 사항이 있습니다. 다음과 같이 시도하십시오.

  1. Template.php의 THEMENAME_preprocess_page () 함수에서 가장 최근에 생성 된 노드의 노드 ID를 가져 오는 쿼리를 생성합니다. 이를 수행하는 방법을 보려면 Drupal의 데이터베이스 API를 찾아보십시오. (더 영구적 인 해결책은 쿼리에 사용자 지정 모듈을 사용하는 것이지만,이 작업을 수행하려면 테마 계층에서 시작하겠습니다.)
  2. node_load()을 수행하여 해당 노드의 전체 내용을 가져 오면 세 필드 등이 포함됩니다.
  3. 변수 만들기 ($variables[] 배열)을 사용하여 사용자 정의 필드의 렌더링 된 내용을 보관합니다.
  4. Page.tpl.php 또는 page-article.tpl.php에서 새 변수를 사용하십시오.
1
David Lanier

나는 당신이 뷰 모듈에 대해 어떤 종류의 종교적 반대를 가지고 있다고 가정 할 것이기 때문에 커스텀 모듈 메소드를 선택할 것입니다.

간단한 모듈은 원하는 페이지에 표시 할 수있는 블록을 만들 수 있습니다.

여기서 시작하겠습니다 . http://drupal.org/node/20675 . 6.x를 말하는 거죠? 물론 그렇습니다. .info 및 .module 파일 설정이 완료되면 블록 콘텐츠 선언 (http://drupal.org/node/206758)으로 건너 뛴 다음 콘텐츠 생성 (http://drupal.org/node)으로 건너 뛸 수 있습니다./206759) ... 여기가 흥미 롭습니다 ...

function yourModuleName_block($op='list', $delta=0) {
  // set up the block  
  $block = array();

  if ($op == "list") {
    // This is what it will be listed as in your list of blocks
    $block[0]["info"] = t('On This Date');
  } 
  else if ($op == 'view') {
     $block['content'] = yourfunctionToGetNewArticalContent();
  }
}

그런 다음 원하는 것을 반환하는 함수를 만듭니다. 여기에서 살펴 보겠습니다. http://api.drupal.org/api/drupal/includes--database.mysql- common.inc/function/db_query/6

1
Aaron