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


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.