Bei Views in Drupal gibt es zwei beliebte Fragestellungen, die vom Module selbst nicht gelöst werden:
a) Der Apply-Button sollte besser ein Search-Button sein.
b) Es sollte einen Reset-Button geben, der die Suche zurücksetzt.
Meine ursprüngliche Lösung für den Search-Button war eine Implementation über die template.php.
function theme_preprocess_views_exposed_form(&$vars, $hook) {
// Change the text on the submit button
$vars['form']['submit']['#value'] = t('Search');
// Rebuild the rendered version (submit button, rest remains unchanged)
unset($vars['form']['submit']['#printed']);
$vars['button'] = drupal_render($vars['form']['submit']);
}
Die Frage des Reset-Buttons kam später auf, und ich beschloss, lieber ein eigenes Custom-Module dafür zu nutzen. Dabei war natürlich erstmal nichts sichtbar – logisch, wenn Module und template.php versuchen, das gleiche zu überschreiben. Also löschte ich den Search-Button aus der template.php und implementierte beide Buttons über ein Custom Module views_formalter.
Das folgende wäre der Code, um für alle Views einen Reset-Button zu liefern:
<?php
/**
* Implementation of hook_form_alter().
*/
function views_formalter_form_alter(&$form, $form_state, $form_id) {
if ($form_id == 'views_exposed_form') {
$reset_button_value = t('Reset');
$current_display = $form_state['view']->current_display;
$form['submit']['#value'] = t('Search');
$form['reset'] = array(
'#type' => 'markup',
'#value' => '<input class="form-button" type="reset"
value="'. $reset_button_value . ' " onClick="javascript:window.location=\''.$GLOBALS['base_url'] .'?q='. $form_state['view']->display[$current_display]->
display_options['path'] .'\';" />',
);
}
}
?>
Bei onclick wird der Pfad des Views aufgerufen. Sah zunächst prima aus – dann fiel mir auf, dass das Suchfeld in organic groups ebenfalls ein exposed filter view ist, nämlich og_search. Also eine zusätzliche Abfrage eingebaut:
$exposed_views = array('og_search');
if (!in_array($form_state['view']->name, $exposed_views)) {
$reset_button_value = t('Reset');
...
}
Ursprünglich war diese Abfrage so formuliert, dass explizit diejenigen Views angegeben werden mussten, für die ein Reset-Button gezeigt werden sollte. Da in meinem Projekt die meisten Views den Button zeigen sollten, habe ich die Abfrage umgedreht.
Meine Tweets abonnieren 
Sorry, the comment form is closed at this time.