it-swarm.com.de

Einschließen einer anderen jQuery-Version nur auf einer bestimmten Seite

das jQuery-Aktualisierungsmodul enthält dieses Skript.

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

Ich brauche dies auf jeder Seite, mit Ausnahme einer bestimmten Vorlagendatei, die ich mit Fancy Box verwende, und benötige eine spätere Version von jQuery.

Ich muss das jQuery-Update davon ausschließen, das obige Skript in das $scripts Variable NUR auf page-media-photos.tpl.php. Wie kann ich das erreichen?

16
albo

Hier sind Ihre Optionen:

  • Verwenden Sie jQuery Multi , wie in einer anderen Antwort erwähnt. Es kann so konfiguriert werden, dass die höhere Version von jQuery nur auf dieser Seite und nur für die ausgefallene Box geladen wird. Es wird weder die jQuery von Drupal noch die jQuery von jquery_update beeinträchtigen.
  • In Drupal 7) können Sie hook_js_alter () verwenden, mit dem Sie die Version von jquery_update gegen eine beliebige Version austauschen können.
  • In Drupal 6 mit jQuery Update wird ein Hook bereitgestellt, mit dem Sie das ändern können JS, nachdem es fertig ist. Sie können sich den jQuery Multi 6.x-Code ansehen, um zu sehen, wie er diesen Hook verwendet .
  • In Drupal 6 ohne jQuery Update können Sie dies mit einem preprocess_page-Hook tun. Das $scripts Variable wird dort verfügbar sein, und Sie können es ändern. Dies kann etwas schwierig werden. Sie können auch sehen wie qmulti das macht . jQuery Update macht dies auf ähnliche Weise.

Denken Sie daran, dass das Wechseln zu einer höheren jQuery-Version einige Probleme in Drupal Core und Contrib, das Problem, das jQuery Multi löst, lösen kann. Wenn Sie dies tun, stellen Sie sicher, dass Sie nichts kaputt machen Der Vorteil hierbei ist, dass Sie nur die benötigte jQuery laden, während Sie mit jQuery Multi beide laden.

10
goron

Es gibt ein Modul jQuery multi . Mit diesem Modul können Sie multiple versions of jQuery run parallel auf Ihrer drupal Instanz. Es enthält ein alias für jede Instanz, die Sie zum Aufrufen dieser Version von jquery verwenden können.

3
Gokul N K

Wenn Sie Probleme mit jqueryupdate haben und beispielsweise Administrationsseiten anzeigen, versuchen Sie, die Dev-Version von ctools zu installieren, und alles wird in Ordnung sein. Testen Sie mich einfach selbst.

3
Molfar

Bitte finden Sie diesen Code hilfreich. Platzieren Sie diesen Code in Ihrer 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 geben den Pfad von js an, zum Beispiel: sites/all/modules/og/og.js.

3
Ramesh Babu T B

Drupal 7

Sie können jquery_update_jquery_replace() auf einer bestimmten Seite aufrufen (z. B. in hook_library_alter()), wie in hier von drupalmoff gezeigt:

<?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

Meine Lösung bestand darin, die Konstante JQUERY_UPDATE_REPLACE_PATH Zu ändern, bevor jquery_update Sie lädt:

<?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');
}
?>

Es kann also entweder ganz am Anfang der .module-Datei hinzugefügt werden (die vor jquery_update Geladen wird, oder in der Einstellungsdatei versuchen.

2
kenorb