muestra la cantidad de resultados para el filtro expuesto

10

Tengo un par de filtros expuestos para filtrar el contenido en mi vista. La mayoría de ellos son términos de taxonomía, ahora me gustaría mostrar cuántos nodos están etiquetados con ese término detrás del término de taxonomía.

ejemplo:

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

¿Alguna idea de cómo puedo hacer esto?

deslumbramiento
fuente

Respuestas:

4

Aquí hay un código de muestra para hacer esto:

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

Simplemente cambie la consulta para devolver 2 columnas: el tid y el nombre con un recuento.

Víspera de felix
fuente
1

Creé un módulo con a hook_form_alter().

En esa función, creé una consulta que contaba los nodos asociados a un determinado término de taxonomía y agregué este número al final de cada término.

deslumbramiento
fuente
¿Alguna posibilidad de ver el código que has usado para esto? THX de antemano!
Volker
@Volker: Acabo de agregar una respuesta con un código de muestra ...
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;
  }
}
lo mismo-
fuente
Hola y bienvenido. Si bien este código podría responder a la pregunta, estaría en un buen tono explicar por qué y cómo se supone que funciona, para que el OP pueda aprender de él, no solo confiar en que otros escriban piezas para él. Parece que las ideas y el conocimiento son lo que busca, y eso es algo bueno que debería alentarse :)
Mołot
¡Lo del bucle fue un consejo muy útil! thks
Kojo
0

Este es un ejemplo de mi sitio real. field_marka_prochnosti es un campo de un nodo representado por un vocabulario de taxonomía. Usé phpMyAdmin para aprender el nombre de una tabla y el nombre del campo de esa tabla para hacer una consulta. bricksale_omega es el nombre de mi 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;
  }
}
vadim
fuente