Hi,
Below is a example how you can use the views api to make what you want:
<code> /** * Definning the form */ function filter_form(){ // Get the filter information of your view $view = views_get_view(COGEAE_SAD_ALUNO_VIEW); $view->set_display(COGEAE_SAD_ALUNO_VIEW_DISPLAY_LISTA); $filters = &$view->display_handler->options['filters']; $options = array(); foreach($filters as $filter){ $options[$filter->id] = $filter->field; } $form = array(); $form['filter_type'] = array( '#title' => t('Filter'), '#type' => 'select', '#options' => array('title' => t('Nome')), '#default_value' => 'nome' ); $form['filter_query'] = array( '#title' => t('Text'), '#type' => 'textfield', ); $form['submit'] = array( '#title' => t('Search'), '#type' => 'submit', '#value' => 'Filtrar' );
return $form;
} </code>
In this case, COGEAE_SAD_ALUNO_VIEW and COGEAE_SAD_ALUNO_VIEW_DISPLAY_LISTA are the names of the view and the display. On submit method you have to do the same as the search module, and do a redirect on your data:
<code> /** * Receiving the form information */ function filter_form_submit($form, &$form_state){ $values = $form_state['values']; $filter_type = $values['filter_type']; $filter_query = $values['filter_query']; $form_state['redirect'] = "phonebook/search/results/{$filter_type}/{$filter_query}"; } </code>
Now you can filter the information using the parameters and render the view:
<code> /** * Using the views filter dinamically to filter you content */ function search_phonebook_results($filter_type = 'title', $filter_value = ''){ $view = views_get_view(COGEAE_SAD_ALUNO_VIEW); $view->set_display(COGEAE_SAD_ALUNO_VIEW_DISPLAY_LISTA); $filters = &$view->display_handler->options['filters']; $filters[$filter_type]['value'] = $filter_value; $view->pre_execute(); $view_content = $view->display_handler->preview(); $view->post_execute(); return $view_content; } </code>
I hope this help.
Att,
Pablo Lacerda de Miranda Analista de Sistemas Pontifícia Universidade Católica de São Paulo pablolmiranda@gmail.com +55 11 8701-1086