açıkta kalan filtre için sonuç miktarını göster


10

Benim görüşüme göre içeriği filtrelemek için birkaç açık filtrem var. Çoğu taksonomi terimleridir, şimdi taksonomi teriminin arkasında bu terimle kaç düğümün etiketlendiğini göstermek istiyorum.

misal:

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

Bunu nasıl yapabileceğime dair bir fikrin var mı?

Yanıtlar:


4

İşte bunu yapmak için bazı örnek kod:

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

Sorguyu değiştirerek 2 sütun döndürün - tid ve sayı içeren bir ad.


1

ile bir modül oluşturdum hook_form_alter().

Bu işlevde, belirli bir sınıflandırma terimine bağlı düğümleri sayan ve her terimin sonunda bu sayıyı ekleyen bir sorgu oluşturdum.


Bunun için kullandığınız kodu görme şansınız var mı? Şimdiden THX!
Volker

@Volker: Bazı örnek kodlarla bir cevap ekledim ...
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;
  }
}

Merhaba ve hoşgeldin. Bu kod soruyu cevaplayabilse de, neden ve nasıl çalışması gerektiğini açıklamak iyi bir tonda olacaktır , bu nedenle OP ondan öğrenebilirdi, sadece onun için parça yazmak için başkalarına güvenmekle kalmadı. Fikirler ve bilgi onun peşinde olduğu gibi görünüyor ve bu teşvik edilmelidir iyi bir şey :)
Mołot

döngü şey çok yararlı bir tavsiye oldu! thks
Kojo


0

Bu benim gerçek sitemden bir örnek. field_marka_prochnosti, sınıflandırma sözcük dağarcığıyla temsil edilen bir düğüm alanıdır. Bir tablonun adını ve sorgu yapmak için o tablonun alanının adını öğrenmek için phpMyAdmin kullandım. bricksale_omega temamın adı.

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;
  }
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.