Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * Implements hook_view_pre_view().
- */
- function csettings_views_pre_view(&$view, &$display_id, &$args) {
- //function csettings_views_pre_build(&$view) {
- if ($view->name == 'catalog' && $view->current_display == 'page') {
- $views_object_types = views_object_types();
- //kpr($view);
- //kpr($view->display_handler->get_handlers('filter'));
- //kpr($views_object_types);
- //$view_filters = $view->display['page']->handler->get_option($views_object_types['filter']['plural']);
- //kpr($view_filters);
- //kpr($view->display['page']->handler); // ->options['filters'] ФИЛЬТРА ТУТ
- if (isset($view->args) && count($view->args) == 1) { // It should be taxonomy term tid :)
- $term = taxonomy_term_load(reset($view->args));
- if ($term === FALSE) {
- return;
- }
- $possible_node_types = array();
- // Iterate all node types
- foreach(array_keys(node_type_get_names()) as $node_type) {
- $instances = field_info_instances('node', $node_type);
- $has_product_reference = FALSE;
- $has_term_reference = FALSE;
- $field_api_fields = array();
- // Iterate all instancies searching for all posible fields
- foreach ($instances as $instance) {
- $field_info = field_info_field($instance['field_name']);
- // use only FIELD_LOAD_CURRENT: FIELD_LOAD_REVISION consists same fields. differs only table name...
- foreach($field_info['storage']['details']['sql']['FIELD_LOAD_CURRENT'] as $sql_table => $sql_fields) {
- foreach($sql_fields as $sql_field) {
- $field_api_fields[] = $sql_field;
- }
- }
- if ($field_info['type'] == 'taxonomy_term_reference') {
- foreach ($field_info['settings']['allowed_values'] as $vocabulary) {
- if ($vocabulary['vocabulary'] == $term->vocabulary_machine_name) {
- $has_term_reference = TRUE;
- $instances = field_info_instances('taxonomy_term', $term->vocabulary_machine_name);
- foreach ($instances as $instance) {
- $field_info = field_info_field($instance['field_name']);
- foreach($field_info['storage']['details']['sql']['FIELD_LOAD_CURRENT'] as $sql_table => $sql_fields) {
- foreach($sql_fields as $sql_field) {
- $field_api_fields[] = $sql_field;
- }
- }
- }
- }
- }
- }
- if ($field_info['type'] == 'commerce_product_reference') {
- $has_product_reference = TRUE;
- foreach($instance['settings']['referenceable_types'] as $product_type => $v) {
- if ($product_type === $v) {
- $instances = field_info_instances('commerce_product', $product_type);
- foreach ($instances as $instance) {
- $field_info = field_info_field($instance['field_name']);
- foreach($field_info['storage']['details']['sql']['FIELD_LOAD_CURRENT'] as $sql_table => $sql_fields) {
- foreach($sql_fields as $sql_field) {
- $field_api_fields[] = $sql_field;
- }
- }
- }
- }
- }
- }
- if ($has_term_reference && $has_product_reference) {
- $possible_node_types[$node_type] = $field_api_fields;
- }
- }
- }
- $views_object_types = views_object_types();
- $view_filters = $view->display['page']->handler->get_option($views_object_types['filter']['plural']);
- $view_filters1 = array();
- // kpr($view);
- foreach ($possible_node_types as $node_type => $field_api_fields) {
- foreach($view_filters as $view_field => $filter) {
- if (isset($filter['exposed']) && $filter['exposed'] && !in_array($filter['field'], $field_api_fields)) {
- //unset($filter);
- //unset($view->display['page']->handler->options['filters'][$view_field]);
- //$view->display['page']->handler->options['filters'][$view_field]['exposed'] = FALSE;
- // MY PREVIOUS TRY
- /*
- unset($view->display[$view->current_display]->display_options['filters'][$view_field]);
- unset($view->display[$view->current_display]->handler->options['filters'][$view_field]);
- unset($view->display_handler->display->display_options['filters'][$view_field]);
- unset($view->display_handler->options['filters'][$view_field]);
- */
- // YOUR SUGGESTION
- //$view->display_handler->handlers['filter'][$filter_field]->options['exposed'] = FALSE;
- // PRE EXECUTE
- //unset($view->display_handler->handlers['filter'][$view_field]);
- //unset($view->filter[$view_field]);
- } else {
- $view_filters1[$view_field] = $filter;
- }
- }
- }
- //kpr($view_filters);
- //kpr($view_filters1);
- //$view->display_handler->override_option('filters', $view_filters1);
- // kpr($view->display['page']->handler->options);
- //kpr($possible_node_types);
- //kpr($view_filters);
- //kpr($view->display['page']->handler); // ->get_option($views_object_types['filter']['plural']
- // kpr($view);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment