Разрешены ли абсолютные пути в информационных файлах?

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

Так что, возможно, я ответил на свой собственный вопрос, но я не могу найти никакого окончательного ответа на этот вопрос в документах Drupal?

Спасибо всем,

мегабайт

Это было полезно?

Решение

_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);
}

Мой догадываться заключается в том, что модуль никогда не должен предполагать, что что-то существует, если сам модуль это не устанавливает.Это способ внести ошибки.Кроме того, разрешение модулям выходить за пределы их каталога может быть нарушением безопасности.

Если вам нужен скрипт, который вы не можете включить в свой модуль, используйте API библиотек.Конечно, есть и другие способы, но большинство из них проблематичны, и устранение всех проблем в значительной степени привело бы к клонированию этого готового модуля в любом случае.

Другие советы

Если вы создаете пользовательский модуль, то вы можете использовать эти функции для добавления библиотеки или js-файла из lirary.

$info = libraries_load('ui.tabs');
drupal_add_library('system', 'ui.tabs');
Лицензировано под: CC-BY-SA с атрибуция
Не связан с drupal.stackexchange
scroll top