2010-06-06 61 views
4

我正在寻找一种强制Drupal在特定页面上使用1.4的方法。在特定页面上的drupal jQuery 1.4

这是一样的这个老问题:drupal jQuery 1.4 on specific pages

它看我一段时间试试,我标记为正确答案。但是因为我对模块开发不熟悉,所以根据答案我找不出来。

从答案中的代码是这样的:

/** 
* Implementation of hook_theme_registry_alter(). 
* Based on the jquery_update module. 
* 
* Make this page preprocess function runs *last*, 
* so that a theme can't call drupal_get_js(). 
*/ 
function MYMODULE_theme_registry_alter(&$theme_registry) { 
    if (isset($theme_registry['page'])) { 
    // See if our preprocess function is loaded, if so remove it. 
    if ($key = array_search('MYMODULE_preprocess_page', 
     $theme_registry['page']['preprocess functions'])) { 
     unset($theme_registry['page']['preprocess functions'][$key]); 
    } 
    // Now add it on at the end of the array so that it runs last. 
    $theme_registry['page']['preprocess functions'][] = 'MYMODULE_preprocess_page'; 
    } 
} 

/** 
* Implementation of moduleName_preprocess_hook(). 
* Based on the jquery_update module functions. * 
* Strips out JS and CSS for a path. 
*/ 
function MYMODULE_preprocess_page(&$variables, $arg = 'my_page', $delta=0) { 

    // I needed a one hit wonder. Can be altered to use function arguments 
    // to increase it's flexibility. 
    if(arg($delta) == $arg) { 
    $scripts = drupal_add_js(); 
    $css = drupal_add_css(); 
    // Only do this for pages that have JavaScript on them. 
    if (!empty($variables['scripts'])) { 
     $path = drupal_get_path('module', 'admin_menu'); 
     unset($scripts['module'][$path . '/admin_menu.js']); 
     $variables['scripts'] = drupal_get_js('header', $scripts); 
    } 
    // Similar process for CSS but there are 2 Css realted variables. 
    // $variables['css'] and $variables['styles'] are both used. 
    if (!empty($variables['css'])) { 
     $path = drupal_get_path('module', 'admin_menu'); 
     unset($css['all']['module'][$path . '/admin_menu.css']); 
     unset($css['all']['module'][$path . '/admin_menu.color.css']); 
     $variables['styles'] = drupal_get_css($css); 
    } 
    } 
} 

我需要jquery_update 1.3.2要对节点类型的“博客”和“视频”未设置。有人可以帮我吗?

谢谢。

回答

2

MYMODULE_preprocess_page函数中,$ scripts变量包含一个数组,其中包含有关将被添加到页面的所有JavaScript的信息。

如果你想从页面中删除一个JS文件,你应该从$ scripts数组中删除它的条目(然后更新$ variables ['scripts'])。这就是unset函数正在做的事情。

如果你想删除的jQuery是多数民众赞成附带的Drupal的一个,你可以将其删除:

unset($scripts['core']['misc/jquery.js']); 

否则,你就必须print_r在$脚本变种,以便找到您需要删除的条目。

+0

如何检查内容类型,以便知道何处取消设置? 现在它通过arg工作。 谢谢。 – Mark 2010-06-07 08:37:48

+0

不知道这是否是正确的方法,但我会通过根据nid(从$ _GET ['q'])查询'type'字段的'node'表来执行此操作。 – 2010-06-08 17:07:28

相关问题