diff --git a/apachesolr_search.module b/apachesolr_search.module index a94c0a9..dc3e844 100644 --- a/apachesolr_search.module +++ b/apachesolr_search.module @@ -467,6 +467,14 @@ function apachesolr_search_block_info() { 'info' => t('Apache Solr Core: Sorting'), 'cache' => DRUPAL_NO_CACHE, ); + + // Add an Apachesolr search form block for each search page + foreach (apachesolr_search_load_all_search_pages() as $page_id => $search_page) { + $blocks['search_form_' . $page_id] = array( + 'info' => t('Apachesolr search form : @page_label', array('@page_label' => $search_page['label'])), + 'cache' => DRUPAL_NO_CACHE, + ); + } return $blocks; } @@ -530,6 +538,29 @@ function apachesolr_search_block_view($delta = '') { } } } + // Search form cases + elseif ( 0 === strpos($delta, 'search_form_') ) { + foreach (apachesolr_search_load_all_search_pages() as $page_id => $search_page) { + if ($delta === 'search_form_' . $page_id) { + $search_page = apachesolr_search_page_load($page_id); + $menu_item = menu_get_item(); + if ($menu_item['page_callback'] === 'apachesolr_search_custom_page') { + $parts = explode('/', $search_page['search_path']); + $keys_pos = count($parts); + $keys = rawurldecode($menu_item['page_arguments'][$keys_pos]); + } + else { + $keys = ''; + module_load_include('pages.inc', 'apachesolr_search'); + } + $block = array( + 'subject' => t($search_page['page_title']), + 'content' => drupal_get_form('apachesolr_search_custom_page_search_form', $search_page, $keys), + ); + return $block; + } + } + } elseif (($node = menu_get_object()) && (!arg(2) || arg(2) == 'view')) { $suggestions = array(); // Determine whether the user can view the current node. Probably not necessary.