问题描述:

I'm using drupal 7, with apache solr...

I want to print a content field in the search results...Sounded easy enough,

I placed this function in a custom module:

function module_name_apachesolr_modify_query(&$query, &$params) {

$query->params['fl'] .= ',im_field_name';

}

I verified that the field name was correct in /admin/reports/apachesolr. I enabled the module, and everything so far looked correct.

Then in search-result.tpl.php I've done several variations of,

<?php print render($content['im_field_name']); ?>

With no success...I figured i might be doing something stupid. I'll keep plugging away at it, but any help is very appreciated! Thanks!

网友答案:

Currently learning this and I was looking for the same thing, but managed to get it working. Unfortunately, there doesn't seem to be much documentation around for Drupal 7, but there is a small chapter about it in The Definitive Guide to Drupal 7 book.

I used hook_apachesolr_query_alter(), for example:

function MODULE_apachesolr_query_alter(&$query, &$params, $caller) {
    $query->addParam('fl', 'im_field_name');
}

Adding the above meant it was now visible in the preprocess function for the template, so I did the below:

function THEME_preprocess_search_result(&$vars) {
    $vars['im_field_name'] = $vars['result']['fields']['im_field_name'][0];
}

Then it was available to the template:

<?php if ($im_field_name) : ?>
    <?php print $im_field_name; ?>
<?php endif; ?>
网友答案:

I highly recommend checking out the Display Suite module, for those wanting to customize the way search results are displayed by Apache Solr. It provides a high level of customization of search pages, including those generated by Apache Solr. Check out this screencast:

Display Suite for Drupal 7 - Part 5: search display

相关阅读:
Top