Подключение нового jQuery в Drupal

Главные вкладки

Аватар пользователя edhel edhel 30 апреля 2012 в 7:39

В Drupal используется далеко не свежий jQuery. Если просто заменить misc/jquery.js новой версией, но могут вылезти баги в разных местах. Есть модуль jquery_update, с помощью которого можно немного обновить jQuery, но для подключения некоторых JS-библиотек этого всё равно недостаточно.

Недавно понадобился новый jQuery для highcharts. В итоге сделал финт ушами с подключением нового jQuery только на избранных страницах с диаграммами. Модуль выглядит так (существенные месте прокомментированы):


<?php

function highcharts_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
	static $included = FALSE;
	if ($op == 'alter' && !$included && strstr($node->body, "chart")) { // условие зависит от модуля
		$dir = drupal_get_path('module', 'highcharts');
		drupal_add_css("$dir/highcharts.css");
		drupal_add_js("$dir/switch_jquery.js"); // отключаем стандартный jQuery
		drupal_add_js("$dir/lib/jquery-1.3.2.min.js"); // подключаем новый
		drupal_add_js("$dir/highcharts.js?v5");
		drupal_add_js("$dir/lib/highcharts/highcharts.js"); // подключаем JS-библиотеку
	}
}

Файл switch_jquery.js содержит одну строчку: jQuery.noConflict(true).

Идею подглядел в модуле jQuery Multi.

Результат: http://www.sfu-kras.ru/accreditation, http://research.sfu-kras.ru/nir/2011. Работает почти везде, не работает на 1,5 из 3 браузеров андроида.

Комментарии