Я изменяю уже добавленный модуль drupal (Inline Ajax Search) для обработки поиска определенного типа контента с помощью некоторых поисковых фильтров (т. Е. При поиске справочной документации вы отфильтровываете результаты поиска, выбирая, для какого продукта и версии) продукт, с которым вы хотите помочь).
Я немного изменил модуль, чтобы обрабатывать все поисковые фильтры.
Я также добавил аналогичную функциональность из стандартного основного модуля поиска для обработки представления формы поиска и результатов поиска на реальной странице поиска (а не в блочной форме).
Проблема в том, что когда я отправляю форму, я обнаружил, что потерял все свои данные поста в этой отправке, потому что где-то, и я не знаю, где drupal либо перенаправляет меня, либо происходит что-то еще, что заставляя меня потерять все в массиве $ _POST.
вот реализация hook_menu ():
<?php
function inline_ajax_search_menu() {
$items = array();
$items['search/inline_ajax_search'] = array(
'title' => t('Learning Center Search'),
'description' => t(''),
'page callback' => 'inline_ajax_search_view',
'access arguments' => array('search with inline_ajax_search'),
'type' => MENU_LOCAL_TASK,
'file' => 'inline_ajax_search.pages.inc',
);
}
?>
обратный вызов страницы определяется как таковой (очень похоже на функцию search_view основного поискового модуля):
<?php
function inline_ajax_search_view() {
drupal_add_css(drupal_get_path('module', 'inline_ajax_search') . '/css/inline_ajax_search.css', 'module', 'all', FALSE );
if (isset($_POST['form_id'])) {
$keys = $_POST['keys'];
// Only perform search if there is non-whitespace search term:
$results = '';
if(trim($keys)) {
require_once( drupal_get_path( 'module', 'inline_ajax_search' ) . '/includes/inline_ajax_search.inc' );
// Collect the search results:
$results = _inline_ajax_search($keys, inline_ajax_search_get_filters(), "page" );
if ($results) {
$results = theme('box', t('Search results'), $results);
}
else {
$results = theme('box', t('Your search yielded no results'), inline_ajax_search_help('inline_ajax_search#noresults', drupal_help_arg()));
}
}
// Construct the search form.
$output = drupal_get_form('inline_ajax_search_search_form', inline_ajax_search_build_filters( variable_get( 'inline_ajax_search_filters', array() ) ) );
$output .= $results;
return $output;
}
return drupal_get_form('inline_ajax_search_search_form', inline_ajax_search_build_filters( variable_get( 'inline_ajax_search_filters', array() ) ) );
}
?>
Насколько я понимаю, все должно работать следующим образом: пользователь заходит на www.mysite.com/search/inline_ajax_search, а drupal обработает путь, указанный в моем URL, и предоставит мне страницу с тематической формой для моего поиска. модуль. Когда я отправляю форму, действие которой совпадает с URL-адресом (www.mysite.com/search/inline_ajax_search), мы выполняем те же самые вызовы функций, но теперь у нас есть данные в массиве $ _POST, и один из них действительно равен $ _POST ['form_id'], который является именем формы "inline_ajax_search_search_form". поэтому мы должны иметь возможность войти в блок if и выдать результаты поиска.
но это не то, что происходит ... где-то, когда я отправляю форму и получаю свои результаты и настраиваю все это, я получаю перенаправление, как и теряю все свои почтовые данные.
если кто-нибудь сможет мне помочь, это сделает меня таким счастливым, лол.