2012-10-30 259 views
0

获得搜索表单值我试图实现映入写在默认的搜索表单的按键和显示器比默认的搜索结果页面上的其他结果一个新的模块。有了这些其他结果,我将创建一个外部查询,并将其放入特殊块中。我怎么能在Drupal 7

如何做到这一点任何想法?

我试图使用自定义模块制造“hook_alter_form”,但没有成功。

换句话说:

我有这样的功能:

function my_function_name_form_alter(&$form,&$form_state,$form_id){ 
    switch($form_id){ 
     case 'search-block-form': 
    //Here i want to catch the text that i wrote in the search box 
    break; 
    } 
    } 

感谢ü!

+0

你应该告诉我们你尝试过什么和它失败了。事实上,这个问题非常广泛,很难回答。 –

+0

**好,我已经创建了德模块在我有这样的功能:** '函数my_function_name_form_alter(&$形式,&$ form_state,$ form_id){ 开关($ form_id){ 情况下'搜索块形“: //这里我要赶上我在搜索框中 休息写的文字; } }' 感谢ü! – acidaniel

+0

你或许应该投入的可读性和任何人原来的问题后,谁使我有这个。使用问题底部的“编辑”链接。 –

回答

0

可以改变,以便在搜索查询,以显示其他结果:

function mymodule_query_alter(QueryAlterableInterface $query){ 
    $is_search = FALSE; 
    foreach ($query->getTables() as $table) { 
    if ($table['table'] == 'search_index') { 
     $is_search = TRUE; 
    } 
    } 

if ($is_search) { 
    global $language; 

    $db_or = db_or(); 
    $db_or->condition('n.type', 'event', '='); 
    $db_or->condition('n.type', 'real_sitio', '='); 
    $query->condition($db_or); 

    $query->condition('n.language' , $language->language, '='); 
} 
} 

这是一个有点性能杀手所以有在http://drupal.org/node/1435834为Drupal补丁,增加了一个挂钩,使得直接在搜索改变查询:

所以最后它会是什么样子:

function mymodule_search_query_search_node_alter(&$query) { 
    $query->condition('n.type', 'article', '='); 
}