ชื่อเครื่องของ Views Block ถูก“ แฮช” (?)


20

มือใหม่ของ Drupal แก้ไขให้ถูกต้องถ้าฉันเข้าใจว่าผิด แต่โดยปกติเมื่อบล็อกถูกสร้างโดย Views ชื่อเครื่องของบล็อกจะต่อท้ายชื่อเครื่องของ Views

เช่น "article_listing_view-block_1"

เมื่อใช้ฟังก์ชั่น block_load ($ module, $ block_id) วิธีที่ฉันทำคือเรียกมันว่า: $ block = block_load ("views", "article_listing_view-block_1");

อย่างไรก็ตามด้วยเหตุผลบางอย่างที่แปลกประหลาดบล็อกหนึ่งที่มีชื่อเครื่อง:

"flag_comments_as_offensive-block_1"

มีหมายเลขเครื่องที่แฮชของ:

"92a591f5a81d13a3dd5492f073f9e135"

ฉันพูดว่า "แฮช" เพราะหมายเลขเครื่องจะเปลี่ยนไปตามชื่อเครื่องของบล็อคโดยตรง หากฉันเปลี่ยนจาก block_1 เป็นบล็อกมันจะเปลี่ยนและเมื่อฉันเปลี่ยนกลับจากบล็อกเป็น block_1 ก็จะเปลี่ยนหมายเลขเครื่องกลับสู่ด้านบน ดังนั้นจึงมีความสัมพันธ์โดยตรงระหว่างชื่อเครื่องและ ID "แฮช" ที่สร้างขึ้น

แทนที่จะเรียก block_load ("มุมมอง", "ชื่อเครื่อง") ฉันต้องใช้หมายเลขเครื่องที่แฮชซึ่งไม่ใช่ปัญหา แต่ใช้เวลานานกว่าจะคิดออก วิธีที่ฉันคิดออกคือไปที่โครงสร้าง -> บล็อกและโฮเวอร์เหนือลิงก์ "กำหนดค่า" และดู URL ฉันสังเกตเห็นว่าบล็อกอื่น ๆทั้งหมดของฉันมี URL ที่มีหมายเลขเครื่อง แต่สำหรับบล็อกนี้โดยเฉพาะนั่นคือหมายเลขเครื่องที่แฮช เมื่อฉันใส่หมายเลขเครื่องใน block_load, วิโอลามันทำงานได้อย่างมีเสน่ห์!

ดังนั้นฉันจึงเดาว่าคำถามจะเดือดร้อนไปที่: เกิดอะไรขึ้นและทำไม Drupal จึงทำให้ชื่อเครื่องของฉันยุ่งเหยิง? นี่เป็นข้อบกพร่องหรือมีข้อผิดพลาดในส่วนของฉันหรือไม่?

คำตอบ:


23

นี่เป็นเพราะโมดูลบล็อกคาดหวังว่า 'เดลต้า' (ID บล็อก) ความยาวสูงสุด 32 อักขระ แต่การแสดงบล็อกมุมมองสามารถมีได้สูงสุด 65 ตัวอักษร: สูงสุด 32 ตัวอักษรจากชื่อมุมมองและ 32 ตัวอักษรจากชื่อที่แสดงและเครื่องหมายขีดคั่น '-' อยู่ระหว่างกัน

เมื่อเดลต้าเกินขีด จำกัด 32 ตัวอักษรวิวจะแฮชผ่าน md5 ซึ่งไม่ใช่สตริงแบบสุ่ม คุณสามารถใช้มันอย่างปลอดภัยสำหรับตัวเลือก CSS และ jQuery


คำตอบของฉันส่วนใหญ่มาจากdrupal.org/node/346602
Capi Etheriel

ขอบคุณ! ฉันรู้ว่ามันไม่ได้สุ่ม แต่ฉันก็ไม่แน่ใจเหมือนกันว่าเกิดอะไรขึ้น สิ่งนี้อธิบายได้ :)
ปีเตอร์

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