Drupal: где отображать пользовательские результаты поиска

#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;