Keyfi derinlik basit taksonomisi tarayıcı bina temiz yolu


23

Aşağıdakileri yapmak için temiz bir yol belirlemeye çalışarak günler geçirdim:

  1. Tüm üst seviye terimlerin bir listesini, alt terimleriyle bağlantılı olan bir kelimeyle görüntüleyin.
  2. Bir linke tıklandığında, bu terimlerin çocuklarının listesine götürülecektir .
  3. Bu terimle etiketlenmiş bir düğümlerin listesi görüntülenecek olan en düşük seviye terime kadar reklam sonsuz.

Bu, yaygın olarak ihtiyaç duyulan bir işlevsellik gibi gözüküyor gibi görünüyor, ancak özellikle tüm ağaçlar aynı derinliğe inmiyorsa, keyfi derinliği kaldırabilecek herhangi bir çözüm bulamıyorum.

İdeal bir çözüm Görünümler 3, Bağlamlar, EntityFieldQueries veya Drupal 7'de iyi desteklenen başka bir şey kullanan bir çözüm olabilir.

Ben yapabiliyorum neredeyse sıralı bağlamsal filtreler için süreli ilişkiler (terim, terimin ebeveyn ve terimin ebeveynin ebeveyn) ve kullanıcıya bu üç düğüm ile basit bir görünüm yaparak tam benim istediğim. Bununla ilgili tek sorun, çok az derinliğe sahip bir uçağı olan bir düğüm varsa, "kategorize edilmemiş" olarak listelenir ve ölü bir bağlantı oluşturur. Bunu yapmak yerine, bir sonraki çocuk terimiyle bağlantı kurmasını istiyorum.

Yanıtlar:


23

Bunu sadece View modülüyle yapmanın bir yolunu buldum. Mükemmel değil - tek bir derinlikteki bir taksonomi için olan çözümümün yapacağı gibi, taksonomi soyuna sahip hoş bir URL ve kırıntı oluşturmaz.

Statik Derinlik Tarayıcı

Statik derinlik taksonomisi için (tüm terimlerin aynı terim alt terim derinliğine sahip olduğu), şunları yapmalısınız:

  1. Düğümlerin görünümü oluşturun
  2. Taksonomi terimiyle ilişki ekleme (Terim)
  3. Taksonomi terimi veli ile ilişkiye ekleme, Terim üzerinden erişilebilir
  4. Ebeveyn (Ebeveyn Ebeveyn) aracılığıyla erişilebilen taksonomi terimi veli ile ilişki ekleme
  5. Taksonominizin derinliği için 4. adımı gerektiği kadar tekrarlayın.
  6. Her biri için bağlamsal filtreler ekleyin ve doğru sırada olduklarından emin olun. Filtre URL’de olmadığı zaman bir özet görüntülemek için ayarlayın.
  7. Muhtemelen her filtrenin ekmek kırıntısını ve unvanını geçersiz kılmak isteyeceksiniz.
  8. ???
  9. KAR

Değişken Derinlik Tarayıcı

Değişken derinlikte bir taksonomide (bazı terimler ağaçların diğerlerinden daha derin iç içe geçme seviyelerine sahipse), biraz daha karmaşıktır:

  1. Kelime bilginize yeni bir en üst seviye terim (Foo) ekleyin ve diğer tüm terimleri kendi altına koyun.
  2. Terim adlarını görüntüleyen bir sayfa ile terimler görünümü oluşturun
  3. İçerik filtresi ekleme: Taksonomi terimi: Ana terim
  4. Varsayılan değer URL’de değilse, varsayılan değeri girin
  5. Varsayılan değeri üst seviye terim adınıza ayarlayın (Foo)
  6. Doğrulama ölçütlerini belirtin
    • Doğrulayıcı: taksonomi terimi
    • Kriterler: kelime adınız
    • Filtre değeri türü: Terim adı terim kimliğine dönüştürülür
  7. Görünüme bir Ek eklemek için Görünümler panelinin üstündeki "+ Ekle" düğmesini tıklayın.
  8. Sadece bu eke ekle (geçersiz kıl) İlişki: Taksonomi terimi: Terim olan içerik
  9. Yalnızca bu eke ekle (geçersiz kıl) display: fields: düğümlere bağlı düğüm başlıkları ve kaldır (yalnızca bu ekten!) Display: fields: term name
  10. Sadece bu eke ekle (geçersiz kıl) içerik filtresi: Taksonomi terim: Ad
  11. Filtre değeri kullanılamıyorsa, varsayılan değeri belirtin: URL'den ham değer: Yol bileşeni: 2 (veya Sayfa yolunuzda> 1 bileşen varsa, daha fazlası)
  12. Ek ayarları: Ekleyiniz: [az önce yaptığınız sayfa ekranının adı]
  13. ???
  14. KAR

Ekran görüntüsü için 'UI' ekran görüntüleri: görüntü tanımını buraya girin


Güzel bitti! Hem soruyu hem de cevabınızı yükseltmek - yapmanız gereken oldukça yaygın bir şey gibi görünüyor ve çözümün başlangıçta cevaplamaya çalışırken bulduğum her şeyden daha iyi.
aendrew,

8
  1. Taksonomi türünden bir görünüm oluşturun
  2. Taksonomi teriminin türünün bağlamsal bir filtresini ekle : Parent terim
  3. Varsayılan değer sağla seçeneğini ayarlayın ve sabit tutun. üst üst terimin terim kimliğini ver
  4. Taksonomi terim kimliğini alan olarak ekle ve ekrandan çıkar
  5. Bir Taksonomi Terim Adı Eklemek İçin Tıklayınız Bu alanı bir link olarak ekleyiniz ; Bağlantıyı "görünümünüzü belirle / görüntüle] / [tid]" olarak ver
    Not: "Bu alanı taksonomi terim sayfasına bağla" seçeneğinin işaretini kaldırmalısınız.

Görünüm sayfasını ziyaret ettiğinizde, üst ebeveynlerin çocuklarını göreceksiniz; alacağınız örneğe göre:

  • TERM1
  • TERM2

1. terimi tıklattığınızda çocukları alırsınız. Term.1.1.1'e ulaşana kadar. Henüz term.1.1.1'e tıklarsanız herhangi bir sonuç alamazsınız. Bunu başarmak için yukarıdaki görünümde bir görünüm bloğu daha oluşturmamız gerekiyor.

  1. Blok ekle
  2. Varolan bağlamsal filtre ve saha çıkarın
    Not: Eğer onları seçtiğinizden emin olun kaldırdığınızda Bu Sayfa (Üzeri Ride) yanında üstte bulunan açılır menüden için de gitmiş olurdu sayfada oluşturulmuş diğer akıllı alanları ve bağlamsal filtreler .
  3. Yeni bir bağlamsal filtre ekle Taksonomi terimi: Terim ID
  4. Bir ilişki ekle Taksonomi terimi: Terimle ilgili içerik
  5. İçerik Başlığını ekleyin ve üstteki açılır listeden ilişkiyi kullanın.
  6. Görünümü kaydedin ve oluşturduğumuz Sayfaya geri dönün (Bu, bir sonraki adımı tamamlayamamanızın akıllıca olması açısından önemlidir.
  7. FOOTER VE HEADER'a bir alan ekleyin
  8. Listeden "Genel: Görünüm alanı" nı seçin ve açılırken Görünüm eklemek için oluşturduğumuz bloğu seçin, içeriğe göre filtreleri Devral'ı işaretleyin, böylece değeri bu görünümden bloğa da aktarabiliriz
  9. Görünümde sonuç olmasa bile Ekranı kontrol et, böylece bu görünüm sonucu göstermediğinde blok gösterilmeye devam eder

Görünümü kaydet ve bittin.


Mohammed Shameem'in açıklamasını takip ettim. Teşekkürler, mükemmel çalışıyor!
Steven

3

İstediğiniz şeyin , Taksonomi terimleri ağacı oluşturmak için Görünümler kullanan bir katkı modülü olan Görüntüleme Ağacı olduğunu düşünüyorum .

(Bana bir saniye ver, vergi alanlarını kullanarak hızlıca nasıl yapılır diye yazacağım)

Görünüşe göre bu modül taksonomi terimleriyle çalışmasını engelleyen bir sorun var . Boo.

Bununla birlikte, istediğiniz şeyi yapan aşağıdaki kodu buldum (bazı basit ilkel jQuery kodlarıyla öğeleri göstermesini / gizlemesini sağlayabilirsiniz):

<?php

// The ID of the taxonomy vocabulary for which you'd like to create a nested list
$vid = 10;

$depth = 0;
$num_at_depth = 0;
$tree = taxonomy_get_tree($vid);

print "<ul class=\"menu\">\n<li>";
foreach ($tree as $term) {
  $diffdepth = 0;
  if ($term->depth > $depth) {
    print "\n<ul>\n<li>";
    $depth = $term->depth;
    $num_at_depth = 0;
  }
  if ($term->depth < $depth) {
    $diffdepth = $depth - $term->depth;
    while ($diffdepth > 0) {
      print "</li>\n</ul>\n";
      $diffdepth--;
    }
    $depth = $term->depth;
  }
  if (($term->depth == $depth) && ($num_at_depth > 0)) {
    print "</li>\n<li>";
  }
  print l($term->name, 'taxonomy/term/' . $term->tid);
  $num_at_depth++;
}
print "</li>\n</ul>\n";

" İç içe kategori listeleri sayfalara bağlantılar " ile.


Bu modülü etkinleştirdim ve denemeyi denedim ve iki sorunum var: 1. Çok sayfalı bir tarama deneyimi değil, sadece size düz bir liste verdiğinden şüpheliyim ve 2. Çalışmasını sağlayamıyorum. Bir nasıl yapılır en yararlı olur.
Beth

Cevap güncellendi. Özür dilerim, görünüşe bakılırsa Görüntüleme Ağacı'nın taksonomi terimlerini kullanarak açık bir sorunu var. Alternatif cevap gönderildi.
aendrew

Sıralı olarak sayfalanmış bir tarayıcı yerine, basit bir yuvalanmış liste veriyor gibi görünüyor.
Beth

@ - Ana / alt öğeler tıklandığında bu listenin öğelerini gösteren / gizleyen bir jQuery yazsam bu yeterli olur mu?
aendrew

JavaScript'e bağımlı olmasını istemiyorum.
Beth

0

Sadece bir dizi dinamik taksonomi tarama sayfasına sahip olmak istiyorsanız, o zaman aşağıdakileri uygularımtaxonomy/term/% : Sayfaların içeriğini görüntülemek için Görünümleri kullanmanıza izin veren 3 Gösterim + Taksonomi Görüntüleme modülü gerekir :

  1. Üst Düzey Terimler - üst öğesi boş olan terimleri listeler
  2. Orta Seviye Terimleri - veli boş olmayan terimleri listeler. Sonuç yok: görünüm # 3 görüntüle
  3. Koşullu Düğümler - terimlerle etiketlenmiş düğümleri listeler.

1. ve 2. Görüşlerin muhtemelen benzer bir şekilde temalı olacağından, onları bir Görünüm olarak birleştirmeyi düşünebilirsiniz - daha kolay yönetilebilir.

Taksonomim için bu yaklaşımı başarıyla kullandım. Neyse ki her seviyede homojendi - belirli bir dal ya yapraklarla (düğümler) ya da dallarla (terimlerle) sona erdi, ancak ikisi birden bitmedi. Bu bir sınırlama olacaksa, lütfen önce onu test edin.

Tabii ki bu bir "sözde kod". Doğrulamaları ve filtreleri ve yapıyı yansıtacak şekilde güzel, mantıklı görünen pathauto desenleri oluşturmak istersiniz.

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.