#drupal-6
#drupal-6
Вопрос:
Я создал простой блочный модуль с полем выбора (где пользователь может выбрать определенный тип пользователя, проект или группу разработчиков) и может ввести поисковый запрос.
При отправке он запрашивает узлы, у которых есть теги theses.
Результаты, ссылки на профили пользователей или узлы, должны быть напечатаны на странице.
Я не знаю, как распечатать результаты.
Я хочу перейти на другую страницу и показать результаты там… Но как я могу это сделать?
<?php
// $Id$
/*
* @file
* Searches on Project, Person, Freelancer or Group. Search will be done on taxonomy.
*/
define('GENERAL_TAGS_VID', 25);
/**
* Implementation of hook_menu().
*/
function vm_search_menu() {
$items['zoek'] = array(
'title' => t('Zoek'),
'page callback' => 'zoek_view',
'access arguments' => array('search content'),
'type' => MENU_SUGGESTED_ITEM,
);
return $items;
}
/**
* Define the form.
*/
function vm_search_general_search_form() {
$search_on = array(
'project' => 'Zoek project',
'freelancer' => 'Zoek freelancer',
'persoon' => 'Zoek persoon',
'groep' => 'Zoek groep',
);
$form['search_on'] = array(
'#type' => 'select',
'#options' => $search_on,
);
$form['search_term'] =
array('#type' => 'textfield',
'#autocomplete_path' => 'taxonomy/autocomplete/'. GENERAL_TAGS_VID,
'#maxlength' => 1024,
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Zoek'),
);
return $form;
}
function vm_search_block($op = 'list', $delta = 0, $edit = array()) {
switch ($op) {
case 'list':
$blocks[0]['info'] = t('General Search');
return $blocks;
case 'view':
$block['subject'] = t('Zoek');
$block['content'] = drupal_get_form('vm_search_general_search_form');
return $block;
}
}
function vm_search_general_search_form_submit($form, amp;$form_state) {
switch ($form_state['values']['search_on']) {
case 'project':
case 'groep':
$nodes = search_nodes($form_state);
break;
case 'freelancer':
case 'persoon':
$users = search_users($form_state);
}
dpm($form_state);
}
Ответ №1:
Вероятно, вы можете справиться с этим несколькими способами, но 2 из них вы могли бы рассмотреть:
1. (Способ, которым это обрабатывает поиск по умолчанию) Добавьте параметры поиска к URL, чтобы их можно было извлечь и просмотреть на соответствующей странице. На самом деле не запрашивайте результаты, пока вы не отправите их на страницу, которую вы определили в своем меню.
2. Измените местоположение записи в вашей форме и попросите вашу форму не перенаправлять. По умолчанию ваши формы будут публиковаться обратно на ту же страницу и перенаправляться в конце публикации. Используя следующее, вы сможете повлиять на это поведение:
$form['#action'] = url('zoek');
$form['#redirect'] = FALSE;