هل المسارات المطلقة مسموح بها في ملفات المعلومات؟
-
29-09-2020 - |
سؤال
أنا أكتب أ .info
ملف لوحدة نمطية، وأريد تضمين البرنامج النصي الذي تم تثبيته فيه /sites/all/libraries
:
لذلك قمت بتضمين السطر أدناه في ملفي .info
ملف:
scripts[] = /sites/all/libraries/zeroclipboard-2.2.0/dist/ZeroClipboard.js
ومع ذلك، مع أو بدون شرطة مائلة في هذا المسار، أحصل دائمًا على نفس النتيجة:يعامل Drupal هذا على أنه مرتبط بدليل الوحدة ويحاول التحميل ويفشل
/sites/all/modules/custom/clipboard//sites/all/libraries/zeroclipboard-2.2.0/dist/ZeroClipboard.js?nsnrjh
ربما أجبت على سؤالي بنفسي، ولكن لا يمكنني العثور على أي إجابة محددة لذلك في مستندات دروبال؟
شكرا لكم جميعا،
ميغابايت
المحلول
_system_rebuild_module_data
هو المسؤول عن ذلك.يوجد قسم كامل في الكود فقط للتأكد:
// Prefix stylesheets and scripts with module path.
$path = dirname($module->uri);
if (isset($module->info ['stylesheets'])) {
$module->info ['stylesheets'] = _system_info_add_path($module->info ['stylesheets'], $path);
}
if (isset($module->info ['scripts'])) {
$module->info ['scripts'] = _system_info_add_path($module->info ['scripts'], $path);
}
لي يخمن هو أن هذه الوحدة لا ينبغي أبدًا أن تفترض وجود شيء ما إذا لم تقم الوحدة نفسها بتثبيته.إنها طريقة لإدخال الأخطاء.كما أن السماح للوحدات النمطية بالوصول إلى خارج الدليل الخاص بها قد يكون بمثابة خرق أمني.
إذا كنت بحاجة إلى برنامج نصي لا يمكنك تضمينه في وحدتك، فاستخدمه واجهة برمجة تطبيقات المكتبات.بالطبع هناك طرق أخرى، ولكن معظمها يسبب مشكلات، وإصلاح جميع المشكلات سيؤدي إلى استنساخ هذه الوحدة الجاهزة على أي حال.
نصائح أخرى
إذا كنت تقوم بإنشاء وحدة مخصصة، فيمكنك استخدام هذه الوظيفة لإضافة مكتبة أو ملف js من lirary.
$info = libraries_load('ui.tabs');
drupal_add_library('system', 'ui.tabs');