показать количество результатов для выставленного фильтра


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

Просто измените запрос так, чтобы он возвращал 2 столбца - tid и имя со счетчиком.


1

я создал модуль с hook_form_alter().

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


Есть ли шанс увидеть код, который вы использовали для этого? THX заранее!
Фолькер

@Volker: я только что добавил ответ с примером кода ...
Феликс Ив

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

Привет и добро пожаловать. Хотя этот код может ответить на вопрос, он будет в хорошем тоне объяснять, почему и как он должен работать, поэтому ОП мог бы извлечь из него урок, а не только полагаться на то, что другие будут писать для него части. Похоже, что идеи и знания - это то, что ему нужно, и это хорошая вещь, которую следует поощрять :)
Mołot

вещь петли была очень полезным советом! Thks
Коджо


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;
  }
}
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.