Comment mettre à jour jQuery vers la dernière version que je peux télécharger?

33

J'utilise Drupal 7, qui utilise jQuery 1.4 par défaut? Comment puis-je le mettre à jour avec la dernière version (actuellement la 1.7)?

Karmacoma
la source
1
Je ne veux pas utiliser le module, je veux le manuel.
Karmacoma
Mettre à jour manuellement jQuery dans Drupal serait très compliqué et risqué, même pour les développeurs Drupal les plus aguerris. Vous devez suivre les conseils de Clive et utiliser jQuery Update.
sheena_d
Je vais au fichier misc-jquery.js via ftp et remplace le nouveau code jquery. Droite?
Karmacoma
misc-jquery.js n’est pas exactement la même copie d’une version jquery, pour autant que je sache. Cependant, selon git, drupalcode.org/project/jquery_update.git/tree/refs/heads/… , il devrait également y avoir un support 1.7.
AyeshK
@Patrick Kenny Je ne pense pas que cela soit correct - je peux sélectionner jquery 1.8 à l'aide de jquery_update à compter d'aujourd'hui
doub1ejack

Réponses:

44

Une solution consiste à installer la version de développement de jQuery Update , ce qui vous permet d'utiliser jQuery 1.7 (en visitant la page des paramètres à l' adresse http://mysite.com/admin/config/development/jquery_update ).

Attention, actuellement, il est connu que JavaScript est dissocié ailleurs sur le site (par exemple, le menu déroulant des widgets sur une page Gérer les champs ne fonctionnera plus). Si vous êtes prêt à remédier à cela, et à d’autres petits ennuis, c’est probablement votre meilleur choix. Vous devriez également noter que l’utilisation de la version dev d’un module n’est pas sans risque, car les chances qu’elle contienne des bogues sont bien plus grandes que l’utilisation d’une version spécifique.

Si vous voulez le faire manuellement, vous aurez beaucoup de code javascript à réécrire pour que votre site fonctionne comme prévu. jQuery a énormément changé entre les versions 1.4 / 1.5 et 1.7, de sorte qu'une grande partie du code javascript de Drupal ne fonctionne tout simplement pas.

Si vous souhaitez simplement déposer une version de jQuery 1.7, vous pouvez probablement implémenter hook_js_alter(), désélectionner le fichier jQuery principal et ajouter le vôtre à sa place:

function MYMODULE_js_alter(&$js) {
  $path = drupal_get_path('module', 'MYMODULE') . '/path/to/jquery.1.7.js';

  // Copy the current jQuery file settings and change
  $js[$path] = $js['misc/jquery.js'];

  // Update necessary settings
  $js[$path]['version'] = 1.7;
  $js[$path]['data'] = $path;

  // Finally remove the original jQuery
  unset($js['misc/jquery.js']);
}

Une fois que vous avez fait cela, ouvrez Outils de développement / Firebug et vous verrez toutes les modifications à apporter pour que le reste du site JS fonctionne :)

MISE À JOUR

La dernière version de la mise à jour de jQuery ( 7.x-2.3 au moment de la rédaction) vous permettra désormais de mettre à jour jQuery vers la version 1.8. Très sympa.

Le module jQuery Multi est une autre option, merci à goron de l'avoir signalé dans les commentaires. Comme il le note également, ce module a une version stable et ne cassera aucun code javascript existant.

Clive
la source
Thaks mec !!! Je cherche ça depuis un moment! Dans mon cas, je voulais simplement charger une version différente de jQuery par thème. Je viens donc de remplacer MYMODULE_js_alter pour MYTHEME_js_alter et drupal_get_path ('theme', 'MYTHEME') pour drupal_get_path ('module', 'MYMODULE')
victmo
1
Attention, Drupal est livré avec son propre ensemble de fichiers JavaScript conçus pour fonctionner avec un ancien jQuery et non compatibles avec jQuery 1.7 ou 1.8. La dernière mise à jour de jQuery fournit des fichiers de remplacement pour ceux-ci.
Pierre Buyle
1
Vous avez besoin de la version dev du module, la version stable n'a pas l'option 1.7
Clive
2
jQuery Multi est une autre option, qui ne nécessite pas la version dev, et ne casse aucun JS. Peut-être l'ajouter en tant qu'option ou supprimer "Le seul moyen"?
Goron
1
@goron Bon point, merci. Une partie de cette réponse est probablement obsolète maintenant je vais essayer de la mettre à jour prochainement
Clive
4

Vous devez également envisager d'utiliser le multi-module jquery, qui vous permet d'utiliser plusieurs versions de jquery. Excellent module, je l'utilise pour Druapl 7 et 6 sur tous mes projets.

rereiss
la source
2

Inspiré par la documentation de hook_js_alter , les travaux suivants fonctionnent. Vous pouvez le placer dans le template.php de votre thème. Cela nécessite que vous utilisiez un thème d'administration différent pour éviter tout conflit avec le noyau Drupal, et supposons que jquery-1.8.3.min.js se trouve dans un dossier appelé "js" dans le thème (à adapter en conséquence).

function [theme_machine_name]_js_alter(&$javascript) {

  $javascript['misc/jquery.js']['data'] = drupal_get_path('theme', '[theme_machine_name]') .
    '/js/jquery-1.8.3.min.js';

  $javascript['misc/jquery.js']['version'] = '1.8.3';

}

Shaun Dychko
la source
Exiger un thème différent admin est pas vraiment une solution, à moins que vous pouvez fournir une liste des thèmes qui seront travailler avec cette méthode. Je suppose que ce serait très, très peu. De plus, ces thèmes utiliseraient très probablement également jQuery, ce qui poserait très certainement des problèmes que le module de mise à jour de jQuery a été spécialement conçu pour résoudre ce problème
Clive
0

Je ne suis pas sûr de votre objectif, mais lorsque j’ai eu besoin d’une version spécifique pour le développement de modules personnalisés, j’ai pu le faire en utilisant jQuery.noConflict .

C'est un travail supplémentaire comparé au module jquery_update (qui ne semble pas déranger le PO), mais cela signifie que vous n'avez pas à vous soucier de savoir si vous allez gâcher toute votre installation Drupal.

doub1ejack
la source