Ergebnismenge für belichteten Filter anzeigen


10

Ich habe einige exponierte Filter, um den Inhalt in meiner Ansicht zu filtern. Die meisten davon sind Taxonomiebegriffe. Jetzt möchte ich zeigen, wie viele Knoten mit diesem Begriff hinter dem Taxonomiebegriff gekennzeichnet sind.

Beispiel:

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

Irgendeine Idee, wie ich das machen kann?

Antworten:


4

Hier ist ein Beispielcode, um dies zu tun:

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

Ändern Sie einfach die Abfrage, um 2 Spalten zurückzugeben - die tid und den Namen mit einer Zählung.


1

Ich habe ein Modul mit einem erstellt hook_form_alter().

In dieser Funktion habe ich eine Abfrage erstellt, die die Knoten zählt, die einem bestimmten Taxonomiebegriff zugeordnet sind, und diese Nummer am Ende jedes Begriffs hinzugefügt.


Gibt es eine Chance, den Code zu sehen, den Sie dafür verwendet haben? THX im Voraus!
Volker

@ Volker: Ich habe gerade eine Antwort mit einem Beispielcode hinzugefügt ...
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;
  }
}

Hallo und Willkommen. Während dieser Code die Frage beantworten könnte, wäre es in einem guten Ton zu erklären, warum und wie er funktionieren soll, damit das OP daraus lernen und sich nicht nur darauf verlassen kann, dass andere Stücke für ihn schreiben. Es sieht so aus, als ob Ideen und Wissen das sind, wonach er sucht, und das ist eine gute Sache, die gefördert werden sollte :)
Mołot

Die Loop-Sache war ein sehr nützlicher Rat! thks
Kojo


0

Dies ist ein Beispiel von meiner realen Seite. field_marka_prochnosti ist ein Feld eines Knotens, der durch ein Taxonomie-Vokabular dargestellt wird. Ich habe phpMyAdmin verwendet, um den Namen einer Tabelle und den Namen des Feldes dieser Tabelle zu erfahren, um eine Abfrage durchzuführen. bricksale_omega ist der Name meines Themas.

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;
  }
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.