it-swarm.asia

إظهار العقدة في التراكب باستخدام drupal 7 وحدة التراكب

هل هناك طريقة لفتح تراكب بمحتوى عقدة باستخدام drupal الوحدة الأساسية للتراكب؟ إذا تمكنت من إعادة استخدام رمز جافا سكريبت على الأقل سأكون سعيدًا بالفعل =)

6
Luiz Guilherme

الطريقة الأسرع هي تنفيذ hook_admin_paths_alter () في وحدة نمطية لإعادة تحديد عناصر القائمة المحددة في hook_menu() بواسطة الوحدات الأخرى وهي مسارات إدارية. يتم استخدام القيمة التي يتم إرجاعها من تطبيقات hook_admin_paths () ، والتي يتم تغييرها بعد ذلك من تطبيقات hook_admin_paths_alter() ، من وحدة التراكب لتحديد الصفحات التي يتم عرضها كتراكب. نظرًا لأن الوحدات الأخرى يمكن أن تستخدم نفس المعلومات لتقديم الصفحات باستخدام موضوع مختلف ، يجب أن تتطلب الوحدة النمطية وحدة التراكب كاعتماد ، للتأكد من عرض الصفحات الإضافية بشكل فعال على أنها تراكب.

function mymodule_admin_paths_alter(&$paths) {
  $paths['node/*/view'] = TRUE;
}

إذا لاحظت أن هذا التطبيق لا يعمل عندما يشاهد المستخدمون ، على سبيل المثال ، example.com/node/1 ، ولكن فقط عندما يشاهدون example.com/node/1/view ، فعندئذٍ سأنفذ الخطاف باستخدام الكود التالي. يجب أن يعمل التطبيق الأول الذي قدمته ، حيث أن علامة التبويب "عرض" هي علامة التبويب الافتراضية ، وعندما يشاهد المستخدمون example.com/node/1 ، Drupal حقًا example.com/node/1/عرض.

function mymodule_admin_paths_alter(&$paths) {
  $paths['node/*'] = TRUE;
  $paths['node/*/view'] = TRUE;
}

نظرًا لأن السطر الأول يمكنه التقاط جميع صفحات العقدة (لم أتحقق من ذلك) ، فسوف أتحقق مما إذا كانت هناك صفحات أخرى ضمن هذا المسار لا يجب عرضها ؛ في هذه الحالة ، يمكن تغيير التنفيذ كما يلي ("العقدة/*/backlinks" مثال فقط):

function mymodule_admin_paths_alter(&$paths) {
  $paths['node/*'] = TRUE;
  $paths['node/*/view'] = TRUE;
  $paths['node/*/backlinks'] = FALSE;
}
  • عادة ، تنفذ الوحدات hook_admin_paths() للإبلاغ عن أي من عناصر القائمة الخاصة بها هي صفحات إدارية ؛ هذا يعني أنه إذا لم تكن الصفحة صفحة إدارية ، فلن تتم إضافة إدخال لتلك الصفحة إلى الصفيف الذي تم إرجاعه.
  • يتم تنفيذ hook_admin_paths() لعناصر القائمة المحددة في الوحدة الخاصة بك ؛ لإعادة تعريف عندما تكون عناصر القائمة المعرفة من الوحدات النمطية الأخرى صفحات إدارية ، تحتاج إلى تنفيذ hook_admin_paths_alter().
  • إلى الصفحات التي تم تعريفها على أنها صفحات إدارية لا يتم تطبيق التحكم في الوصول تلقائيًا ؛ هذا يعني أن الوحدة النمطية التي تحدد عناصر القائمة التي تم الإبلاغ عنها على أنها صفحات إدارية لا تزال بحاجة إلى استخدام "الوصول إلى رد الاتصال" و "وسيطات الوصول" لتحديد المستخدمين الذين يمكنهم الوصول إلى عناصر القائمة المرتبطة بالصفحات الإدارية. يتم تقديم الصفحات التي تم تعريفها على أنها صفحات إدارية بشكل مختلف فقط ، إذا كانت هناك وحدة نمطية تقوم بذلك.
  • تحدد وحدة العقدة صفحات تحرير العقدة على أنها صفحة إدارية فقط عند تحديد مربع اختيار في صفحة إدارية ؛ تتم معالجة هذه الصفحات بالفعل.
6
kiamlaluno

يمكنك أيضًا استخدام مسارات التراكب الوحدة النمطية. هذه وحدة بسيطة تمكن المسؤولين من استخدام التراكب المضمن للصفحات غير الإدارية. هذا يعني أنه يمكنك استخدام التراكب لعمل النوافذ المنبثقة دون إضافة المزيد من مكتبات جافا سكريبت إلى موقعك.

6
user842

انتهى بي الأمر باستخدام وحدة مسارات التراكب مع اللوحات حتى أتمكن من عرض نموذج الاشتراك في النشرة الإخبارية. ظهر النموذج ، ولكنه تضمن أيضًا أي شيء آخر على الصفحة (الرأس والتذييل والأشرطة الجانبية وما إلى ذلك). تم عرض صفحة الاشتراك في النشرة الإخبارية من خلال قالب الموقع الافتراضي.

لذلك كان الحل الصعب هو إنشاء متغير في قالب الموقع الافتراضي تحت اللوحات. تم اختيار المتغير فقط إذا كانت العقدة: النوع عبارة عن نموذج ويب. ثم قمت بإزالة المحتوى الزائد وجعلت المتغير يعرض المحتوى الرئيسي فقط.

المعزوفة! ظهرت صفحة الاشتراك في النشرة الإخبارية في تراكب ببساطة كنموذج يمكنني تصميمه وفقًا لمحتوى قلب CSS الخاص بي!

1
silentkrange