Добавление файла JavaScript
-
23-09-2019 - |
Вопрос
Я пытаюсь вставить ссылку на файл 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");
.....
Решение
drupal_add_js()
работает, но вы вкладываете его глубоко в процесс рендеринга страницы.Я предлагаю вам поместить его в template.php, как вы это делаете, но вначале вне какой-либо функции.Именно это мы и сделали в нескольких наших проектах.
Другие советы
Еще проще: Javascript, который необходимо загрузить на все страницы, можно добавить в файл .info темы.Видеть http://drupal.org/node/171205#scripts.
drupal_add_js(path_to_theme().'/js/jquery.cycle.all.js');
$vars['scripts'] = drupal_get_js();
Если вы поместите файл javascript в каталог темы, вы можете просто добавить следующее в файл .info темы:
scripts[] = myJavaScriptFile.js
После добавления этого файла вам необходимо деактивировать тему, а затем повторно активировать ее.
Как указано другим, просто используя 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.Если вам нужно сделать это самостоятельно, значит, на вашем сайте что-то сломано.Вы можете (повторно) добавить файлы в качестве быстрого исправления, но вам лучше найти основную причину проблемы, поскольку она, скорее всего, создает другие проблемы, которые вы еще не выявили (или обошли, не осознавая этого).