it-swarm-ko.tech

Views 2 노출 필터에 대한 기본 선택 변경

View에 노출 된 필터가있어 사용자가 두 가지 다른 콘텐츠 유형 중에서 선택할 수 있습니다. 노출 된 필터의 기본값은 알파벳순으로 가장 먼저 나오는 콘텐츠 유형에 따라 선택되는 것 같습니다. 따라서 사용자가 "Band"와 "Song"컨텐츠 유형 중에서 선택할 수있게하려면 기본값은 "Band"입니다. 이 기본값을 다른 컨텐츠 유형으로 변경하고 싶습니다 (이 예에서는 "Song"). 이에 대한보기 인터페이스에서 옵션을 찾을 수 없습니다. hook_form_alter를 통해이 작업을 수행해야합니까? 그렇다면 정확히 어떻게해야합니까?

7
Chaulky

따라서 @David Lanier가 제안한 방식을 시도했지만 머리를 감쌀 수 없었습니다. 그래서 Drupal 기본으로 돌아가서 hook_form_alter()_ 접근 방식에서 시도했습니다. 문제를 해결 한 후 변경에 대한 소설을 찾았습니다. default Views filter values ​​ . 동일한 접근 방식을 취해 작동 시켰습니다. 아래는 사이트 고유의 항목을 제거하기 위해 몇 가지 수정 사항이있는 코드입니다. "modulename"을 모듈 이름으로 바꾸십시오.

function modulename_form_alter(&$form, $form_state, $form_id) {
 // is this the right form?
 if($form['#id'] == 'name-of-the-views-form-displayed') {
   if (empty($_GET['label-of-the-filter']))  {
    $form_state['input']['label-of-the-filter'] = 'default-value-for-filter';
   }
  }
}

그냥 name-of-the-views-form-displayed 당신이 생각하기에, 당신이 바꾸고 자하는 뷰 폼의 이름. 이것을 찾는 가장 쉬운 방법은 브라우저에서 View의 소스를 검사하고 (Firebug를 좋아합니다) form 요소를 찾은 다음 id 속성을 얻는 것입니다. 필터 이름과 설정해야하는 값을 찾으려면 필터를 변경하고 "검색"을 수행하십시오. 주소 표시 줄을 보면 여기에서 URL의 매개 변수로 사용해야하는 값이 표시됩니다.

이것이이 문제를 다른 사람들에게도 도움이되기를 바랍니다.

5
Chaulky

나는 이렇게했다

function hook_form_views_exposed_form_alter(&$form, &$form_state) {

  global $user;
  $account = user_load($user->uid);
  $term = taxonomy_term_load($account->field_user_industry[LANGUAGE_NONE]['0']['tid']);

  unset($form['field_event_industry_tid']['#size']);
  if ($form['#id'] == 'views-exposed-form-events-events-pane') {
    // get the view argument if defined
    $term_filter=$_GET;
    unset($term_filter['q']);
    $term_arg = $term_filter;
    if (!empty($term_arg)) {
      $terms = $term_arg;
    }

    // change our input as required
    if (isset($terms)) {
      $form_state['input']['field_event_industry_tid'] = $terms['field_event_industry_tid'];
    }
    else{
      $form_state['input']['field_event_industry_tid'] = $term->tid;
    }
  }
}

필자의 경우 쿼리에 따라 기본값을 변경해야했지만 그렇지 않은 경우 원하는 값을 사용하면 완벽하게 작동합니다!

2
David

어쩌면 당신은 이미 답을 얻었지만 여기에 내가 해결 한 방법이 있습니다. 보기에서 필터를 편집하면 "목록을 선택한 항목으로 제한"이라는 옵션이 있습니다. 해당 옵션을 확인하고 기본값이 재설정되었으므로 이제 필터의 기본값은 모두 (Any 태그 포함)입니다.

1
Oriol

필터가 노출되면 필터 구성 옵션에 사이트의 각 콘텐츠 유형에 대한 확인란이 표시됩니다. 여기에서 확인하는 것은 최종 사용자가보기를 볼 때 기본적으로 선택된 것입니다.

양식에서 일부 컨텐츠 유형 만 사용 가능하고 사전 선택된 일부 유형 만 필요한 경우 다음과 같이해야합니다. 두 가지 컨텐츠 유형 필터를 추가하십시오.

  • 필터 1 = 사용 가능한 컨텐츠 유형 만 이 필터를 노출시키지 마십시오.
  • 필터 2 = 노출 된 필터. 기본적으로 미리 선택해야하는 항목을 선택하십시오.
1
David Lanier

게시물 하단을 참조하십시오.

http://realguess.net/node/28

고객 성별에서 선택 사항을 선택하지 않고 선택 사항을 선택하는 경우이 노출 된 필터는 선택 사항이며 설정하지 못하게하는 옵션이 추가됩니다. 상자가 기본 선택입니다. Male 항목을 선택하면 뷰가 렌더링 될 때 기본 선택 항목이 Male입니다.

0
Sid Kshatriya