To change views exposed date filter to month only.
/**
* Impliments hook_form_views_exposed_form_alter
*
*/
function exposed_date_filter_form_views_exposed_form_alter(&$form, $form_state) {
$view = $form_state['view']->name;
$view_array = array('story', 'news');
if(in_array($view, $view_array)) {
// Switch date formatter to month only
if($form['field_date_value_1']['value']['#type'] == 'date_select') {
$form['field_date_value_1']['value']['#date_format'] = 'm';
// Add extra validator to handle filter submit
$form['#validate'][] = 'exposed_date_filter_views_exposed_form_validate';
}
if($form['field_date_3_value_1']['value']['#type'] == 'date_select') {
$form['field_date_3_value_1']['value']['#date_format'] = 'm';
// Add extra validator to handle filter submit
$form['#validate'][] = 'exposed_date_filter_views_exposed_form_validate';
}
if($form['field_date_2_value_1']['value']['#type'] == 'date_select') {
$form['field_date_2_value_1']['value']['#date_format'] = 'm';
// Add extra validator to handle filter submit
$form['#validate'][] = 'exposed_date_filter_views_exposed_form_validate';
}
}
}
/**
* Custom validator for exposed date filter
*/
function exposed_date_filter_views_exposed_form_validate(&$form, &$form_state) {
$handlers = &$form_state['view']->filter;
foreach ($handlers as $key => $handler) {
if (!empty($handler->options['exposed'])
&& isset($form[$key]['value']['#type'])
&& $form[$key]['value']['#type'] == 'date_select'
&& $form[$key]['value']['#date_format'] == 'm'){
$handler->options['granularity'] = 'month';
$handler->format = 'm';
}
}
}