ฉันจะตั้งค่ามุมมองของฉันให้คืนค่า 404 ด้วย Global: Null ภายใต้ตัวกรองเชิงบริบทได้อย่างไร


14

พฤติกรรม Drupal มาตรฐานคือการส่งผ่านข้อโต้แย้งทั้งหมดไม่ว่าพวกเขาจะร้องขอหรือไม่ บางครั้งพฤติกรรมนี้เป็นที่ต้องการ อย่างไรก็ตามฉันต้องส่งคืน 404 เพื่ออะไรก็ได้ยกเว้นสตริงแบบสอบถาม

ตัวอย่างปัญหา http://drupal.org/project/modules http://drupal.org/project/modules/google.com <- สิ่งนี้ควรคืนค่า 404; 200 ที่ได้รับ ปรับเนื้อหาซ้ำซ้อน!

มุมมอง 404 โมดูลสมมติว่าโดยปกติคุณไม่ต้องการให้การขัดแย้งผ่าน อย่างไรก็ตามไม่มีโมดูลรุ่น D7

แต่หน้าโครงการบอกว่าสามารถทำมุมมองยุค 404 ได้ด้วยการตั้งค่า Global: Null ภายใต้อาร์กิวเมนต์

เห็นได้ชัดใน D7 "ข้อโต้แย้ง" ตอนนี้เป็น "ตัวกรองเชิงบริบท" แต่ฉันไม่แน่ใจว่าการตั้งค่าใดที่จะเพิ่มใน Global: ตัวกรองเชิงบริบทแบบ null เพื่อให้ได้ผลลัพธ์ตามที่ฉันต้องการ

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม

คำตอบ:


22

ในตัวกรองตามบริบทเลือกเพิ่ม ; ในกล่องโต้ตอบที่ปรากฏขึ้นให้เลือกทั่วโลก: เป็นศูนย์

ภาพหน้าจอ

คลิกที่เพิ่มและฟิลเตอร์บริบทกำหนดค่า

ในกล่องโต้ตอบที่ปรากฏต่อไปใน fieldset เมื่อค่าตัวกรองที่มีอยู่หรือเริ่มต้นให้บริการตรวจสอบระบุเกณฑ์การตรวจสอบเลือก- การตรวจสอบขั้นพื้นฐาน -สำหรับการตรวจสอบและเลือกแสดง "ไม่พบหน้า"สำหรับการกระทำที่จะใช้ถ้า ค่าตัวกรองไม่ตรวจสอบ ใน fieldset เพิ่มเติมให้ตรวจสอบการตรวจสอบขั้นพื้นฐานล้มเหลวถ้าโต้แย้งใด ๆ ที่จะได้รับ

ภาพหน้าจอ

ฉันทดสอบด้วยมุมมอง "บทความ" ที่ฉันสร้างขึ้นและใช้งานได้

ภาพหน้าจอ

ภาพหน้าจอ

อาร์กิวเมนต์ "Global: Null" จะต้องเป็นรายการสุดท้าย หากคุณต้องการ ID ผู้ใช้ตัวอย่างเช่นก่อนอื่นคุณต้องเพิ่มมันเป็นอาร์กิวเมนต์แล้วเพิ่มอาร์กิวเมนต์ "Global: Null"

ฉันเปลี่ยนมุมมอง "บทความ" เพื่อยอมรับ ID ผู้ใช้เป็นอาร์กิวเมนต์ซึ่งใช้ในการกรองรายการโหนดบทความ มุมมองยังใช้งานได้เนื่องจากไม่ยอมรับอาร์กิวเมนต์เพิ่มเติม

ภาพหน้าจอ

ภาพหน้าจอ


1
สิ่งนี้จะส่งคืนข้อผิดพลาด 403 ไม่ใช่รหัส 404 เลือกตัวเลือก "แสดง" ไม่พบหน้า "แทน
Eugene Fidelin

ในกระทู้ใน DO ฉันเห็นคนแนะนำให้ใช้ arg (1) == NULL; ในรหัสตรวจสอบ PHP สิ่งนี้ดีกว่าหรือสวยกว่าเดิมไหม
ไนเจลวอเตอร์ส

1
@EugeneFidelin ผมได้รับการแก้ไขการแสดงผล "ต้นแบบ" และผมก็ไม่ได้เห็นโชว์ "ไม่พบหน้า"เป็นตัวเลือก ฉันแก้ไขคำตอบของฉัน
kiamlaluno

@NigelWaters ลืมคำตอบก่อนหน้าของฉัน :)ฉันกำลังแก้ไขการแสดงที่ไม่ถูกต้องและมุมมองไม่ทำงานอย่างที่ควรจะเป็น ไม่จำเป็นต้องใช้โค้ด PHP เพื่อตรวจสอบความถูกต้องของอาร์กิวเมนต์ ดูคำตอบที่อัพเดต
kiamlaluno

ฉันยังมีคะแนนไม่พอที่จะแสดงความคิดเห็น - ดังนั้นโพสต์ที่นี่เพื่อพูดขอบคุณ @kiamlaluno ใช้งานได้ดีและสิ่งที่ฉันต่อสู้กับหัวของฉันในขณะที่
น่านน้ำสีฟ้า

1

คุณสามารถทำได้โดยใช้มุมมองจากฟังก์ชันการทำงานของกล่อง ในการตั้งค่าตัวกรองตามบริบททุกครั้งคุณจะเห็นช่องทำเครื่องหมาย "ระบุเกณฑ์การตรวจสอบความถูกต้อง" ทำเครื่องหมายที่เพื่อดูการตั้งค่าเพิ่มเติม

จากนั้นคุณสามารถเลือก "ตัวตรวจสอบความถูกต้อง" ตามเงื่อนไขการดูของคุณ หากคุณต้องการตรวจสอบความถูกต้องที่กำหนดเองจากนั้นเลือกรหัส PHP ส่งคืนจริงหรือเท็จในรหัส php ตามเงื่อนไขการตรวจสอบของคุณ

สุดท้ายเลือก "การกระทำที่จะดำเนินการ" เมื่อปฏิเสธการเข้าถึงหน้าจอ! ดูภาพหน้าจอด้านล่างสำหรับตัวกรองบริบท nid

ป้อนคำอธิบายรูปภาพที่นี่


รหัส php ที่ฉันเพิ่มคืออะไร
ไนเจลวอเตอร์ส

ฉันใช้ Global: ตัวกรองบริบทแบบ null เท่านั้น
Nigel Waters

3
ไม่เคยใช้รหัส PHP ในมุมมองหรือเครื่องมือ UI อื่น ๆ !!!
hugronaphor
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.