mostra la quantità di risultati per il filtro esposto


10

Ho un paio di filtri esposti per filtrare il contenuto nella mia vista. La maggior parte di essi sono termini di tassonomia, ora vorrei mostrare quanti nodi sono contrassegnati con quel termine dietro il termine di tassonomia.

esempio:

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

Qualche idea su come posso farlo?

Risposte:


4

Ecco un codice di esempio per fare questo:

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

Basta cambiare la query per restituire 2 colonne: la tid e il nome con un conteggio.


1

ho creato un modulo con a hook_form_alter().

In quella funzione ho creato una query che ha contato i nodi associati a un determinato termine di tassonomia e aggiunto questo numero alla fine di ogni termine.


Qualche possibilità di vedere il codice che hai usato per questo? Grazie in anticipo!
Volker,

@Volker: ho appena aggiunto una risposta con un po 'di codice di esempio ...
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;
  }
}

Ciao e Benvenuto. Sebbene questo codice possa rispondere alla domanda, sarebbe opportuno spiegare perché e come dovrebbe funzionare, quindi l'OP potrebbe imparare da esso, non solo fare affidamento su altri per scrivere pezzi per lui. Sembra che idee e conoscenze siano ciò che sta
cercando

la cosa loop era un consiglio molto utile! thks
Kojo


0

Questo è un esempio dal mio sito reale. field_marka_prochnosti è un campo di un nodo rappresentato da un vocabolario tassonomico. Ho usato phpMyAdmin per imparare il nome di una tabella e il nome del campo di quella tabella per fare una query. bricksale_omega è il nome del mio tema.

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;
  }
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.