Bağlamsal filtreler altında Genel: Boş değerini kullanarak görünümlerimi 404 döndürecek şekilde nasıl ayarlarım?


14

Standart Drupal davranışı, isteseler de istemeseler de tüm argümanları iletmektir. Bazen bu davranış istenir. Ancak, bir sorgu dizesi dışında bir şey için 404 döndürmek gerekiyor.

Sorun örneği http://drupal.org/project/modules http://drupal.org/project/modules/google.com <- Bu bir 404 döndürmelidir; 200 tane verildi. Yinelenen içerik cezası!

Görünümler 404 modül varsayılan olarak argümanlar geçirilir istemiyoruz varsayar. Ancak modülün D7 sürümü yoktur.

Ancak proje sayfası, görünümler için 404'lerin Bağımsız Değişkenler altında Global: Null ayarlanarak da gerçekleştirilebileceğini söylüyor.

Açıkçası D7 "argüman" şimdi "bağlamsal filtreler", ama ben istenen sonucu elde etmek için Global: null bağlamsal filtre eklemek için hangi ayarları emin değilim.

Herhangi bir yardım mutluluk duyacağız.

Yanıtlar:


22

In Bağlamla filtreler seçme Add ; görüntülenen iletişim kutusunda Global: Null seçeneğini belirleyin .

ekran görüntüsü

Bağlamsal filtreler ekle ve yapılandır'ı tıklayın .

Fieldset içinde, yanında görünür iletişim kutusunda filtre değeri kullanılabilir veya varsayılan bir sağlandığında , kontrol doğrulama kriterleri belirleyin , seçin - Temel doğrulama - için Validator ve seçmek "Sayfa bulunamadı" göster için Eylem eğer almaya filtre değeri geçerli değil . Fieldset olarak diğer kontrol herhangi bir bağımsız değişken verilir başarısız temel doğrulama .

ekran görüntüsü

Oluşturduğum bir "Makaleler" görünümü ile test ettim ve işe yarıyor.

ekran görüntüsü

ekran görüntüsü

"Global: Null" argümanı sonuncusu olmalıdır. Örneğin, bir kullanıcı kimliğine ihtiyacınız varsa, önce bağımsız değişken olarak ekleyin ve sonra "Global: Null" bağımsız değişkenini ekleyin.

Makale düğümleri listesini filtrelemek için kullanılan bir kullanıcı kimliğini argüman olarak kabul etmek için "Makale" görünümünü değiştirdim. Ekstra bir argümanı kabul etmediği için görünüm hala çalışıyor.

ekran görüntüsü

ekran görüntüsü


1
Bu, 403 kod değil 403 döndürür. Bunun yerine "Göster" Sayfa bulunamadı "seçeneğini seçin
Eugene Fidelin

DO bir iş parçacığında ben arg (1) == NULL kullanmayı öneren birini görüyorum; php doğrulama kodunda. Bu daha iyi mi yoksa hemen hemen aynı şey mi?
Nigel Waters

1
@EugeneFidelin "Ana" ekranı düzenliyordum ve "Sayfa bulunamadı" seçeneğini seçenek olarak görmüyordum . Cevabımı düzelttim.
kiamlaluno

@NigelWaters Önceki cevabımı unut. :)Yanlış ekranı düzenliyordum ve görünüm olması gerektiği gibi çalışmıyor. Argümanı doğrulamak için PHP kodu kullanmaya gerek yoktur; güncellenmiş cevaba bakınız.
kiamlaluno

Henüz yorum yapmak için yeterli puanım yok - bu yüzden @kiamlaluno'ya teşekkür etmek için buraya gönderiyorum. Harika çalışıyor ve bir süredir kafamı vurduğum bir şey.
Blue Waters

1

Bunu, kutunun dışındaki işlevlerin görünümlerini kullanarak yapabilirsiniz. Her bağlamsal filtre ayarında, daha fazla ayar görmek için "Doğrulama ölçütlerini belirtin" onay kutusunu görebilirsiniz.

Ardından, görünüm koşullarınıza göre "doğrulayıcı" yı seçebilirsiniz. Özel doğrulamak istiyorsanız php kodunu seçin. Doğrulama koşullarınıza göre php kodunda True veya False döndürün.

Son olarak, Ekran Erişimi reddedildikçe "Yapılacak eylem" i seçin! Nid bağlamsal filtre için aşağıdaki ekran görüntüsüne bakın.

resim açıklamasını buraya girin


Eklediğim php kodu nedir?
Nigel Waters

Sadece Global: null bağlamsal filtreyi kullanıyorum
Nigel Waters

3
ASLA GÖRÜNÜMDE PHP KODU VEYA BAŞKA BİR UI ARACI KULLANMAYIN !!!
hugronaphor
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.