Last active
August 29, 2015 14:21
-
-
Save mootari/681135d10c6005e074fa to your computer and use it in GitHub Desktop.
Inject facet block in views exposed form
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
function MODULE_get_exposed_facet_token($delta) { | |
return "<!-- FACET:$delta -->"; | |
} | |
/** | |
* Implements hook_form_FORM_ID_alter(). | |
*/ | |
function MODULE_form_views_exposed_form_alter(&$form, &$form_state, $form_id) { | |
$facets['{VIEW}:{DISPLAY}'] = 'search_api@{INDEX}:block:{FIELD_NAME}'; | |
$view_name = $form_state['view']->name . ':' . $form_state['view']->current_display; | |
if(isset($facets[$view_name])) { | |
$delta = array_search($facets[$view_name], facetapi_get_delta_map()); | |
$form_state['view']->exposed_facets[$delta] = $facets[$view_name]; | |
$form['facets'] = array( | |
'#markup' => MODULE_get_exposed_facet_token($delta) | |
); | |
} | |
} | |
/** | |
* Implements hook_preprocess_HOOK(). | |
*/ | |
function MODULE_preprocess_views_view(&$vars) { | |
$placeholders = !empty($vars['view']->exposed_facets) ? $vars['view']->exposed_facets : array(); | |
foreach($placeholders as $delta => $facet) { | |
$token = MODULE_get_exposed_facet_token($delta); | |
$block = facetapi_block_view($delta); | |
// @todo inject views-ajax-link class | |
$vars['exposed'] = str_replace($token, drupal_render($block), $vars['exposed']); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment