当使用分层选择时,如何更改Drupal视图中公开过滤器的默认值(-Any-)?

当使用分层选择时,如何更改Drupal视图中公开过滤器的默认值(-Any-)?,drupal,drupal-6,Drupal,Drupal 6,我用一个暴露的过滤器做了一个视图。这个过滤器是基于分类法的,我使用Hierarchy Select作为小部件,因为这个分类法嵌套得很深 这个问题非常类似于: 但是,该问题的海报没有使用HS,因此我无法使用那里的答案,特别是这一个: 在使用hook\u form\u alter时,我应该在$form数组中的什么位置放置“options”键以使其工作?我曾尝试在整个阵列的不同位置盲目粘贴相关代码行,但我相信HS的工作原理与FAPI稍有不同…对此我有一个可怕的答案 我将sites/all/modul

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

这个问题非常类似于:

但是,该问题的海报没有使用HS,因此我无法使用那里的答案,特别是这一个:


在使用hook\u form\u alter时,我应该在$form数组中的什么位置放置“options”键以使其工作?我曾尝试在整个阵列的不同位置盲目粘贴相关代码行,但我相信HS的工作原理与FAPI稍有不同…

对此我有一个可怕的答案

我将sites/all/modules/hierarchy_select/hs_taxonomy_views.module中的第402行更改为:

$any_label = variable_get('views_exposed_filter_any_label', 'old_any') === 'old_any' ? '<'. t('Any') .'>' : '- '. t('Any') .' -';
这是因为:在这个网站上,我只需要视图上的过滤器,而不需要其他任何地方

这永远不可能是一个通用的解决方案,因为:

黑客攻击模块核心的邪恶罪恶将永远困扰着我,因为我再也不能使用drush更新这个模块了。 如果我在这个网站上做了另一个视图,并决定公开一个hs分类过滤器,它的任何选项都将显示为全球范围,即使没有这样的上下文:怪异。
如果有人能给我指出一个方向,让我能够干净利落地解决这个问题,我将不胜感激。但是我现在要用我的hack。

您可以在任何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;
  }     
}

谢谢你的回答。。。但是这个问题现在已经很老了,我现在不想再谈这个问题了。其他灵魂可能需要它,测试它,让你知道它是否有任何好处。。。
/**
 * 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;
  }     
}