显示暴露的过滤器的结果量


10

我有几个公开的过滤器来过滤视图中的内容。其中大多数是分类术语,现在我要显示在分类术语后面用该术语标记的节点数。

例:

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

知道我该怎么做吗?

Answers:


4

这是一些示例代码可以做到这一点:

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

只需更改查询以返回2列-tid和带有计数的名称即可。


1

我用创建了一个模块hook_form_alter()

在该函数中,我创建了一个查询,该查询对连接到某个分类法术语的节点进行了计数,并在每个术语的末尾添加了此数字。


有机会看到您用于此的代码吗?提前THX!
Volker

@Volker:我刚刚添加了一些示例代码的答案……
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;
  }
}

你好,欢迎光临。虽然这个代码可能回答这个问题,这将是一个很好的语气来解释为什么如何它应该工作,所以OP可以从中吸取教训,不仅依靠别人来写个他。它看起来像思想和知识的他是什么之后,这是应该鼓励:)一件好事
Mołot

循环的事情是一个非常有用的建议!thks
Kojo


0

这是我真实网站中的一个示例。field_marka_prochnosti是由分类词汇表表示的节点的字段。我使用phpMyAdmin来学习一个表的名称和该表的字段的名称以进行查询。bricksale_omega是我主题的名称。

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;
  }
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.