답변:
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 () 입니다. 템플릿 파일에 전달 된 값을 편집해야하는 경우에 유용합니다.
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>
저는 최근 Drupal 7 아키텍처 웹 사이트에서 검색 결과를 다루는 데 많은 시간을 보냈으며 Display Suite 모듈 사용을 결정했습니다 .
Display Suite 모듈에는 검색 결과를 제어 할 수있는 훌륭한 방법이 있습니다. 검색 결과에서 티저를 쉽게 사용할 수 있습니다. 이것은 모듈의 관리자가 검색 결과에 사용하는 데 중점을 둔 자습서 입니다.
항상 Drupal과 마찬가지로 동일한 작업을 수행하는 다양한 방법이 있습니다. 콘텐츠 형식별로 결과를 나눌 수 있기 때문에이 방법이 마음에 들었습니다.