我有一个公开表的视图。我正在尝试一些事情。理想情况下,我希望有一个不带按钮即可触发表单的下拉菜单。如果这不可能,那么我希望按钮文本与应用文本有所不同。
我暂时将其修改,然后在views.module中更改views_form,但这似乎并不是正确的方法。我现在只有一个公开的表单,但是如果我添加更多的表单该怎么办?
请参见http://www.wiredvillage.ca/News作为我的示例。
我在drupal.org上闲逛,看到其他人也遇到同样的问题,但到目前为止还没有解决的办法。不知道获得Drupal帮助的最佳位置在哪里。
这是我到目前为止所做的更改:
function views_exposed_form(&$form_state) {
// Make sure that we validate because this form might be submitted
// multiple times per page.
$form_state['must_validate'] = TRUE;
$view = &$form_state['view'];
$display = &$form_state['display'];
$form_state['input'] = $view->get_exposed_input();
// Let form plugins know this is for exposed widgets.
$form_state['exposed'] = TRUE;
$form['#info'] = array();
if (!variable_get('clean_url', FALSE)) {
$form['q'] = array(
'#type' => 'hidden',
'#value' => $view->get_url(),
);
}
// Go through each filter and let it generate its info.
foreach ($view->filter as $id => $filter) {
$view->filter[$id]->exposed_form($form, $form_state);
if ($info = $view->filter[$id]->exposed_info()) {
$form['#info']['filter-' . $id] = $info;
}
}
// I CHANGED The VALUE OF THIS SUBMIT BUTTON TO GO
$form['submit'] = array(
'#name' => '', // prevent from showing up in $_GET.
'#type' => 'submit',
'#value' => t('go'),
);
$form['#action'] = url($view->get_url());
$form['#theme'] = views_theme_functions('views_exposed_form', $view, $display);
$form['#id'] = views_css_safe('views_exposed_form-' . check_plain($view->name) . '-' . check_plain($display->id));
// $form['#attributes']['class'] = array('views-exposed-form');
// If using AJAX, we need the form plugin.
if ($view->use_ajax) {
drupal_add_js('misc/jquery.form.js');
}
views_add_js('dependent');
return $form;
}
最佳答案
如果您希望下拉菜单触发,我将使用JavaScript而不是按照Eaton的建议修改模块。
基本上,您可以按照Eaton的建议使用hook_form_alter修改文本,然后在相同的hook_form_alter中使用,使用您的自定义JS添加对drupal_add_js的调用,这将隐藏按钮并在选择下拉列表的onChange处理程序上提交表单。您希望那里有JS失败的那10%的用户的“提交”按钮。
关于drupal - Drupal Views2公开表格如何更改,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/451745/