path . '/' . $variables['keywords']; $keys = array(); if (count($variables['types']) && !in_array('all', $variables['types'])) { foreach ($variables['types'] as $key => $value) { $keys["filter[type][$key]"] = "\"$value\""; } } if (module_exists('taxonomy') && count($variables['terms'])) { // Get index fields info, and keeps only the taxonomy ones. $index = search_api_index_load($variables['page']->index_id); $fields = array(); foreach ($index->options['fields'] as $field => $data) { if (isset($data['entity_type']) && $data['entity_type'] == 'taxonomy_term') { $field_info = field_info_field($field); $fields[$field_info['settings']['allowed_values'][0]['vocabulary']] = $field; } } // Adds terms. foreach ($variables['terms'] as $key => $value) { $term = taxonomy_term_load($value); if (array_key_exists($term->vocabulary_machine_name, $fields)) { $keys['filter[' . $fields[$term->vocabulary_machine_name] . '][' . $key . ']'] = "\"$value\""; } } } return array('path' => $type, 'query' => $keys); }