web-dev-qa-db-fra.com

Inclusion d'une version jQuery différente uniquement sur une page spécifique

le module de mise à jour jQuery inclut ce script.

<script type="text/javascript" src="/sites/all/modules/jquery_update/replace/jquery.min.js?6"></script>

J'ai besoin de cela sur chaque page, à l'exception d'un certain fichier de modèle que j'utilise dans une boîte de fantaisie, et j'ai besoin d'une version ultérieure de jQuery.

J'ai besoin d'exclure la mise à jour jQuery de mettre le script ci-dessus dans le $scripts variable UNIQUEMENT sur page-media-photos.tpl.php. Comment puis-je atteindre cet objectif?

16
albo

Voici vos options:

  • Utilisez jQuery Multi , comme mentionné dans une autre réponse. Il peut être configuré pour charger la version supérieure de jQuery uniquement sur cette page et uniquement pour la boîte de fantaisie. Il n'interférera pas avec jQuery de Drupal ou avec jQuery de jquery_update.
  • Dans Drupal 7, vous pouvez utiliser hook_js_alter () , qui vous permettra d'échanger la version de jquery_update avec ce que vous voulez.
  • Dans Drupal 6 avec jQuery Update , il fournit n crochet qui vous permet de modifier le JS après avoir fait son travail. Vous pouvez regarder le code jQuery Multi 6.x pour voir comment il utilise ce hook .
  • Dans Drupal 6 sans mise à jour jQuery , vous pouvez le faire en utilisant un hook preprocess_page. Le $scripts la variable y sera disponible et vous pourrez la modifier. Cela peut devenir un peu délicat. Vous pouvez également voir comment qmulti fait cela . jQuery Update procède également de la même manière.

N'oubliez pas que le passage à une version jQuery supérieure peut casser certaines choses dans Drupal core et contrib, qui est le problème que jQuery Multi résout. Donc, si vous faites cela, assurez-vous de ne rien casser. l'avantage ici est que vous chargez simplement la jQuery dont vous avez besoin, tandis qu'avec jQuery Multi, vous chargez les deux.

10
goron

Il y a un module jQuery multi . Ce module vous permet d'avoir multiple versions of jQuery run parallel sur votre drupal. Il fournit un alias pour chaque instance que vous pouvez utiliser pour appeler cette version de jquery.

3
Gokul N K

Si vous avez des problèmes avec jqueryupdate et que vous affichez les pages d'administration (par exemple), essayez d'installer la version Dev de ctools et tout ira bien, venez de me tester.

3
Molfar

Veuillez trouver ce code peut être utile, placez ce code dans votre template.php

function MYTHEME_preprocess_page(&$vars) {
  $scripts = drupal_add_js();
  if (in_array('page-media-photos', $vars['template_files'])) {
    unset($scripts['all']['module']['PATH_OF_JS_NEED_TO_REMOVE']);
  }
  $vars['scripts'] = drupal_get_js('header', $scripts);
}

PATH_OF_JS_NEED_TO_REMOVE donne le chemin de js pour ex: sites/all/modules/og/og.js

3
Ramesh Babu T B

Drupal 7

Vous pouvez appeler jquery_update_jquery_replace() sur une page spécifique (par exemple, dans hook_library_alter()) comme illustré dans ici par drupalmoff :

<?php
/**
 * Implements hook_module_implements_alter().
 */
function your_module_module_implements_alter(&$implementations, $hook){
  if( $hook == 'library_alter' ){
    $group = $implementations ['your_module'];
    unset($implementations ['your_module']);
    $implementations ['your_module'] = $group;
  }
}

/**
 * Implements hook_library_alter().
 */
function your_module_library_alter(&$javascript, $module) {
  if( $module === 'system' && current_path() == 'path/to/page' ) {
    // Make sure we inject either the minified or uncompressed version as desired.
    $min = variable_get('jquery_update_compression_type', 'min') == 'none' ? '' : '.min';
    $cdn = variable_get('jquery_update_jquery_cdn', 'none');
    $path = drupal_get_path('module', 'jquery_update');

    $version = '1.7';

    jquery_update_jquery_replace($javascript, $cdn, $path, $min, $version);
  }
}
?>

Drupal 6

Ma solution était de changer JQUERY_UPDATE_REPLACE_PATH constant avant jquery_update le charge:

<?php
/**
 * Replace jQuery files on specified paths (fix for IE 6&7 - jQuery bug: bugs.jquery.com/ticket/6498)
 */
// if (array_search($_GET['q'], array('my_page')) !== FALSE) {
if (arg(0) == 'node' && arg(1) == '123') {
  define('JQUERY_UPDATE_REPLACE_PATH', 'sites/all/libraries/jquery/1.5.2');
}
?>

Il peut donc être ajouté au tout début du fichier .module (qui est chargé avant jquery_update, ou essayez dans le fichier de paramètres.

2
kenorb