본문에 요약 (티저)을 전체 내용보기로 표시하는 방법


11

다음과 같은 '전체 콘텐츠'레이아웃과 같이 제목 아래의 각 기사 상단에 티저를 표시하고 싶습니다.

  1. 표제
  2. 티저 (문서 요약)
  3. 영상
  4. 신체

또한 티저의 형식은 고유해야합니다 (예 : 기울임 꼴 및 큰 글꼴).

나는 tpl 파일이나 코어 파일을 편집하지 않고는 그렇게 할 수있는 방법을 찾지 못했습니다.

해결책은 컨텐츠 유형에 새 필드 "article_teaser"를 추가 한 다음 "전체 컨텐츠"보기에서 레이아웃을 얻기 위해 디스플레이를 관리하는 것입니다. 이것은 작동하지만 동일한 텍스트를 두 번 입력해야하기 때문에 입력 내용 양식에 두 개의 티저 필드가있는 것을 좋아하지 않습니다.

필드 본문을 "텍스트"및 "요약"부분으로 분할 할 수는 없지만 둘 중 하나만 표시 할 수 있지만 둘 다 표시 할 수는 없습니다!

그렇게 할 수있는 방법이 있습니까 (모듈?)?

(내 환경 : Zen 하위 테마가있는 Drupal 7)

답변:


10

뷰를 사용하여이 작업을 수행 할 수 있습니다. 컨텐츠 유형의 경로를 대체하는보기를 작성하십시오. 표시를 필드로 설정 한 다음 본문 필드를 두 번 추가하십시오. 티저를 표시하도록 첫 번째 인스턴스를 설정하고 본문을 표시하려면 두 번째 인스턴스를 설정하십시오. 사이에 이미지를 추가 할 수 있습니다. 뷰를 사용하면 티저 / 본문 필드의 CSS를 쉽게 사용자 정의 할 수 있습니다 (기본적으로 뷰는 여러 클래스를 제공하며 필요한 경우 클래스를 추가 할 수 있음).

참조를 위해 : Views 사용에 관한 Node One 시리즈 비디오 스크린 캐스트


대단히 감사합니다. 링크는 매우 유용하며 뷰에 대해 많은 것을 배우고 있습니다. 그러나보기에는 노드 목록이 표시되지만 내 콘텐츠 유형 (책 페이지)은 단일 페이지입니다. 단일 책 페이지 (노드)를 노드 목록 (내가 만든보기)으로 재정의하려면 어떻게해야합니까? 아마도 뷰에 대해 뭔가 빠졌을 수도 있습니다. 아마도 기본 책 페이지를 독자적인 것으로 재정의하는 방법 일 수도 있습니다.
gingo

@gingo 모든 책 페이지를 무시하려면 특별한 방법으로보기 경로를 구성해야합니다. 예를 들어, 기본적으로보기에서 제공 하는 분류 용어 보기를 보십시오 (비활성화 됨). 경로는 /taxonomy/term/%; 해당보기를 편집하면 분류 용어에 대한 표시를 편집 할 수 있도록 인수 (컨텍스트 필터)를 가져 오는 방법을 볼 수 있습니다. 귀하의 사이트에있는 책 페이지와 비슷한 것을 설정할 수 있습니다.
패트릭 케니

글쎄, 나는 상황에 맞는 필터를 더 깊게보아야하지만 올바른 방향으로 가고 있다고 생각합니다. 감사합니다.
gingo

3

보기는 확실히 일을 할 수 있습니다. 그러나 나는이 요구 사항에 대해 약간 과잉이라고 생각합니다.

이를 달성하는 또 다른 방법은 사용자 정의 모듈에서 hook_field_extra_fields () 및 hook_node_view ()를 구현하는 것입니다.

/**
 * Implements hook_field_extra_fields().
 */
function mymodule_field_extra_fields() {
  // Put the content type you want to display summary field here.
  $content_type = 'page';

  $extra['node'][$content_type]['display']['body_summary'] = array(
    'label' => t('Body summary'),
    'description' => t('Display body summary.'),
    'weight' => 0,
  );

  return $extra;
}

/**
 * Implements hook_node_view().
 */
function mymodule_node_view($node, $view_mode, $langcode) {
  // Put the content type you want to display summary field here.
  $content_type = 'page';

  if ($node->type == $content_type) {
    $summary = field_view_field('node', $node, 'body', array(
      'type' => 'text_summary_or_trimmed',
    ));

    $node->content['body_summary'] = array(
      '#markup' => $summary,
      '#weight' => 0,  
    );
  }
}

캐시를 지우면 컨텐츠 유형 "디스플레이 관리"설정으로 이동하여 "본문 요약"필드를 끌어서 놓을 수 있습니다. 예를 들어 admin/structure/types/manage/page/display.


흠 나는 이것이 가깝다고 생각하지만 필드 내용은 표시되지 않습니다 Array.
arjan

@arjan, Array data를 확인하고 여기에 복사하셨습니까?
eric.chenchao

요점은 무엇입니까? 변수를 사용하는 유일한 위치 위의 한 줄 위에 변수를 작성하면 if 문에 문자열을 입력하면됩니다.
Kiee

안녕 @ 키이, 네 말이 맞아. 그러나이 발췌 문장은 주석과 함께 예제로 사용됩니다.)
eric.chenchao

3

드루팔 7 :

본문 필드에서 '재 작성 결과'를 사용하고 '교체 패턴'에 다음을 사용할 수 있습니다.

[body-summary]

그러면 전체 요약이 표시됩니다.


당신은 천재 하비에르, 다른 모든 과잉 설명, 당신은 가장 잘 작동하고 sooooooooooooo 간단한 것입니다!
Bruno Vincent

0

컨텐츠 유형 재정의의 경우 패널 기능 중 하나가 특정 컨텐츠 유형 (또는 다른 선택 기준에 따른 정보)의 기본 모양을 정확하게 재정의하므로 패널을 살펴 봐야합니다.


0

Arjan은 Cityreader의 스 니펫이 결과를 생성하지만 올바르게 렌더링되지 않음을 알았습니다.

이 변형은 저에게 효과적이었습니다.

 /**
 * Implements hook_field_extra_fields().
 */
function mymodule_field_extra_fields() {
  // Put the content type you want to display summary field here.
  $content_type = 'page';

  $extra['node'][$content_type]['display']['body_summary'] = array(
    'label' => t('Body summary'),
    'description' => t('Display body summary.'),
    'weight' => 0,
  );

  return $extra;
}

/**
 * Implements hook_node_view().
 */
function mymodule_node_view($node, $view_mode, $langcode) {
  // Put the content type you want to display summary field here.
  $content_type = 'page';

  if ($node->type == $content_type) {
    $summary = field_view_field('node', $node, 'body', array(
      'type' => 'text_summary_or_trimmed',
    ));

    $node->content['body_summary'] = array(
      '#markup' => $summary['#items'][0]['safe_summary'],
      '#weight' => 0,  
    );
  }
}

0

Views and Display Suite 모듈 을 사용하는 비 코드 솔루션에 관심이있는 경우 다음을 수행 할 수 있습니다.

  1. 요약 필드가있는 뷰 블록을 작성하십시오. 고급 설정의 상황 별 필터 옵션에서 URL의 컨텐츠 ID 유형으로 "기본 값 제공"옵션을 설정할 수 있습니다.

  2. 컨텐츠 유형-> [사용자 컨텐츠 유형]-> 디스플레이 관리에서 사용자 정의 필드 옵션 (하단의 메뉴)을 선택하고 1 단계에서 작성한보기에서 사용자 정의 블록 필드를 작성하십시오.

  3. 저장시 사용자 정의 필드가 표시 될 지역을 선택할 수있는 노드 유형 필드 목록에 나타납니다.

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