Как изменить значение по умолчанию (-Any-) открытого фильтра в Drupal Views при использовании иерархического выбора? - PullRequest
0 голосов
/ 21 января 2012

Я сделал вид с выставленным фильтром.Этот фильтр основан на таксономии, и я использую иерархический выбор в качестве виджета, потому что эта таксономия глубоко вложена.

Этот вопрос очень похож на: Как изменить метку значения по умолчанию (-Любой-) открытого фильтра в Drupal Views?

Однако, автор этого вопроса не использовал HS, и поэтому я не могу использовать ответы там, в частности, этот: https://stackoverflow.com/a/5975294/443219

Где именно я должен поместить ключ '#options' в массив $ form при использовании hook_form_alter, чтобы это работало?Я пытался слепо вставить соответствующую строку кода в разных местах массива, но я считаю, что HS работает немного иначе, чем FAPI ...

Ответы [ 2 ]

0 голосов
/ 05 августа 2013

Вы можете использовать следующий код любого модуля 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 голосов
/ 22 января 2012

У меня ужасный ответ на это.

Я изменил строку 402 в sites / all / modules /ierarchical_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, его опция «Любой» будет отображаться как «Во всем мире», даже если такого контекста нет: странный.

Я был бы очень признателен, если бы кто-нибудь указал мне направление, которое позволило бы мне решить это чисто. Но сейчас я собираюсь взломать.

...