Drupal программно удаляет JavaScript - PullRequest
2 голосов
/ 21 июня 2011

Я пытаюсь отключить JavaScript, когда пользователь использует IE.Есть ли способ сделать это в template.php или в пользовательском модуле?

Ответы [ 2 ]

1 голос
/ 22 июня 2011

В качестве альтернативы обработке содержимого $vars['scripts'], которое представляет собой строку, содержащую HTML-код для вывода в теге <head>, вы можете использовать значение, возвращаемое из drupal_add_js (NULL, NULL, 'header'), который похож на следующий:

$header_javascript = array(
  'core' => array(
    'misc/jquery.js' => array(
      'cache' => TRUE,
      'defer' => FALSE,
      'preprocess' => TRUE,
    ), 
    'misc/drupal.js' => array(
      'cache' => TRUE,
      'defer' => FALSE,
      'preprocess' => TRUE,
    ),
  ), 
  'module' => array(), 
  'theme' => array(), 
  'setting' => array(
    array('basePath' => base_path()),
  ), 
  'inline' => array(),
);

Индекс «module» содержит ссылку на файлы JavaScript, добавленные из модулей, «settings» содержит все настройки JavaScript, обычно добавляемыемодули, а «inline» содержит встроенный код JavaScript.
Это может помочь, если вам необходимо различать разные файлы JavaScript и (например) не трогать любой файл JavaScript, помеченный как «core».

Противовес заключается в том, что для заполнения содержимого $vars['scripts'] необходимо дублировать часть кода, используемого в drupal_get_js () .Так как вам потребуется настраиваемый код, вы не будете дублировать весь код этой функции, но вы все равно будете дублировать его часть.

В Drupal 7 переменная $vars['scripts'] больше не передается template_preprocess_page() (и аналогичные функции препроцессора, реализованные модулями или темами);он передается template_preprocess_html () .

0 голосов
/ 21 июня 2011

Вы можете использовать preprocess_page () hook в template.php.

function YOUR_THEME_preprocess_page(&$vars) {
  if (isset($_SERVER['HTTP_USER_AGENT']) && (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false)) {
    $vars['scripts'] = 'get a mac!';
  }
}

Очевидно, что вы должны сделать что-то более умное с контентом $ vars ['scripts']:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...