現在のページがApache solr検索結果ページであるかどうかをモジュールまたはテーマ内から判断するにはどうすればよいですか?
モジュールから特定しようとしている場合は、arg()関数を使用して、パス引数を介してページが検索結果ページであるかどうかを確認できます。
if (arg(0) == 'search') {
TRUE
}
else {
FALSE
}
テーマの観点からは、単純に使用できます
<?php if ($search_results) : ?>
<!-- Do this on search results pages -->
<?php endif; ?>
$search_results
は、検索結果ページが表示されている場合にのみtrueを返します。
結果自体のスタイル設定を検討している場合は、 search-result.tpl.php を検討することをお勧めします。
ページが検索ページかどうかを確認するには、現在のURLの最初のパス要素がsearch
であり、2番目のパス要素がhook_search()
を実装するモジュールの名前であることを確認する必要があります。 (一時変数を使用し、コードを読みやすくするために括弧を追加しました。)
_$bool = ((arg(0) == 'search') &&
($module == arg(1)) && module_invoke($module, 'search', 'name')
);
if ($bool) {
// The page is a search page returned from apachesolr.module.
}
_
特定のケースでは、ページがapachesolr.moduleから返された結果ページであるかどうかを確認することを考慮して、コードを次のように簡略化できます。
_if ((arg(0) == 'search') && (arg(1) == 'apachesolr')) {
// The page is a search page returned from apachesolr.module.
}
_
汎用コードを簡略化できる理由は、モジュールの名前がわかっていることと、そのモジュールが確実にhook_search()
を実装していることです。hook_search()
を部分的にのみ実装するモジュールがあるため、最後のパラメーターが_"name"
_に等しい場合、汎用コードはhook_search()
によって返される値を検証します。少なくとも、OpenSearch Feedのコードをデバッグしているときに発見したこと。
Solrが検索されたかどうかを確認する場合は、 apachesolr_has_searched() 関数を使用できます。
これは、検索結果ページが表示されているかどうかを示すものではありません。Solrビューの使用を開始すると、検索結果ページの定義はあいまいですが、Solr検索が実行されたかどうかはわかります。
参考までに apachesolr_static_response_cache() はsolrsの応答を提供し、 apachesolr_current_query() はクエリに関する情報を提供します。