Удалите друпальный модуль javascript, замените его на собственный в template.php - PullRequest
0 голосов
/ 31 августа 2010

Я пытаюсь удалить файл lightbox.js по умолчанию из модуля Lightbox2, используя template.php, и загружаю его самостоятельно.Я хотел бы сделать это через template.php, если это возможно, и не помещать этот код в пользовательский модуль.Я добавляю свой файл javascript, затем удаляю файл javascript модуля.Проблема в том, что $ vars ['scripts'] не заменяется выводом из $ js, а выводит модуль javascript.krumo ($ js) показывает удаленный по умолчанию lightbox.js.Ниже то, что у меня есть в template_preprocess_page.Заранее спасибо.

drupal_add_js(path_to_theme() . "/resources/js/lightbox.js", 'theme');
$js = drupal_add_js(NULL, NULL, 'header'); //get header js files in an array
$lightbox_path = drupal_get_path('module', 'lightbox2');
unset($js['module'][$lightbox_path . '/js/lightbox.js']); //unset lightbox default js
$vars['scripts'] = drupal_get_js('header', $js);

1 Ответ

0 голосов
/ 31 августа 2010

Хорошо, тогда давайте еще раз посмотрим на это.

Посмотрев на http://api.drupal.org/api/function/drupal_add_js/6 второй раз, я заметил, что код лайтбокса, вероятно, находится в

$js['header']['module'][$lightbox_path .'/js/lightbox.js']

а не в

$js['module'][$lightbox_path .'/js/lightbox.js'].

Я предлагаю подвести dpm($js) перед вашим вызовом «unset», а затем нажать «Обновить» пару раз, пока он не появится, и убедиться, что вы нашли правильную комбинацию $ scope и $ type, чтобы найти код лайтбокса в.

(Примечание: dpm () - это функция, предоставляемая модулем devel, которую, я думаю, я предполагаю, что вы уже используете. Если нет, то drupal_set_message('<pre>'. print_r($js, TRUE) .'</pre>); также подойдет.

...