L'ajout d'un fichier JavaScript
J'essaie d'insérer une référence à du code Javascript dans le fichier d'en-tête en utilisant drupal_add_js()
. J'ai mis cette ligne dans le modèle de prétraiter la fonction dans template.php. Le résultat que le code ne fonctionne pas du tout: Il n'existe pas de lien de script en sortie comme il se doit. Quelqu'un peut me dire ce que je fais mal?
function phptemplate_preprocess_page(&$vars) {
$url = drupal_get_path("theme","mysite");
drupal_add_js($url."/jquery.js");
drupal_add_js($url."/drupal.js");
.....
Vous devez vous connecter pour publier un commentaire.
drupal_add_js()
fonctionne, mais vous la mettre profond dans la page processus de rendu. Je vous suggère de le mettre dans le template.php comme vous êtes en train de faire, mais au début, en dehors de toute fonction. C'est ce que nous avons fait sur quelques-uns de nos projets.drupal_add_js()
en dehors de toutes les fonctions est une très mauvaise façon d'ajouter un ou plusieurs fichiers JS dans Drupal. Il convient d'ajouter, par exemple, dans un modulehook_init()
mise en œuvre, dans votre thèmeYOURTHEME_preprocess_page()
ouYOURTHEME_preprocess_node()
fonction, ou à l'aide des fonctions similaires, d'où l'ajout de fichiers JS est en quelque sorte "prévisible".Encore plus facile, Javascript, qui doit être chargé sur toutes les pages peuvent être ajoutées dans le thème .info fichier. Voir http://drupal.org/node/171205#scripts.
Si vous placez le fichier javascript dans le répertoire de thème, vous pouvez simplement ajouter les éléments suivants à l'thèmes .info fichier
Après l'ajout de ce fichier, vous devez désactiver votre thème, puis réactive.
Comme indiqué par d'autres, simplement à l'aide de
drupal_add_js()
à partir d'unhook_preprocess_page()
mise en œuvre ne fonctionne pas. Les références à des fichiers JavaScript collectées par le biais de plusieurs appels àdrupal_add_js()
sont utilisés pour générer le correspondant de balisage dans la$scripts
variables detemplate_preprocess_page()
. Mais un thème de la mise en œuvre dehook_preprocess_page()
est toujours appelé aprèstemplate_preprocess_page()
. Afin d'avoir les fichiers ajoutés pardrupal_add_js()
dans votre.tpl.php
fichier(s), vous devez remplacer la déjà mis en$scripts
variables:Mais, vous ne devriez pas avoir à ajouter
jquery.js
etdrupal.js
vous-même, il devrait déjà être fait automatiquement par la base de Drupal. Si vous avez besoin de le faire vous-même, alors quelque chose est cassé sur votre site. Vous pouvez (re-)ajouter les fichiers comme une solution rapide, mais vous feriez mieux de trouver la cause racine du problème, car il est le plus susceptible de créer d'autres questions que vous n'avez pas encore trouvé (ou ont travaillé sans s'en rendre compte).hook_init()
ouhook_preprocess()
ouhook_preprocess_page()
mise en œuvre (ou similaire crochets).