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.phpsearch-result.tpl.php模板文件(注意第二个中的单数)。

您可以在核心搜索模块中找到它们的副本,我只需复制并粘贴这些整个文件(甚至无需重命名它们)并将它们放在您自定义主题的 /templates/ 文件夹中。清除缓存后,它们应该被拾取,因为它们现在具有优先权。

search-results.tpl.php 文件控制整个搜索结果页面的外观,而 search-result.tpl.php 文件控制显示单个搜索结果的对象(哪些字段、以何种顺序等)。既然您在自己的自定义主题中有副本,可以随意修改它们!

希望这足以让你开始!

于 2012-10-15T19:40:22.967 回答