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


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.