هل المسارات المطلقة مسموح بها في ملفات المعلومات؟

drupal.stackexchange https://drupal.stackexchange.com/questions/168038

  •  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');
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى drupal.stackexchange
scroll top