Skip to content

Instantly share code, notes, and snippets.

@mootari
Last active August 29, 2015 14:21
Show Gist options
  • Save mootari/681135d10c6005e074fa to your computer and use it in GitHub Desktop.
Save mootari/681135d10c6005e074fa to your computer and use it in GitHub Desktop.
Inject facet block in views exposed form
<?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