【问题标题】:How to change the default value (-Any-) of an exposed filter in Drupal Views, when using Hierarchical Select?使用分层选择时,如何更改 Drupal 视图中公开过滤器的默认值 (-Any-)?
【发布时间】:2012-01-21 19:02:27
【问题描述】:

我制作了一个带有暴露过滤器的视图。这个过滤器是基于分类的,我使用 Hierarchical Select 作为小部件,因为这个分类嵌套很深。

这个问题非常类似于: How to change the label of the default value (-Any-) of an exposed filter in Drupal Views?

但是,那个问题的发布者没有使用 HS,所以我不能在那里使用答案,特别是这个:https://stackoverflow.com/a/5975294/443219

在使用 hook_form_alter 时,我应该将“#options”键放在 $form 数组中的哪个位置才能完成这项工作?我尝试在整个数组的不同位置盲目粘贴相关代码行,但我相信 HS 的工作方式与 FAPI 有点不同......

【问题讨论】:

    标签: drupal drupal-6


    【解决方案1】:

    我对此有一个可怕的答案。

    我将 sites/all/modules/hierarchical_select/hs_taxonomy_views.module 中的第 402 行从:

    $any_label = variable_get('views_exposed_filter_any_label', 'old_any') === 'old_any' ? '<'. t('Any') .'>' : '- '. t('Any') .' -';
    

    $any_label = variable_get('views_exposed_filter_any_label', 'old_any') === 'old_any' ? 'Worldwide' : '- '. t('Any') .' -';
    

    之所以有效,是因为:在这个站点中,我只需要查看过滤器 - 其他任何地方都不需要。

    这绝不是一个通用的解决方案,因为:

    1. 入侵模块核心的罪恶将永远困扰着我,因为我再也无法使用 drush 再次更新此模块。
    2. 如果我在此站点中创建另一个视图,并决定使用 hs 分类法公开过滤器,即使没有这样的上下文,它的“任何”选项也会显示为“全球”:奇怪。

    如果有人能指出一个可以让我彻底解决这个问题的方向,我将不胜感激。但我现在要使用我的技巧。

    【讨论】:

      【解决方案2】:

      您可以在任何 drupal 模块中使用以下代码。这会起作用。

      /**
       * hook_views_pre_view
       * @param type $view
       * @param type $display_id
       * @param type $args
       */
      function MODULE_NAME_views_pre_view(&$view, &$display_id, &$args) {
        if ($view->name == 'VIEW_NAME') {
          $filters = $view->display_handler->get_option('filters');    
          $view->display_handler->override_option('filters', $filters);
        }
      }
      
      
      
      /**
       * hook__views_pre_build
       * @param type $view
       * @return type
       */
      function MODULE_NAME_views_pre_build($view) { 
        if ($view->name=='VIEW_NAME') {    
          $view->display['page']->handler->handlers['filter']['filter_field']->value['value'] = 8;
          return $view;
        }     
      }
      

      【讨论】:

      • 感谢您的回答...但是问题现在已经很老了,我现在不想再回头了。其他一些灵魂可能需要它,测试它,然后让你知道它是否有用......
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多