Views exposure formulier aanpassen

Forums: 
Drupalversie: 

Hoi,

Ik wil een Views filter exposure formulier aanpassen. Meerbepaald wil ik gebruikers de mogelijkheid bieden om alle content die tussen bepaalde datums ligt (CCK Date field) te laten tonen. Via de standaard filter exposure krijgen gebruikers zo meerdere dropdowns (eentje voor jaar, eentje voor maand) voor de begin- en einddatum. Ik wil die dropdowns nu combineren zodat men zal kunnen kiezen uit (vb. "2010 - januari", "2010 - februari" enzovoort).

Wat is de best practice methode hiervoor? Ik denk niet dat deze mogelijkheid bestaat in Views zélf? Is er een contrib module die dit wél kan? Of via hook_form_alter? En wat is dan de meest efficiënte manier in dat laatste geval?

Thx!

gerrit

Afhankelijk van je voorkeur kun je dit ofwel op theming niveau oplossen met de views-exposed-form--viewname--displayname.tpl.php template (klik op de "theme information" link in je view) of in template.php werken met THEMENAME_preprocess_views_exposed_form(&$vars, $hook).

Ofwel kun je inderdaad hook_form_alter gebruiken op de views-exposed-form in een custom module.

Hans
KOBA

Ik krijg er een punthoofd van!

Bedoeling is dus effectief dit met een custom module te doen. Dit is de hook_form_alter:

/**
* Implementation of hook_form_alter()
*/
function viewsbetterfilter_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'views_exposed_form') {
$form['date_filter']['min']['#type'] = $form['date_filter']['max']['#type'] = "select";
$form['date_filter']['min']['#options'] = $form['date_filter']['max']['#options'] = array('2010|1' => '2010 - jan', '2010|2' => '2010 - feb');
$form['date_filter']['min']['#size'] = $form['date_filter']['max']['#size'] = 1;
$form['#submit'][] = 'viewsbetterfilter_submit';
}
}

Ik herschrijf de opties in de dropdown dus naar één enkele waarde. Mijn bedoeling is in de submit functie viewsbetterfilter_submit die values uit $form dan te her-herschrijven naar de
oorspronkelijke - door de Views verwachte - 2 parameters: [min][month] en [min][year] (zelfde voor max). Uiteindelijk is het dan de bedoeling om een redirect te doen naar de juiste URL met die waarden erin.

Maar als ik bij wijze van test - met enkel de bovenstaande code in de module geïmplementeerd, manueel navigeer naar (bvb.)

www.mijndomein.com/home?date_filter[min][year]=2010&date_filter[min][month]=6&date_filter[max][year]=2013&date_filter[max][month]=12

dan krijg ik de blijkbaar mysterieuze error "Er is een ongeldige keuze vastgesteld. Neem contact op met de websitebeheerder." (in het Engels: An illegal choice has been detected. Please contact the site administrator.)

Alle hulp welkom!

Actuele inhoud

09 feb 2012

08 feb 2012

07 feb 2012

06 feb 2012

05 feb 2012