Добавление файла JavaScript - PullRequest
       41

Добавление файла JavaScript

5 голосов
/ 02 апреля 2010

Я пытаюсь вставить ссылку на файл Javascript в заголовок, используя drupal_add_js(). Я поместил эту строку внутри функции предварительной обработки шаблона в template.php. В результате код вообще не работает: в выводе отсутствует ссылка на скрипт, как и должно быть. Может кто-нибудь сказать мне, что я делаю не так?

function phptemplate_preprocess_page(&$vars) {
    $url = drupal_get_path("theme","mysite");  
    drupal_add_js($url."/jquery.js");  
    drupal_add_js($url."/drupal.js");  

.....

Ответы [ 5 ]

10 голосов
/ 02 апреля 2010

Еще проще, Javascript, который необходимо загрузить на все страницы, можно добавить в файл .info темы. Смотри http://drupal.org/node/171205#scripts.

2 голосов
/ 02 апреля 2010
  drupal_add_js(path_to_theme().'/js/jquery.cycle.all.js');
  $vars['scripts'] = drupal_get_js();
1 голос
/ 31 октября 2011

Как указывалось другими, простое использование drupal_add_js() из hook_preprocess_page() реализации не работает. Ссылки на файлы JavaScript, собранные с помощью нескольких вызовов drupal_add_js(), используются для генерации соответствующей разметки в переменные $scripts из template_preprocess_page(). Но реализация темы hook_preprocess_page() всегда вызывается после template_preprocess_page(). Таким образом, чтобы добавить файлы через drupal_add_js() в ваши файлы .tpl.php, вам необходимо переопределить уже установленные переменные $scripts:

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

Но вам не нужно добавлять jquery.js и drupal.js самостоятельно, это уже должно быть сделано автоматически ядром Drupal. Если вам нужно сделать это самостоятельно, то на вашем сайте что-то сломалось. Вы можете (повторно) добавить файлы как быстрое решение, но вам лучше найти основную причину проблемы, поскольку она, скорее всего, создает другие проблемы, которые вы еще не определили (или обошли без их осознания).

1 голос
/ 03 апреля 2010

Если вы поместите файл javascript в каталог тем, вы можете просто добавить следующее .info-файл тем

scripts[] = myJavaScriptFile.js

После добавления этого файла вам нужно деактивировать тему, а затем активировать ее.

0 голосов
/ 02 апреля 2010

drupal_add_js() работает, но вы вкладываете это глубоко в процесс рендеринга страницы. Я предлагаю вам положить его в template.php, как вы делаете, но в начале, вне какой-либо функции. Это то, что мы делали на нескольких наших проектах.

...