hiển thị số lượng kết quả cho bộ lọc tiếp xúc


10

Tôi có một vài bộ lọc tiếp xúc để lọc nội dung theo quan điểm của tôi. Hầu hết trong số chúng là các thuật ngữ phân loại, bây giờ tôi muốn chỉ ra có bao nhiêu nút được gắn thẻ với thuật ngữ đó đằng sau thuật ngữ phân loại.

thí dụ:

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

Bất cứ ý tưởng làm thế nào tôi có thể làm điều này?

Câu trả lời:


4

Đây là một số mã mẫu để làm điều này:

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

Chỉ cần thay đổi truy vấn để trả về 2 cột - tid và tên với số đếm.


1

tôi đã tạo ra một mô-đun với a hook_form_alter().

Trong hàm đó, tôi đã tạo một truy vấn đếm các nút được gắn với một thuật ngữ phân loại nhất định và thêm số này vào cuối mỗi thuật ngữ.


Bất kỳ cơ hội để xem mã bạn đã sử dụng cho điều này? THX trước!
Volker

@Volker: Tôi vừa thêm một câu trả lời với một số mã mẫu ...
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;
  }
}

Xin chào và chào mừng. Mặc dù mã này có thể trả lời câu hỏi, nhưng nó sẽ là một giọng điệu tốt để giải thích lý docách thức hoạt động của nó, vì vậy OP có thể học hỏi từ nó, không chỉ dựa vào người khác để viết cho anh ta. Có vẻ như ý tưởng và kiến ​​thức là những gì anh ấy theo đuổi, và đó là điều tốt nên được khuyến khích :)
Mołot

điều vòng lặp là một lời khuyên rất hữu ích! thks
Kojo


0

Đây là một ví dụ từ trang web thực sự của tôi. field_marka_prochnosti là một trường của một nút được đại diện bởi một từ vựng phân loại. Tôi đã sử dụng phpMyAdmin để tìm hiểu tên của một bảng và tên của trường của bảng đó để thực hiện một truy vấn. Bricksale_omega là tên chủ đề của tôi.

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;
  }
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.