Sont des chemins absolus autorisés dans les fichiers info?
-
29-09-2020 - |
Question
Je suis en train d'écrire un .info
fichier pour un module, et je veux inclure un script qui a été installé dans /sites/all/libraries
:
J'ai donc inclus la ligne ci-dessous dans mon .info
fichier:
scripts[] = /sites/all/libraries/zeroclipboard-2.2.0/dist/ZeroClipboard.js
Cependant, avec ou sans le slash sur ce chemin, j'ai toujours le même résultat:Drupal traite de ce que par rapport au répertoire du module et de la tente et ne parvient pas à charger
/sites/all/modules/custom/clipboard//sites/all/libraries/zeroclipboard-2.2.0/dist/ZeroClipboard.js?nsnrjh
Alors peut-être que j'ai répondu à ma propre question, mais je ne trouve pas de réponse définitive à cette question dans le Drupal docs?
Merci à tous,
MO
La solution
_system_rebuild_module_data
est responsable de cela.Il y a toute une section dans le code juste pour s'assurer que:
// 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);
}
Mon deviner c'est que le module ne doit jamais supposer que quelque chose n'existe que si le module lui-même ne l'installez pas.C'est une façon d'introduire des erreurs.Aussi, permettant de modules à l'extérieur de leur répertoire pourrait être une violation de la sécurité.
Si vous avez besoin d'un script, vous ne pouvez pas inclure dans votre module, utilisez Les bibliothèques d'API.Bien sûr, il ya d'autres façons, mais la plupart d'entre eux est problématique, et la fixation de tous les problèmes assez grand résultat dans le clonage de ce module de prêt de toute façon.
Autres conseils
Si vous êtes à la création de modules personnalisés vous pouvez ensuite utiliser ces fonctions pour ajouter de la bibliothèque ou le js de lirary.
$info = libraries_load('ui.tabs');
drupal_add_library('system', 'ui.tabs');