it-swarm-tr.com

Views modülündeki Filtre Ölçütleri'ne açılır menüleri nasıl eklerim?

Geçen hafta bir yerel Drupal grup buluşması içindeydim burada bir üye Views modülünün bir sunum üzerinden koştu.O gerçekten filtre Ölçütleri açılan eklemek eklediğini görünce gerçekten heyecanlandım o işlevselliğe ihtiyacım olduğu için kullanıyorum.

Mesele şu: Ayarları derlemede bulamıyorum. Filtre Ölçütleri alanının altında bir 'ayarlar' bağlantısı olduğunu hatırlıyorum, ancak böyle bir şeyim yok.

Herkes bunu nerede bulabileceğimi açıklayabilir mi? Eksik ve ek modül mü?

5
Martin Duys

Görünümlerdeki filtreler ve kullanıcıya nasıl maruz kaldıkları, kullanılan filtrenin türüne bağlı olarak biraz farklı tepki verir. Kullanılan filtre türü, hook_views_data Ve hook_views_data_alter Kullanılarak görünümlere veriler tanımlanarak kontrol edilir. Bu biraz kod yığın ve her zaman kendi kendine yapmanız gereken bir şey değil, görünümler de dahil olmak üzere birçok modül sizin için çok şey yapıyor.

Kullanılan iki yaygın filtre:

  • views_handler_filter_in_operator
  • views_handler_filter_string

İkisi temelde farklıdır, çünkü varsayımları ve gereksinimleri çok farklıdır.

Birincisi, kullanmak istediğinizdir. Tanımlanmış olası değerler listesi olan bir değeri sakladığınızda kullanılır. Bir örnek, @Danielle'nin gönderisinde kullandığı örnek olan içerik türleri olabilir. Düğümler içerik türleri için rastgele bir değere sahip olamayacağından, görünümlerin bu filtreyi kullanırken Yönetici arayüzünde bir onay kutuları listesi ve maruz kaldığında kullanıcı için bir seçim listesi/çoklu seçim listesi görüntülemesi mümkündür.

İkincisi veritabanında bir dize saklandığında kullanılır. Düğümleri örnek olarak kullanmak, başlık alanı böyle bir filtre için iyi bir aday olacaktır. Başlıklar herhangi bir metin olabileceğinden, bir düğümün başlık seçimini onay kutuları veya seçim listeleri olarak göstermek mantıklı değildir, bunun yerine görünümünüzde gördüğünüz gibi başka seçenekler elde edersiniz. Dizede bir Word varsa (başlangıç ​​/ bitiş/bir yerde), uzunluğuna vb. Göre filtreleyebilirsiniz.

Views entegrasyonunu gerçekleştiren in_operator Filtre türünü rahatsız etmediyse ve hangi seçeneklerin mevcut olduğunu (php işlevi kullanarak) görünümlere açıkladıysa, hook_views_data_alter kullanarak bunu yapmanız gerekir.

Yapmanız gereken:

  1. views_handler_filter_in_operator Adlı bir alt sınıf oluşturun
  2. get_value_options Uygulayın
  3. Yeni işleyiciniz hakkındaki görüşlerinizi anlatın.

Kodda şöyle görünecektir

/**
 * Define my custom in_opeator
 */
class my_custom_in_operator extends views_handler_filter_in_operator {
  // overwrite the get_value_options function.
  function get_value_options() {
    if (isset($this->value_options)) {
      return;
    }
    $this->value_options array('option_1' => t('Option 1'), 'option_2' => t('Option 2'));
  }
}

/**
 * Implements hook_views_data_alter().
 */
function my_custom_views_data_alter(&$data) {
  $data['entity_type']['property']['filter']['handler'] = 'my_custom_in_operator';
}

Ve işiniz bitti. Gerçekte aslında oldukça basit. Ancak nasıl yapılacağını bulmak, görüşlerin oldukça karmaşık olması değildir.

10
googletorp

Maruz kalan filtrenizde birden çok değere izin veriyor musunuz? Öyleyse, seçimler varsayılan olarak kaydırma çubuğuna sahip bir seçim kutusunda görünür. Yalnızca tek bir seçimi zorlarsanız, açıkta kalan filtreniz varsayılan olarak bir açılır menüde görünür. Umarım bu yardımcı olur!

5
Danielle