Pregunta

estoy escribiendo un .info archivo para un módulo, y quiero incluir un script que se ha instalado en /sites/all/libraries:

Así que he incluido la siguiente línea en mi .info archivo:

scripts[] = /sites/all/libraries/zeroclipboard-2.2.0/dist/ZeroClipboard.js

Sin embargo, con o sin la barra diagonal inicial en este camino, siempre obtengo el mismo resultado:Drupal trata esto como relativo al directorio del módulo e intenta cargarlo y falla

/sites/all/modules/custom/clipboard//sites/all/libraries/zeroclipboard-2.2.0/dist/ZeroClipboard.js?nsnrjh

Entonces, tal vez haya respondido mi propia pregunta, pero no puedo encontrar ninguna respuesta definitiva en los documentos de Drupal.

Gracias a todos,

MEGABYTE

¿Fue útil?

Solución

_system_rebuild_module_data es responsable de eso.Hay una sección completa en el código solo para asegurarse:

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

Mi adivinar es que el módulo nunca debe asumir que algo existe si el módulo mismo no lo instala.Es una forma de introducir errores.Además, permitir que los módulos salgan de su directorio podría ser una violación de seguridad.

Si necesita un script que no puede incluir en su módulo, use API de bibliotecas.Por supuesto, hay otras formas, pero la mayoría de ellas son problemáticas y, de todos modos, solucionar todos los problemas daría como resultado la clonación de este módulo listo.

Otros consejos

Si está creando un módulo personalizado, puede usar esta función para agregar una biblioteca o un archivo js desde la biblioteca.

$info = libraries_load('ui.tabs');
drupal_add_library('system', 'ui.tabs');
Licenciado bajo: CC-BY-SA con atribución
No afiliado a drupal.stackexchange
scroll top