afficher la quantité de résultats pour le filtre exposé

10

J'ai quelques filtres exposés pour filtrer le contenu à mon avis. La plupart d'entre eux sont des termes de taxonomie, je voudrais maintenant montrer combien de nœuds sont étiquetés avec ce terme derrière le terme de taxonomie.

exemple:

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

Une idée de comment je peux faire ça?

éblouir
la source

Réponses:

4

Voici quelques exemples de code pour ce faire:

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

Modifiez simplement la requête pour renvoyer 2 colonnes - le tid et le nom avec un nombre.

Felix Eve
la source
1

j'ai créé un module avec un hook_form_alter().

Dans cette fonction, j'ai créé une requête qui comptait les nœuds attachés à un certain terme de taxonomie et ajoutais ce nombre à la fin de chaque terme.

éblouir
la source
Avez-vous une chance de voir le code que vous avez utilisé pour cela? THX à l'avance!
Volker
@Volker: Je viens d'ajouter une réponse avec un exemple de code ...
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;
  }
}
le même-
la source
Bonjour et bienvenue. Bien que ce code puisse répondre à la question, il serait sur un bon ton d'expliquer pourquoi et comment il est censé fonctionner, afin que le PO puisse en tirer des enseignements, non seulement compter sur d'autres pour écrire des pièces pour lui. On dirait que les idées et les connaissances sont ce qu'il recherche, et c'est une bonne chose qui devrait être encouragée :)
Mołot
la boucle était un conseil très utile! thks
Kojo
0

Quelques liens (peuvent être utiles)

  1. Module Taxonomy Menu , qui a une option de comptage.
  2. Question sur ces choses, mais sans réponse fiable.
kalabro
la source
0

Ceci est un exemple de mon vrai site. field_marka_prochnosti est un champ d'un nœud représenté par un vocabulaire taxonomique. J'ai utilisé phpMyAdmin pour apprendre le nom d'une table et le nom du champ de cette table pour faire une requête. bricksale_omega est le nom de mon thème.

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;
  }
}
vadim
la source