2010-08-30 36 views
0

我想从Lightbox2模块中通过使用template.php,并加载我自己删除的默认lightbox.js文件。如果可能的话,我想通过template.php来做到这一点,而不是将此代码放置在自定义模块中。我正在添加我的JavaScript文件,然后取消设置模块JavaScript文件。问题是$ vars ['scripts']没有被$ js的输出取代,仍然输出模块javascript。 krumo($ js)显示已删除的默认lightbox.js。以下是我在template_preprocess_page中的内容。提前致谢。删除drupal模块javascript,替换我自己在template.php

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); 
+0

你应该看看我的回复,user310404,因为我修改它以包含我认为的解决方案。 – 2010-09-06 23:58:23

回答

0

好的,让我们再来看看它。

刚走看着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)调用,然后点击几次刷新,直到显示出来,并确保您已经获得了$ scope和$ type的完全正确组合,以查找其中的lightbox代码。

(注意:DPM()是由devel模块,我猜我假设傻冒已经使用如果你没有,那么drupal_set_message('<pre>'. print_r($js, TRUE) .'</pre>);会做,以及所提供的功能

+0

是的,它被写为 function dev_preprocess_page(&$ vars,$ hook){ – Vincent 2010-08-30 20:49:23