在使用Hierarchical Select时,如何更改Drupal Views中公开过滤器的默认值(-Any-)?

时间:2012-01-21 19:02:28

标签: drupal drupal-6

我用暴露的过滤器制作了一个视图。这个过滤器是基于分类的,我使用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时,我应该在$ form数组中放置'#options'键,以使其工作?我已经尝试在整个阵列的不同位置盲目地粘贴相关的代码行,但我相信HS与FAPI有点不同......

2 个答案:

答案 0 :(得分:0)

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

我更改了site / 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分类法公开过滤器,它的“任何”选项将显示为“全球”,即使没有这样的上下文:很奇怪。
  3. 如果有人能指出我能够让我彻底解决这个问题的方向,我将不胜感激。但我现在要和我的黑客一起去。

答案 1 :(得分:0)

您可以使用以下代码任何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;
  }     
}