검색 결과 페이지를 어떻게 사용자 정의합니까?


39

콘텐츠 유형의 티저보기 및 페이지보기를 사용자 정의했습니다. 이제 검색 결과 페이지에 티저보기를 사용해야합니다. 기본적으로 Drupal은 각 결과에 대해 전체 텍스트 뒤죽박죽을 표시하므로 콘텐츠 유형별로 각 모양을 사용자 지정할 수 있어야합니다. drupal이 결과를 표시하는 방법을 변경하는 방법을 바꾸고 싶지 않습니다.

답변:


28

theme_search_results () 또는 theme_search_result ()를 대체 할 수 있습니다.

첫 번째는 검색 결과 페이지에 대해 호출되는 테마 함수이고, 두 번째는 단일 결과를 렌더링하기 위해 호출되는 테마 함수입니다. 두 테마 기능 모두 템플릿 파일 ( 첫 번째 경우 search-results.tpl.php , 두 번째 경우 search-result.tpl.php )을 사용합니다.

search-result.tpl.php는 $info_split['type']노드 유형을 포함하는 Drupal 6에서 사용 합니다. 최신 Drupal 7 버전에서는 $info_split['type']더 이상 전달되지 않지만 $result['node']노드에 대한 검색이 수행되는 경우 search-result.tpl.php는 여전히을 얻습니다 . $result['node']->type그런 다음 노드의 컨텐츠 유형입니다.

Drupal 7 이상에서 모듈이 hook_search_page () 를 구현할 수 있지만, 검색 페이지와 통합되는 모듈이 사용하는 후크입니다. 다른 모듈이 반환 한 결과에 대해 결과 페이지를 변경하려는 모듈이 아니라 검색 모듈과 통합됩니다. 구성 단위.
또한 Drupal 7에서 각 테마 함수는 전처리 함수를 사용 하며이 경우 hook_preprocess_search_results () 및 hook_preprocess_search_result () 입니다. 템플릿 파일에 전달 된 값을 편집해야하는 경우에 유용합니다.


보기 또는 패널을 사용하여 검색 결과를 테마로 만드는 방법이 있습니까?
— jan

@jan 노출 된 필터를 사용하여 검색 페이지를보기로 바꿀 수 있습니다.
— kiamlaluno

@kiamlaluno, 뷰를 사용하여 drupal에 대한 기본 검색 옵션을 테마로 할 수 있기를 바랍니다. 노출 된 필터를 사용하지 않고 기본 검색 옵션 만 사용하기 때문입니다.
— jan

@jan보기를 사용하면 전체 검색 페이지가보기로 바뀝니다. 그렇기 때문에 최소한 뷰 필터를 노출해야합니다. 사용자가 검색어를 입력하는 데 사용하는 것입니다. 보기는 노드 목록 일 뿐이며 필터는 페이지에 표시 될 노드를 필터링하는 데 사용됩니다.
— kiamlaluno

@kiamlaluno 당신이 맞아요. 내가 생각하지 않은 이유 !! 감사합니다
— jan

18

Drupal 7에서는 다음을 사용합니다 ...

... 결과에 표시된 정보를 확인합니다.

그리고 당신은 ...

... 결과의 마크 업을 사용자 정의합니다.

예

콘텐츠 유형의 티저를 검색 결과로 사용하는 방법의 예입니다. 다음 스 니펫은 테마의 template.php에 들어갑니다.

/**
 * Implements template_preprocess_search_result
 * @param type $vars
 */
function MYTHEME_preprocess_search_result(&$vars) {
  $node = $vars['result']['node'];
  if ($node->nid) { // if the result is a node we can load the teaser
    $vars['teaser'] = node_view($node, 'teaser'); 
  }
}

이 스 니펫은 search-result.tpl.php 파일입니다.

<article>
  <?php if ($teaser) : // for nodes we can use the teaser as search result ?>
    <?php print drupal_render($teaser); ?>
  <?php else : // for other results we use the default from core search module ?>  
    <?php print render($title_prefix); ?>
    <h3><a href="<?php print $url; ?>"><?php print $title; ?></a></h3>
    <?php print render($title_suffix); ?>
    <?php if ($snippet) : ?>
      <p><?php print $snippet; ?></p>
    <?php endif; ?>
  <?php endif; ?>
  <?php if ($info): ?>
    <footer><?php print $info; ?></footer>
  <?php endif; ?>
</article>

1
이 글타래에 대한 최고의 설명.
— digitgopher

9

저는 최근 Drupal 7 아키텍처 웹 사이트에서 검색 결과를 다루는 데 많은 시간을 보냈으며 Display Suite 모듈 사용을 결정했습니다 .

Display Suite 모듈에는 검색 결과를 제어 할 수있는 훌륭한 방법이 있습니다. 검색 결과에서 티저를 쉽게 사용할 수 있습니다. 이것은 모듈의 관리자가 검색 결과에 사용하는 데 중점을 둔 자습서 입니다.

항상 Drupal과 마찬가지로 동일한 작업을 수행하는 다양한 방법이 있습니다. 콘텐츠 형식별로 결과를 나눌 수 있기 때문에이 방법이 마음에 들었습니다.


1
나는이 답변이 2012 년이라는 것을 알고 있지만 모듈 페이지의 검색 기능은 Drupal 8에서 제외 되었다는 것을 알았습니다. 이는 Drupal 7에 채택하는 것이 최선의 방법이 아닐 수도 있습니다. . 그것은 나 자신에 의해 테스트되지 않고 단지 머리 위로 올라갑니다.
— ja_him
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.