web-dev-qa-db-fra.com

Mettre à jour jQuery dans Drupal 7 sans casser les vues et autres modules

J'ai besoin d'utiliser jQuery 1.8.3 pour certaines fonctionnalités dont j'ai besoin, mais lorsque j'utilise le module de mise à jour jQuery pour passer à 1.8, d'autres modules cessent de fonctionner, y compris les vues. Cela ne marchera évidemment pas.

Existe-t-il un moyen sûr d'implémenter jQuery 1.8.3 sans casser aucun autre drupal noyau des fonctionnalités du module?

Merci C

4
cybercampbell

jQuery peut fonctionner côte à côte avec une autre version de jQuery. Essayez jQuery Multi module.

Besoin d'utiliser une version supérieure de jQuery pour votre module ou thème que celle fournie par Drupal/jQuery Update?

jQuery Multi vous permet de charger une version supplémentaire de la bibliothèque jQuery en parallèle à la version de Drupal, sans entrer en conflit avec la version de Drupal. Vous pouvez ensuite choisir n'importe quelle bibliothèque ou fichier JavaScript pour utiliser la nouvelle version de jQuery. Pas besoin de modifier les plugins jQuery emballés!

5
Mathew Winstone

Essayez de désinstaller jquery.js de Drupal de votre template_process_page dans votre template.php, puis remplacez-le par votre version téléchargée de jquery.

Et à partir des paramètres de vues, créez simplement des vues pour utiliser un autre thème que le vôtre. (Il utilise sept thèmes par défaut)

Une solution rapide m'est venue à l'esprit, j'espère que cela vous aidera.

1
Muhammad Reda

Vous pouvez basculer les pages nécessaires vers jQuery 1.8 avec des implémentations de hook_library_alter() et hook_module_implements_alter() et laisser jQuery Update faire le sale boulot:

/**
 * Implements hook_module_implements_alter().
 */
function MODULE_implements_alter(&$implementations, $hook) {
  if ($hook == 'library_alter') {
    // Move jquery update to the end. This will make sure our hook_library_alter
    // is always called before the jquery_update's one.
    $jquery_update = $implementations['jquery_update'];
    unset($implementations['jquery_update']);
    $implementations['jquery_update'] = $jquery_update;
  }
}

/**
 * Implements hook_library_alter().
 */
function MODULE_library_alter(&$libraries, $module) {
  if (MODULE_page_use_jquery_18()) {
    // Modifying global $conf variable, can be dangerous. Be carefull.
    global $conf;
    $conf['jquery_update_jquery_version'] = '1.8';

  }
}

/**
 * Helper function.
 */
function MODULE_page_use_jquery_18() {
  // Don't use jQuery 1.8 when using admin theme or on views pages.
  return !views_get_page_view() && !(path_is_admin(current_path()) && user_access('view the administration theme'));
}
1
Pierre Buyle

Vous pouvez également utiliser mise à jour jQuery . Il s'agit d'un module prêt à l'emploi qui met à jour jQuery 1.5.2/1.7.1/1.8.2 et jQuery UI 1.8.11

Fonctionne juste après avoir activé le module.

0
Neograph734