回答:
theme_search_results()またはtheme_search_result()をオーバーライドできます。
1つ目は検索結果ページに対して呼び出されるテーマ関数であり、2つ目は単一の結果を表示するために呼び出されるテーマ関数です。両方のテーマ機能は、テンプレートファイル使用(検索results.tpl.php最初のケースでは、検索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アーキテクチャのWebサイトで検索結果を扱うのにかなりの時間を費やし、Display Suiteモジュールを使用することに決めました。
Display Suiteモジュールには、検索結果を制御するためのすばらしい方法があります。検索結果でティーザーを簡単に使用できます。これは、モジュールのメンテナーによるチュートリアルで、検索結果への使用に焦点を当てています。
Drupalの場合と同様に、同じことを行うためのさまざまな方法があります。この方法が気に入ったのは、コンテンツタイプごとに結果を分類できるからです。