A Drupal newbie ، لذا صححني إذا كان فهمي خاطئًا ، ولكن عادةً ، عندما يتم إنشاء كتلة بواسطة طرق العرض ، يتم إلحاق اسم الجهاز للكتلة باسم آلة طرق العرض.
أي "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 ، فسيتم تغييره ، وعندما أعود مرة أخرى من block إلى block_1 ، فسوف يعيد معرّف الجهاز إلى ما سبق. لذلك هناك ارتباط مباشر بين اسم الجهاز ومعرف "التجزئة" الذي يولده.
بدلاً من استدعاء block_load ("طرق العرض" ، "اسم الجهاز") ، يجب أن أستخدم معرّف الجهاز المجزأ ، وهو ما لا يمثل مشكلة ، ولكن الأمر استغرق مني طويلاً لمعرفة الوقت. كانت الطريقة التي توصلت بها إلى الانتقال إلى الهيكل -> الحظر والتمرير فوق رابط "تكوين" وإلقاء نظرة على عنوان URL. لقد لاحظت أن الكل كتلتي الأخرى تحتوي على عنوان URL يتضمن معرف الجهاز الخاص بها ، ولكن بالنسبة إلى هذا الحظر الخاص ، كان معرف الجهاز المجزأ. بمجرد إدخال معرف الجهاز في block_load ، فيولا ، عملت مثل السحر!
لذا أعتقد أن السؤال يتلخص في: ما الذي يحدث ، ولماذا Drupal تجزئة اسم الجهاز الخاص بي؟ هل هذا خطأ ، أم خطأ من جانبي؟
وذلك لأن الوحدة النمطية للكتلة تتوقع "دلتا" (معرف الكتلة) يصل طولها إلى 32 حرفًا. ولكن يمكن أن يصل عرض كتلة العرض إلى 65 حرفًا: حتى 32 حرفًا من اسم العرض و 32 حرفًا من اسم العرض وواصلة "-" بينهما.
عندما يتجاوز الدلتا الحد الأقصى للحروف الذي يبلغ 32 حرفًا ، ستتم تجزئه المشاهدات من خلال md5 - وهي ليست سلسلة عشوائية. يمكنك استخدامه بأمان لمحددات CSS و jQuery.
يتم تجزئة أسماء أجهزة العرض فقط إذا كان طول الاسم أكثر من 32 حرفًا.