노출 된 필터에 대한 결과 량 표시


10

내보기에서 내용을 필터링하기 위해 노출 된 필터가 몇 개 있습니다. 그들 중 대부분은 분류법 용어입니다. 이제 분류법 용어 뒤에 해당 용어로 태그가 지정된 노드 수를 표시하고 싶습니다.

예:

London (5)
Paris (3)
Madrid (2)
...

내가 어떻게 이것을 할 수 있는지 아는가?

답변:


4

이를 수행하기위한 샘플 코드는 다음과 같습니다.

function hook_form_alter(&$form, &$form_state, $form_id) {
    switch($form_id) {
        case 'views_exposed_form':

            $allowed_categories = db_query("SELECT 1 as tid, "Term Name (2)" as `name`")->fetchAllKeyed();
            $allowed_categories = array_reverse($allowed_categories, TRUE);
            $allowed_categories['All'] = '- Any -';
            $allowed_categories = array_reverse($allowed_categories, TRUE);

            $form['field_category_tid']['#options'] = $allowed_categories;

            break;
    }
}

쿼리를 변경하여 tid와 count가있는 이름의 두 열을 반환하십시오.


1

로 모듈을 만들었습니다 hook_form_alter().

이 함수에서 특정 분류 용어에 연결된 노드를 계산하고 모든 용어 끝에이 번호를 추가하는 쿼리를 만들었습니다.


이 코드를 사용한 적이 있습니까? 미리 THX!
Volker

@Volker : 방금 샘플 코드로 답변을 추가했습니다 ...
Felix Eve

1
function hook_form_alter(&$form, &$form_state, $form_id) {
  switch($form_id){
    case 'views_exposed_form':
      if ($form_state['view']->name == 'viewname') {
    //must add some bool so this doesn't get into infinite loop
    if(!isset($form_state['view']->gg)){
      $form_state['view']->gg = TRUE;
      $form_state['view']->execute();
    }

    $form['results_count'] = array(
      '#markup' => t('!count results match your criteria', array('!count' => '<b>'.$form_state['view']->total_rows.'</b>')),
      '#weight' => -99,
    );
      }

      break;
  }
}

안녕하십니까. 이 코드가 질문에 대답 할 수는 있지만 , 어떻게 작동 해야하는지 설명하는 것은 좋은 소리 일 것입니다. 따라서 OP는 다른 사람들이 자신을 위해 조각을 작성하는 데 의존 할뿐만 아니라 그로부터 배울 수 있습니다. 아이디어와 지식이 그가 추구하는 것처럼 보이며, 그것은 장려해야 할 좋은 것입니다 :)
Mołot

루프는 매우 유용한 조언이었습니다! thks
Kojo


0

이것은 실제 사이트의 예입니다. field_marka_prochnosti는 분류 어휘로 표현되는 노드의 필드입니다. phpMyAdmin을 사용하여 테이블 이름과 해당 테이블의 필드 이름을 학습하여 쿼리를 작성했습니다. bricksale_omega는 내 테마의 이름입니다.

function bricksale_omega_form_alter(&$form, &$form_state, $form_id) {
switch($form_id){
case 'views_exposed_form':

  foreach ($form['field_marka_prochnosti_tid']['#options'] as $tid => &$value) {
    $query = db_select('field_data_field_marka_prochnosti', 'f')
            ->condition('f.field_marka_prochnosti_tid', $tid);
    $query->addExpression('COUNT(*)');
    $count = $query->execute()->fetchField();
    $value = $value . ' (' . $count . ')';
  }

  break;
  }
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.