Görünüm için bağlamsal filtre olarak sınıflandırma terimi adı


18

D7'de bir görünümü URL'den alınan bir sınıflandırma terimi adına göre filtreleyebildim . Bir örnek bu URL olabilir

http://www.gbyte.co/tags/drupal-planet/rss.xml

"drupal-planet", daha sonra görünüm sonuçlarını buna göre filtreleyecek olan sınıflandırma terimi kimliğine dönüştürülecektir.

Şimdi bir bağlamsal filtre "İçerik: Etiketler (field_tags)", field_tags sınıflandırma alanı olan karşılık gelen bir D8 görünümü kurduk. Ancak D8 görünümü yalnızca gerçek terim kimliğini URL'ye şu şekilde aktardığımda sonuçları gösterir:

http://www.gbyte.co/tags/9/rss.xml

Ben de terim ile çalışmak istiyorum ismi D7 yaptığı gibi. İşlevler eksik mi yoksa görünümü farklı şekilde yapılandırmam gerekiyor mu?


Bu konuda haber var mı? Aynı problemim var
jeroen

Yanıtlar:


20

Terim adı Terim kimliği dönüştürüldü filtre görünüyor eksik D8 Görünümler için.

Bir site oluşturucu geçici çözümü, düğümde bir İlişki , Taksonomi terimleri eklemek ve daha sonra yukarıda belirtilen ilişkiyi kullanarak Bağlamsal Filtrelere bir Taksonomi Terimi: Ad filtresi eklemektir . Denetleme belirtin doğrulama kriterleri onay kutusunu, kümenizle Validator için Taksonomi terimi adını ve uygun kontrol Sınıflandırması'nı üzerinde filtreye.


12
D8 eklenti bağlamsal filtre kullanıcı arayüzündeki site oluşturucu tuzakları: bağlamsal filtrenin başlığı 'Ad' ve kategori 'Sınıflandırma terimi'. 'Taksonomi' araması, kategori değil başlık ve açıklama arandığından bu filtreyi listeleyemez.
keithm

1
Ayrıca şunları yapabilirsiniz başlığı üzerine olan {{ arguments.name }}içeriksel filtrenin ayarlarında.
17'de


3

Sadece tamamlama uğruna, soruyu yazarken, taksonomi terim adını URL'den views_hook_pre_view () 'deki bir terim kimliğine dönüştürüp ardından bağlamsal filtre için girdi olarak kullanarak bu sorunu çözmeyi başardım. Taksonomi kimliklerini kabul eden

İşte görünümler kanca kodu:

/**
 * Implements hook_views_pre_view().
 */
function my_module_views_pre_view(\Drupal\views\ViewExecutable $view, $display_id, array &$args) {
  if ($view->id() == 'blog' && $display_id == 'feed') {
    if (isset($args[0])) {
      $term = taxonomy_term_load_multiple_by_name($args[0], 'tags');
      if (empty($term)) {
        $term = taxonomy_term_load_multiple_by_name(str_replace("-", " ", $args[0]), 'tags');
      }
      if (!empty($term)) {
        $tid = key($term);
        $args[0] = $tid;
      }
    }
  }
}

2

Shawn Conn'un cevabını genişletmek için:

  • Görünüm yapılandırmasında Gelişmiş -> İlişkiler altında 'Ekle'yi tıklayın
  • Şimdi 'Düğümdeki sınıflandırma terimleri'ni seçin
  • Bir sonraki ekranda 'etiketler' kelimesini seçin ve ilişkiyi gerektirir.
  • Şimdi Gelişmiş -> Bağlamsal Filtreler altında 'Ekle'yi tıklayın
  • 'Filtre kullanılamadığında' altında, 'Varsayılan değer sağla', 'URL'den ham değer' seçeneğini belirleyin. İhtiyaçlarınıza uygun diğer seçenekleri belirleyin.
  • 'Filtre KULLANILDIĞINDA veya varsayılan bir değer sağlandığında' 'Doğrulama Ölçütlerini Belirle'yi seçin ve doğrulayıcı için' Sınıflandırma Terimi Adı'nı seçin. 'Etiketler' kelimesini seçin ve ardından uygula'yı tıklayın.

Umarım yardımcı olur!


1

Hala bu sorun var mı bilmiyorum ama istenen taksonomi kelime kullanarak "düğüm üzerinde Taksonomi terimleri" için bir ilişki oluşturmak ve sonra "Taksonomi terimi: Adı" için bu ilişkiyi kullanarak bir bağlamsal filtre oluşturmak mümkün TID yerine isme göre doğrulamak için.


2
Bu soruda açıklanan aynı sorunum var, daha açık olabilir misiniz? Zaten bir ilişki ayarladım, ancak bağlamsal filtre yalnızca terim adı yerine tid ile çalışıyor. Tabii ki D8 hakkında konuşuyoruz. Şimdiden teşekkürler.
Vagner

1

@kiethm Buna yaklaşmanın doğru yolunu sağladı - Bağlamsal Filtreler altında, 'Sınıflandırma Terim Kimliği' yerine 'Ad' seçeneğini seçmeniz ve ardından 'Sınıflandırma Terimi Adı' kullanmak için doğrulama ölçütlerinizi ayarlamanız gerekir .


1

Bir süredir bu cevabı arıyorum. Benim gibi herkesin nasıl çalışacağını arayanlar için, kısmen buradan ve drupal.org'un sonuçlarından ve ardından da aşağıdakilerden başarıya gittim: http://redcrackle.com/blog/adding-contextual-filter -View drupal-8

Drupal 8 ve Zircon kullanıyorum. Ben yeniyim, bu yüzden yanlış terimleri kullanabilirim. Birisinin üzerinde bulunduğu sayfanın Kategorisine göre "Panel ilk sütun 1" de bağlamsal resim bağlantıları yapmak istedim. Yaptığım Yapı> Görünümler> Atlıkarınca'ya (bu blok bölgesindeki resimlere sahip olan görünüm)> Gelişmiş> Bağlamsal Filtrelere Göre Ekle> Sınıflandırma terimi kimliğine sahip> Varsayılan değeri sağla: URL'den Sınıflandırma terimi kimliği (yapılan bana mantıklı değil ama ne olursa olsun)> o zaman üç kutuyu da işaretledim: Terim sayfasından varsayılan filtreyi yükle, Düğüm sayfasından varsayılan filtreyi yükle, ilgili sınıflandırma blokları için iyi, Terimleri kelime ile sınırla. Sonra Kelime dağarcığı için Kategoriler kontrol ettim.

Uf! En sonunda! Beni doğru yöne yönlendirdiğiniz için hepinize teşekkürler! Neden çalıştığını tam olarak açıklayamadım, ama ne yaparsa yapsın ve çalışmaya devam edeceğim.


1

Eksik işlevselliği geri yüklemek ve tekrar düzgün çalışmasını sağlamak için küçük bir modül yazdım:

https://www.drupal.org/project/views_taxonomy_term_name_into_id

Views'daki 'bağlamsal filtrelerde' kullanılan sınıflandırma terimleri için 'Terim adını kimliğe dönüştür' bağımsız değişken doğrulayıcısını yeniden ekler. Daha fazla bilgi ve talimat için proje sayfasına bakınız.

Keyfini çıkarın, -Derek (dww)


0

İçerik ekleyerek yapabilirsiniz : içeriğe dayalı filtrede taksonomi terimi kimliği var , ardından filtre ölçütlerini ayarlayarak taksonomiyi içeriğe dayalı olarak kullanabilirsiniz

resim açıklamasını buraya girin


Bir D7 kurulumundan ekran görüntüsü aldınız. D8'de "Taksonomi Terimi" doğrulayıcısı yoktur. Bunun yerine, her ikisi de URL'den sınıflandırma adını kabul etmeyen "Sınıflandırma Terim Kimliği" veya "Sınıflandırma Terim Adı" vardır. Sadece kimliği kabul ederler.
gbyte.co

0

Bunu Drupal-8'de "Taksonomi terimi: Adı" bağlamsal filtresini alarak başardım.

Sonra varsayılan değeri girin Tür Taksonomi Terim Kimliği URL'den

Ardından aşağıdaki doğrulama ölçütlerini belirtin:

resim açıklamasını buraya girin

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.