Views bağlamsal filtreleri nasıl çalışır?


9

Başımı tekrar bağlamsal filtrelerin etrafına sarmaya çalışıyorum! Bir süre önce kullandım ama yine tamamen güldüm. İşte yapmaya çalıştığım şey:

  1. Bu klonlanmış sayfaya taksonomi terimleri eklenmiş bir klonlanmış içerik düğümü sayfası oluşturun.

ör .: EXAMPLE.com/white-shoes/blue

Bir kullanıcı / beyaz ayakkabı sayfasına ulaştığında, orijinal düğüm sayfasını beyaz renge doğru yönlendirir. Şimdi kullanıcı / beyaz ayakkabılar / mavi üzerine gelirse aynı düğüm sayfasını gösterecektir, ancak bu sefer beyaz renk yerine mavi renk kullanılarak tüm vücut içeriği yeniden yazılacaktır.

Gelen Görünümler Ben yolu ile birlikte Sayfa görüntüsünü oluşturmak gerekir:% /%

Şimdi nid almak için bağlamsal bir filtre oluşturmak. İçerik: nid'i bağlamsal bir filtre olarak ekliyorum. Ben almak varsayılan bir değer SAĞLAMAK ve ben bu PHP kodu koymak:

$ x = drupal_lookup_path ('kaynak', arg (0));

$ y = patlayabilir ('/', $ x);

$ y 1 ;

Bu PHP kodu temel olarak URL'nin / white-shoes bölümünü bir NID'ye dönüştürür. Ama işe yaramıyor. Ben terminal aracılığıyla drush ev üzerinden kod test ve gerçekten iade sonucu almak, bu yüzden işe yaradığını biliyorum.

Taksonomi terim adı için de aynısını yapıyorum ve bunun için bağlamsal bir filtre ekliyorum. Bu sefer bir VARSAYILAN DEĞER SAĞLAR'ı seçip URL'DEN HAM DEĞERİ ve 2. bağımsız değişkeni seçiyorum.

resim açıklamasını buraya girin

Bağlamsal filtre için bir ÖNİZLEME DEĞERİ girdiğimde gördüğünüz gibi: AAA / BBB / CCC. Varsayılan değerim yok sayılıyor. 2'inci argümanı alması gerekiyordu, ama sadece 1'ini alıyor. NEREDE SQL ifadesine bakın ve BBB olması gerektiğinde AAA aldığını göreceksiniz.

resim açıklamasını buraya girin

Yani soru şu, neyi yanlış yapıyorum ya da başarmak istediğim şeyin daha iyi bir çözümü var mı?


Bu aptalca geliyor, ama biraz daha fazla ayrıntı verebilir misiniz? Neyi denediğinizi, bunu nasıl yapmaya çalıştığınızla ilgili biraz zaman geçiriyorum. Ham değerini veya Varsayılan ver'i kullanmak yerine URL'deki İçerik Kimliğini kullanın. Bu NID sağlayacaktır.
kyletaylored

merhaba kyle, url'ye inişinizden beri hiçbir Content ID yok: / white-shoes / blue .... / blue url, görünümleriyle oluşturulduğu gibi mevcut değil. bu yüzden yakalanacak bir içerik kimliği yoktur ... URL'nin ilk argümanını ayrıştırmalı ve sonra bu URL'yi bir NID yoluna dönüştürmelidir.
Patoshi シ ト シ

Yanıtlar:



5

Bağlamsal Filtre, URL bağımsız değişkenlerine göre görünümün çıktısını filtrelemek için kullanılır, ayrıca bağımsız değişkenleri bu biçimde manuel olarak geçirebilirsiniz:

<?php print views_embed_view($name,$display_id,$arg1,$arg2,$arg3); ?>

burada "$ name" görünümünüzün adıdır (ör. 'example_view') ve '$ display_id' görünümünüzün görüntüleme türüdür (ör. 'varsayılan') ve "$ arg1, $ arg2, $ arg3" bağımsız değişkenlerdir URL'deki gibi.

URL bağımsız değişkenleri aşağıdaki yapıya sahiptir:

http://example.com/arg_1/arg_2/arg_3 (arg_2'de yol bileşeni 2 (görünüm ayarı sayfasında) var).

Filtre değeri mevcut olmadığında:

yani drupal herhangi bir filtre bulamaz.

Varsayılan değeri girin:

filtre değeri mevcut olmadığında, görünümler çıktısı için bir filtre oluşturmak üzere bu seçeneği kullanabilirsiniz, bu filtre PHP kodu olabilir (PHP filtre modülü etkinleştirilmişse) veya değerini URL bağımsız değişkenlerinden alabilir -> (Ham değer url'den). İstisna metin kutusu, değeri aldatmanıza ve tüm sonuçları görüntülemenize olanak tanır.

Filtre değeri kullanılabilir olduğunda

bu durumda, drupal filtre değerini bulabildiğinde, ihtiyaçlarınız ve diğer bazı seçenekler gibi bir doğrulama yaparsınız.


views_embed_view () işlevi verildi. bunu / white-shoes / blue alt yoluma nasıl yüklerim? / blue'nun görünümler tarafından oluşturulduğu gibi mevcut olmadığını unutmayın. bir kullanıcı / blue yoluna ulaştığında, ilk bağımsız değişkeni ayrıştırmalı ve bu diğer adın NID'sini almalı ve ardından içeriğini yüklemelidir. bağlamsal filtrelerle ilgili sorun, FİLTRE DEĞERİ MEVCUT OLDUĞUNDA bir PHP değeri sağlamanın bir yolu olmamasıdır.
Patoshi パ ト シ

@duckx, Filtre kullanılabilir olduğunda bir PHP değeri sağlamak için mükemmel bir seçenek vardır VALIDATION (type: PHP Code). Bu seçenekle görünüm nesnesini kullanabilir ve ihtiyacınız olan her şeyi yapabilirsiniz. Senin durumda /bluegörünümler tarafından oluşturulan yolu olarak iyi ki takma düğüm kimliği getirmesi kullanılacaktır.
Jack-PL
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.