drupal_add_css, drupal_add_js не работает - PullRequest
2 голосов
/ 13 декабря 2010

Я использую drupal_add_css() и drupal_add_js() для добавления файлов CSS и JavaScript на мой сайт в Drupal. Я делаю это в модуле под названием control, поэтому используемая мной функция называется control_preprocess_page(&$vars).

Но в моей теме ничего не добавлено!

Ответы [ 3 ]

5 голосов
/ 14 декабря 2010

Причина, по которой эти функции не работают в функции preprocess_page (), заключается в том, что template_preprocess_page () (которая вызывается первой) уже отформатировала структурированное содержимое в переменные $ scripts и $ styles. Если вы хотите добавить дополнительные js или css на уровне предварительной обработки, вам нужно сгенерировать эти две переменные, что-то вроде этого:

function control_preprocess_page(&$vars) {
  // Add new CSS.
  drupal_add_css('path/to/css/foo.css');
  // Rebuild the 'styles variable.
  $vars['styles'] = drupal_get_css();

  // Add new JS.
  drupal_add_js(...);
  $vars['scripts'] = drupal_get_js();
}

Использование drupal_add_js / drupal_add_css в hook_init или более точная целевая функция (например, ловушка alter или ловушка nodeapi, если применимо) позволит избежать повторной генерации этих переменных.

4 голосов
/ 13 декабря 2010

В тот момент, когда вам нужен ваш CSS / JS, вы можете вызвать его с drupal_add_css / js.Вы также можете использовать его в hook_init (), если ваш модуль используется на каждой странице.

0 голосов
/ 13 декабря 2010

Некоторые указатели, которые могут помочь:

1) Поместите ваш скрипт CSS / JS в папку вашей темы.2) В вашем файле node.tpl.php используйте следующее:

<?php drupal_add_js(drupal_get_path('theme', 'INSERT_NAME_OF_THEME') . '/INSERT_NAME_OF_CSS_FILE.css'); ?>

3) Если вы поместите свой CSS в подпапку, вам потребуется следующий код:

4) Обновите кеш на yousite.com/admin/settings/performance

5) Иногда я обнаруживаю, что мне нужно отключить тему в admin / build / themes и снова включить ее.

...