Главная Новости

Использование новых версий jQuery в старых версиях Drupal

Опубликовано: 01.11.2017

При поддержке старых версий Drupal (в данной статье речь идёт о Drupal 6 и Drupal 7) часто возникает необходимость использования актуальной (современной) версии jQuery. И если в случае с самописными скриптами можно обойтись версией из ядра, то в случае использования готового jQuery плагина этот вариант может не подойти. К примеру, в Drupal 6 вы не сможете использовать такой популярный плагин, как Chosen , поскольку он просто не заработает на том jQuery, что есть в ядре. К слову о версиях: из "коробки" Drupal 7 предоставляет jQuery версии 1.4.4, а Drupal 6 - версии 1.2.6. Просто взять и обновить jQuery в ядре Drupal нельзя по двум причинам. Во-первых, это вездесущие проблемы с дальнейшим обновлением ядра. Во-вторых, скрипты Drupal и контрибных модулей не будут работать с новой версией. Безусловно можно использовать модуль jQuery Update . Он решает большинство проблем с jQuery в Drupal 7, но для Drupal 6 в настоящее время практически бесполезен -  Chosen не заработает даже с этим модулем. Можно, конечно, использовать старые (совсем старые) версии нужных плагинов или самому реализовать их функционал, но это никому не нужный труд. К счастью, есть и другие варианты решения вышеописанной проблемы. Об одном из таких решений далее и пойдёт речь.

Первым делом стоит отметить, что jQuery позволяет запускать на странице другие версии jQuery. Достигается это засчёт использования функции noConflict() . На её основе построена логика работы модуля jQuery Multi . Код "обработки" новой версии jQuery находится в файле js/switch.js относительно директории модуля.

( function ( $) { // Put together the name of the new jQuery variable. var version = $ ( ). jquery ; var versionName = version. replace ( /\./g , '' ) ; // Save the new version of jQuery globally and restore Drupal version. window [ 'jq' + versionName ] = jQuery. noConflict ( true ) ; } ) ( jQuery ) ;

Как видно из кода - новая версия jQuery будет доступна в переменной jq{%version}, старая версия будет по-прежнему доступна в переменной jQuery или её синониме $. Например, при использовании версии 3.1.1, переменная будет jq311. С этого момента уже можно работать с новой версией (скрипты, использующие старую версию не сломаются), однако, это не совсем удобно, так как по общеиспользуемому синониму $ будет доступна старая версия, что не подходит для использования сторонних плагинов. Также подобный подход отразится на поддержке и переносимости кода.

3D стерео фильмы для 5D
rss