프로그래밍 방식으로보기 모드를 변경하는 방법은 무엇입니까?


11

프로그래밍 방식으로 노드의보기 모드를 변경하고 싶습니다. hook_preprocess_node(&$vars)뷰 모드를 사용 하고 설정했습니다.

function moduleName_preprocess_node(&$vars) {
      // if conditions to apply particular view mode
      $vars['view_mode'] = 'teaser';
      $vars['elements']['#view_mode'] = 'teaser';
}

그러나 이것은 예상대로 작동하지 않습니다. 여기에 뭔가 빠졌습니까?


이것을 검토하려고 했습니까? drupal.org/node/1334206
chrisjlee

답변:


13

전처리 기능에서보기 모드를 변경하면 너무 늦습니다.
보기 모듈을 변경하는 올바른 방법 은 엔티티 컨텐츠가 렌더링되기 전에 호출되는 hook_entity_view_mode_alter ()를 구현 하는 것입니다. 예를 들어, node_view () 에서 해당 후크는에서 호출 된 첫 번째 함수 인 node_build_content () 에서 호출됩니다 node_view().

  if (!isset($langcode)) {
    $langcode = $GLOBALS['language_content']->language;
  }

  // Populate $node->content with a render() array.
  node_build_content($node, $view_mode, $langcode);

4
감사합니다. 제발 참고이 후크는 드루팔> = 7.17 필요하다는
cissharp

6

특정 페이지에 대해서만 변경해야하는 경우 보기 모드 페이지를 제안 합니다. 매우 편리하고 사용하기 쉽습니다.


감사합니다. 그러나 나는 다른 시나리오를 가지고 있습니다. 동일한 내용 유형의 노드에 대해 다른보기 모드를 사용하고 싶습니다. 노드에서 사용한 분류 체계의보기 모드를 변경하고 싶습니다. 노드가 동일한 URL 패턴을 갖습니다.
cissharp
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.