Drupal 6:在单页上替换jquery版本

时间:2011-08-16 17:19:24

标签: jquery drupal-6

我在使用Jquery版本绑定时非常挑剔。我需要在一个特定页面上安装1.4.1或更高版本才能达到特定效果,而且我没有办法覆盖Drupal默认版本1.2.6。只有一页。 Drupal 6最高可以处理的是v1.3.2,JQ Update module在全网范围内进行交换。

那么有没有办法覆盖特定页面的JQ头标记?

3 个答案:

答案 0 :(得分:2)

这是一个新模块。这是从 jquery更新模块中复制和修改的:     

/**
 * Implementation of hook_theme_registry_alter().
 *
 * Make my page preprocess function run *after* everything else's.
 */
function my_module_theme_registry_alter(&$theme_registry) {
  if (isset($theme_registry['page'])) {
    // If jquery_update's preprocess function is there already, remove it.
    if ($key = array_search('jquery_update_preprocess_page', $theme_registry['page']['preprocess functions'])) {
      unset($theme_registry['page']['preprocess functions'][$key]);
    }
    // Now tack it on at the end so it runs after everything else.
    $theme_registry['page']['preprocess functions'][] = 'my_module_preprocess_page';
  } 
}


/**
 * Implementation of moduleName_preprocess_hook().
 *
 * Replace Drupal core's jquery.js with the new one from my module.
 */
function my_module_preprocess_page(&$variables) {
  // Only do this for a specific page.
$alias_array = explode('/', drupal_get_path_alias($_GET['q']));
if($alias_array[0] == 'special_page') {
  // get the scripts from head.
    $scripts = drupal_add_js();

    $myreplacement = drupal_get_path('module', 'my_module').'/jquery-1.4.1.min.js';

    $new_jquery = array($myreplacement => $scripts['core']['misc/jquery.js']);
    $scripts['core'] = array_merge($new_jquery, $scripts['core']);
    unset($scripts['core']['misc/jquery.js']);

        $variables['scripts'] = drupal_get_js('header', $scripts);
    }

}

?>

答案 1 :(得分:0)

drupal_add_js可以工作吗?将$data替换为.js文件的路径。

答案 2 :(得分:0)

迈克尔D的答案很棒。我将添加,我不是用于单个页面,而是用于前面的所有站点,因此,我可以为后台保留标准版本的Jquery。我没有任何冲突,我使用最新版本的Jquery。