0

以下は、Apache solr 検索結果の前処理に使用するコードです。

function apachesolr_search_apachesolr_process_results(&$results, DrupalSolrQueryInterface $query) {
    $rows = array();
    foreach ($results as $key => $fields) {

        $rows [] = array(
            'title' => t($fields['fields']['title']),
            'Category' => $fields['fields']['category'],
            'Dper' => $fields['fields']['crtor'],
            'pvalue' => $fields['fields']['pvalue'],
            'rvalue' => $fields['fields']['rvalue'],
            'avalue' => $fields['fields']['avalue'],
        );
    }

    $header = array(
        array('data' => 'title', 'field' => 'title', 'sort' => 'ASC'),
        array('data' => 'category', 'field' => 'category', 'sort' => 'ASC'),
        array('data' => 'creator', 'field' => 'creator', 'sort' => 'ASC'),
        array('data' => 'pvalue', 'field' => 'pvalue'),
        array('data' => 'rvalue', 'field' => 'rvalue'),
        array('data' => 'avalue', 'field' => 'avalue'),
    );

    $results['processresults'] = theme('table', array('header' => $header, 'rows' => $rows));
    $results['processresults'] .= theme('pager');

    return $results;
}

同じ関数で $results['processresults'] を出力して終了すると、テーブルが生成されました。$results を返し、テーブルが apache solr 検索結果ページに表示されない場合。

4

1 に答える 1

3

process_results() フックに渡される $results 変数は、呼び出される可能性のある残りのフックとテンプレートを引き続き使用できるように、特定の構造を維持する必要があります。

検索結果をカスタマイズしたい場合は、search-results.tpl.phpおよびsearch-result.tpl.phpテンプレート ファイルを参照してください (2 番目の単数形に注意してください)。

コア検索モジュールでそれらのコピーを見つけることができます。これらのファイル全体をコピーして貼り付け (名前を変更する必要さえありません)、カスタム テーマの /templates/ フォルダーに配置します。キャッシュをクリアすると、キャッシュが優先されるため、取得されるはずです。

search-results.tpl.php ファイルは、検索結果ページ全体の外観を制御します。一方、search-result.tpl.php ファイルは、個々の検索結果を誰に表示するか (どのフィールド、どの順序で表示するかなど) を制御します。独自のカスタム テーマにコピーが作成されたので、好きなように変更してください。

うまくいけば、これはあなたが始めるのに十分です!!

于 2012-10-15T19:40:22.967 に答える