Question

Je suis en train d'insérer référence au fichier Javascript dans l'en-tête en utilisant drupal_add_js(). J'ai placé cette ligne dans la fonction prétraiter de modèle dans template.php. Le résultat que le code ne fonctionne pas du tout: Il n'y a pas de lien de script en sortie comme il devrait être. Quelqu'un peut-il 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");  

.....
Était-ce utile?

La solution

drupal_add_js() fonctionne, mais vous mettez profondément dans le processus de rendu des pages. Je vous suggère de le mettre dans le template.php comme vous faites, mais au début, en dehors de toute fonction. Ce que nous avons fait sur certains de nos projets.

Autres conseils

Encore plus facile, Javascript qui doit être chargé sur toutes les pages peuvent être ajoutés dans le fichier .info du thème. Voir http://drupal.org/node/171205#scripts .

  drupal_add_js(path_to_theme().'/js/jquery.cycle.all.js');
  $vars['scripts'] = drupal_get_js();

Si vous placez le fichier javascript dans le répertoire du thème, vous pouvez simplement ajouter ce qui suit aux thèmes fichier .info

scripts[] = myJavaScriptFile.js

Après avoir ajouté ce fichier, vous devez désactiver votre thème, puis réactifs il.

Comme indiqué par d'autres, en utilisant simplement drupal_add_js() d'une implémentation hook_preprocess_page() ne fonctionne pas. Les références à des fichiers JavaScript collectés à travers les multiples appels à drupal_add_js() sont utilisés pour générer le balisage correspondant dans les variables $scripts template_preprocess_page() . Mais la mise en œuvre de hook_preprocess_page() d'un thème est toujours appelé après template_preprocess_page(). Ainsi, afin d'avoir les fichiers ajoutés par drupal_add_js() dans votre fichier .tpl.php (s), vous devez remplacer les variables $scripts déjà définies:

function THEME_preprocess_page(&$variables)
  drupal_add_js(...);
  $variables['scripts'] = drupal_get_js();
}

Mais, vous ne devriez pas avoir à ajouter jquery.js et drupal.js vous, il devrait déjà être fait automatiquement par le noyau Drupal. Si vous devez le faire vous-même, quelque chose est cassé sur votre site. Vous pouvez (re) ajouter les fichiers comme une solution rapide, mais il vaut mieux trouver la cause racine du problème car il est le plus susceptible de créer d'autres problèmes que vous n'avez pas encore identifiés (ou ont travaillé sans le savoir).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top