2012-01-21 21 views
0

我用暴露的過濾器製作了一個視圖。這個過濾器是基於分類的,我使用Hierarchical Select作爲小部件,因爲這個分類是深度嵌套的。如何在使用Hierarchical Select時更改Drupal Views中公開過濾器的默認值(-Any-)?

這個問題是很大的相似: 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有點不同...

回答

0

我對此有一個可怕的答案。

我在站點上更改線路402 /所有/模塊/ hierarchical_select/hs_taxonomy_views.module來自:

$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分類學公開過濾器,那麼即使沒有這樣的背景,「Any」選項也會顯示爲「全球」:奇怪。

我非常感謝,如果任何人都可以指出我的方向,這將允許我乾淨地解決這個問題。但現在我正在用我的黑客。

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; 
    }  
} 
+0

感謝您的回答......但問題現在已經很老了,我現在不想再回頭了。其他一些靈魂可能需要它,測試它,並讓你知道它是否有好處... –

相關問題