ब्लॉक का मशीन नाम "हैशेड" (?) हो रहा है


20

एक Drupal नौसिखिया, इसलिए मुझे सही करें अगर मेरी समझ गलत है, लेकिन आम तौर पर, जब व्यू द्वारा ब्लॉक बनाया जाता है, तो ब्लॉक का मशीन नाम व्यूज मशीन के नाम से जोड़ दिया जाता है।

अर्थात "article_listing_view-block_1"

जब block_load ($ मॉड्यूल, $ block_id) फ़ंक्शन का उपयोग किया जाता है, तो जिस तरह से मैं कर रहा हूं वह इस प्रकार कॉल करना है: $ block = block_load ("views", "article_listing_view-block_1");

हालांकि, कुछ बहुत ही अजीब कारणों के लिए, मशीन नाम के साथ एक विशेष ब्लॉक:

"Flag_comments_as_offensive-block_1"

की एक हैशेड मशीन आईडी है:

"92a591f5a81d13a3dd5492f073f9e135"

मैं "हैशेड" कहता हूं क्योंकि मशीन आईडी सीधे ब्लॉक के मशीन-नाम पर आधारित होती है। यदि मैं इसे ब्लॉक 1 से ब्लॉक में बदल देता हूं, तो यह बदल जाएगा, और जब मैं ब्लॉक से ब्लॉक 1 पर वापस लौटता हूं, तो यह मशीन आईडी को ऊपर से वापस कर देगा। इसलिए मशीन के नाम और "हैशेड" आईडी के बीच सीधा संबंध है जो इसे उत्पन्न करता है।

ब्लॉक_लोड ("विचार", "मशीन का नाम") को कॉल करने के बजाय, मुझे हैशेड मशीन आईडी का उपयोग करना होगा, जो कोई समस्या नहीं है, लेकिन मुझे यह पता लगाने में लंबा समय लगा। जिस तरह से मुझे लगा कि यह संरचना -> ब्लॉक में जाना है और "कॉन्फ़िगर करें" लिंक पर जाएं और URL देखें। मैंने देखा कि मेरे सभी अन्य ब्लॉक में एक URL है जिसमें इसकी मशीन आईडी शामिल है, लेकिन इस विशेष ब्लॉक के लिए, यह हैशेड मशीन आईडी थी। एक बार जब मैंने मशीन आईडी को ब्लॉक_लोड, वायोला में डाल दिया, तो यह एक आकर्षण की तरह काम करती थी!

इसलिए मुझे लगता है कि सवाल उबल रहा है: क्या चल रहा है, और ड्रुपल ने मेरी मशीन का नाम क्यों लिया है? क्या यह एक बग है, या मेरी ओर से कोई त्रुटि है?

जवाबों:


23

ऐसा इसलिए है क्योंकि ब्लॉक मॉड्यूल 32 वर्णों तक के एक 'डेल्टा' (ब्लॉक आईडी) की अपेक्षा करता है। लेकिन एक व्यू ब्लॉक डिस्प्ले में 65 अक्षर तक हो सकते हैं: दृश्य नाम से 32 अक्षर और प्रदर्शन नाम से 32 अक्षर और उनके बीच एक हाइफ़न '-'।

जब डेल्टा 32 वर्णों की सीमा से अधिक हो जाता है, तो दृश्य md5 के माध्यम से हैश करेगा - यह एक यादृच्छिक स्ट्रिंग नहीं है। आप इसे सीएसएस और jQuery चयनकर्ताओं के लिए सुरक्षित रूप से उपयोग कर सकते हैं।


मेरा ज्यादातर जवाब drupal.org/node/346602
Capi Etheriel

धन्यवाद! मुझे पता था कि यह यादृच्छिक नहीं था, लेकिन मुझे यकीन नहीं था कि क्या चल रहा है। यह इसे समझाता है :)।
पीटर

4

दृश्य मशीन नाम केवल हैशेड हैं यदि नाम लंबाई में 32 वर्णों से अधिक है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.