Вопрос

Я пытаюсь вставить ссылку на файл 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.Если вам нужно сделать это самостоятельно, значит, на вашем сайте что-то сломано.Вы можете (повторно) добавить файлы в качестве быстрого исправления, но вам лучше найти основную причину проблемы, поскольку она, скорее всего, создает другие проблемы, которые вы еще не выявили (или обошли, не осознавая этого).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top