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?

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.


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.


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

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

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;
  }
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.