Como se señaló por otros, simplemente el uso de drupal_add_js()
desde una implementación hook_preprocess_page()
no funciona. Las referencias a los archivos de JavaScript recopilados a través de las llamadas múltiples a drupal_add_js()
se utilizan para generar el marcado correspondiente en las variables $scripts
de template_preprocess_page()
. Pero la implementación de un tema de hook_preprocess_page()
siempre se llama después de template_preprocess_page()
. Así que con el fin de tener los archivos añadidos a través drupal_add_js()
en su archivo (s) .tpl.php
, es necesario reemplazar el conjunto ya $scripts
variables:
function THEME_preprocess_page(&$variables)
drupal_add_js(...);
$variables['scripts'] = drupal_get_js();
}
Pero, usted no debería tener que añadir jquery.js
y drupal.js
usted mismo, ya debería ser hecho automáticamente por el núcleo de Drupal. Si necesita hacerlo usted mismo, entonces algo se rompe en su sitio. Puede (re) agregar los archivos como una solución rápida, pero es mejor que encuentre la causa raíz del problema, ya que es muy probable que cree otros problemas que aún no identificó (o que no funcionó sin darse cuenta).
Tienes razón. Una vez que lo saco de la función y lo coloco afuera en el alcance global, funciona como un encanto. :) Tengo otra pregunta sin embargo. es puramente conocimiento sake. ¿Por qué Drupal agrega esos archivos dos veces desde dos ubicaciones diferentes en la salida? ¿Alguna idea? Así es como se ve: – Andrew
Según lo sugerido por el usuario - scott, dejé de usar esos archivos en mi carpeta de temas y usé los valores predeterminados de drupal en su lugar. Por lo tanto, no hay ninguna mención de ruta en la función drupal_add_js, en otras palabras, solo nombre de archivo - drupal_add_js ('jquery.js') – Andrew
ydesde, esos 2 archivos deberían agregarse automáticamente al tema por drupal. toda la colección de archivos js se agrega a la página mediante php print $ scripts?> en page.tpl.php –