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

发布于 2024-11-30 01:03:43 字数 251 浏览 0 评论 0原文

我对 Jquery 版本绑定感到非常困惑。我需要在一个特定页面上安装 1.4.1 或更高版本,以实现特定效果,并且我没有找到一种方法来覆盖 Drupal 默认版本 1.2.6。仅一页。 Drupal 6 可以处理的最高版本似乎是 v1.3.2,JQ 更新模块 在站点范围内进行交换。

那么有没有办法覆盖特定页面的JQ head标签呢?

I'm in quite a pickle with a Jquery version bind. I need to have version 1.4.1 or higher on one specific page, to achieve a particular effect, and I don't see a way to override the Drupal default verion of 1.2.6. for just the one page. The highest Drupal 6 can seem to handle is v1.3.2, which the JQ Update module swaps in sitewide.

So is there any way to override the JQ head tag for a particular page?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

暖风昔人 2024-12-07 01:03:43

它位于一个新模块中。这是从 jquery update 模块复制并修改的:

/**
 * 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);
    }

}

?>

Here it is in a new module. This is copied and modified from the jquery update module.:

/**
 * 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);
    }

}

?>
迷荒 2024-12-07 01:03:43

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

Could drupal_add_js work? Replace $data with the path to your .js file.

三生池水覆流年 2024-12-07 01:03:43

Michael D 的回答非常棒。我要补充一点,我不是将它用于单个页面,而是用于前面的所有站点,因此,我可以为后台保留标准版本的 Jquery。我没有任何冲突,我使用最新版本的 Jquery。

The answer of Michael D is just great. I'll add, i use it not for a single page, but for all the site in front and so, i could keep standard version of Jquery for the backoffice. I do not have any conflict and i use latest version of Jquery.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文