jQuery 1.4.2 для фронтенда сайта

Аватар пользователя Stan.Ezersky Stan.Ezersky 25 мая 2010 в 19:16

1. Ставите jQuery update

2. Качаете версии jQuery 1.4.2: jquery-1.4.2.min.js (Minified version) и jquery-1.4.2.js (Source version).

3. Копируете скачанные версии в /sites/all/modules/jquery_update/replace/

4. Открываете файл /sites/all/modules/jquery_update/jquery_update.module, находите функцию

<?php
/**
 * Return the path to the jQuery file.
 */
/*
function jquery_update_jquery_path() {
  $jquery_file = array('none' => 'jquery.js', 'min' => 'jquery.min.js');
  return JQUERY_UPDATE_REPLACE_PATH .'/'. $jquery_file[variable_get('jquery_update_compression_type', 'min')];
}
?>

и меняете всю функцию на (можно просто закомментировать старую)

<?php
/**
* Return the path to the jQuery file.
*/
function jquery_update_jquery_path() { 
  
$curr_uri request_uri();
  if (
strpos($curr_uri,'admin')>|| strpos($curr_uri,'edit')>|| strpos($curr_uri,'add')>0){
    
$jquery_file = array('none' => 'jquery.js''min' => 'jquery.min.js');
    return 
JQUERY_UPDATE_REPLACE_PATH .'/'$jquery_file[variable_get('jquery_update_compression_type''min')];
  }
  else {
    
$jquery_file = array('none' => 'jquery-1.4.2.js''min' => 'jquery-1.4.2.min.js');
    return 
JQUERY_UPDATE_REPLACE_PATH .'/'$jquery_file[variable_get('jquery_update_compression_type''min')];
  }
}
?>

Хабрапользователи могут поддержать

0 Thanks

Комментарии

Аватар пользователя adubovskoy adubovskoy 25 мая 2010 в 20:28

Охх этот хабр. Они везде где код есть минусовать начинают - "страшно".. ))

от TheShock там красивое решение, однако.

Аватар пользователя Stan.Ezersky Stan.Ezersky 25 мая 2010 в 21:53
"adubovskoy" wrote:

Охх этот хабр. Они везде где код есть минусовать начинают - "страшно".. ))

от TheShock там красивое решение, однако.

Да, решение изящное-)

Аватар пользователя Sinkora Sinkora 26 мая 2010 в 2:16

Кстати, а почему в Друпале по дефолту лежит старая версия jQuery?

Это... как-то не совсем кошерно юзать одновременно 2 версии...

jQuery update - а толку от него? Разве трудно заменить файлик вручную?

А вот если у меня, например, есть страничка с адресом /best/editors, то для нее загрузится старая библиотека, вместо новой...

Аватар пользователя Stan.Ezersky Stan.Ezersky 26 мая 2010 в 3:03
"Sinkora" wrote:

jQuery update - а толку от него? Разве трудно заменить файлик вручную?

Замените и у вас не будет работать практически всё, что связано с ajax.

А для чего нужен jQuery update советую почитать на странице модуля

"Sinkora" wrote:

Это... как-то не совсем кошерно юзать одновременно 2 версии...

Вы в код очень внимательно посмотрели?

Аватар пользователя Shift-Web Shift-Web 26 мая 2010 в 3:38
"Stan.Ezersky" wrote:

Замените и у вас не будет работать практически всё, что связано с ajax.

Работает... Правда замена была из коробки модуля

Аватар пользователя Stan.Ezersky Stan.Ezersky 26 мая 2010 в 15:18

Пожалуйста-)

А вот решение от TheShock:

<?php
    
function jquery_update_jquery_path() { 
        
$jquery_file preg_match('/(admin|edit|add)/'request_uri()) ?
            array(
'none' => 'jquery.js',       'min' => 'jquery.min.js') :
            array(
'none' => 'jquery-1.4.2.js''min' => 'jquery-1.4.2.min.js');
        return 
JQUERY_UPDATE_REPLACE_PATH '/' $jquery_file[variable_get('jquery_update_compression_type''min')];
    } 
?>

Если нужно отключить jQ 1.4.2 на определённых страницах, добавим в эту строчку путь

<?php
$jquery_file 
preg_match('/(admin|edit|add|СЮДА)/'request_uri()) ?
?>
Аватар пользователя Sinkora Sinkora 26 мая 2010 в 16:35
"Stan.Ezersky" wrote:

Вы в код очень внимательно посмотрели?

Естественно смотрел, используются 2 версии библиотеки.

"Stan.Ezersky" wrote:

Замените и у вас не будет работать практически всё, что связано с ajax.

Например?

Аватар пользователя Stan.Ezersky Stan.Ezersky 26 мая 2010 в 16:54
"Sinkora" wrote:

Естественно смотрел, используются 2 версии библиотеки.

Используется или 1.3.2, или 1.4.2

"Sinkora" wrote:

Например?

Формы

Аватар пользователя Sinkora Sinkora 26 мая 2010 в 17:01
"Stan.Ezersky" wrote:

Используется или 1.3.2, или 1.4.2

Так я и говорю, что на сайте приходится использовать две библиотеки.

"Stan.Ezersky" wrote:

Формы

Представьте ситуацию, что на странице форм нужно одновременно поддерживать старый функционал для 1.3.2 версии и новый для 1.4.2 версии (нужен ui 1.8.1 версии), то что тогда делать?

Аватар пользователя Shift-Web Shift-Web 26 мая 2010 в 17:52
"Sinkora" wrote:

Представьте ситуацию, что на странице форм нужно одновременно поддерживать старый функционал для 1.3.2 версии и новый для 1.4.2 версии (нужен ui 1.8.1 версии), то что тогда делать?

Да потому модуль не особо и решал задачу. Отстёгивались опции то в одном, то в другом месте. Думаю, адекватно просто дождаться обновы друпаловского jQuery. Костыли как-то напрягают

Аватар пользователя vgoodvin vgoodvin 26 мая 2010 в 17:53
"Sinkora" wrote:

Представьте ситуацию, что на странице форм нужно одновременно поддерживать старый функционал для 1.3.2 версии и новый для 1.4.2 версии (нужен ui 1.8.1 версии), то что тогда делать?

Вопрос следует задать разработчикам Jquery.

Аватар пользователя vgoodvin vgoodvin 26 мая 2010 в 17:55
"Shift-Web" wrote:

Думаю, адекватно просто дождаться обновы друпаловского jQuery. Костыли как-то напрягают

Обновы судя по всему не будет, давно бы вышла. JQuery 1.4 будет в семерке.

Аватар пользователя Stan.Ezersky Stan.Ezersky 26 мая 2010 в 17:58
"vgoodvin" wrote:

Обновы судя по всему не будет

К сожалению, не будет. Drupal вообще как-то непонятно использует версии jQuery: устарелые. Хотя новая версия друпала выходит после релиза новой версии jQuery. Совпадение конечно

Аватар пользователя vgoodvin vgoodvin 26 мая 2010 в 18:11

Andypost как-то говорил что друпал использует последние сторонние библиотеки на момент выхода мажорного релиза, а потом уже костыли. Drupal 7 готовится вроде как работать на JQuery 1.4, по крайней мере видел issue.

Аватар пользователя Sinkora Sinkora 26 мая 2010 в 18:43

А с какой версией jQuery шестой Друпал работает нормально сейчас: с 1.2.6 и 1.3.2, или только с 1.2.6? Просто по дефолту в папке /misc всегда лежит старая версия 1.2.6 (Date: 2008-05-24)...

Аватар пользователя vgoodvin vgoodvin 26 мая 2010 в 18:41
"Sinkora" wrote:

А с какой версией jQuery шестой Друпал работает нормально сейчас: с 1.2.6 или 1.3.2? Просто по дефолту в папке /misc всегда лежит старая версия 1.2.6 (Date: 2008-05-24)...

Частенько обновлялся до 1.3.2. Были вначале проблемы с админкой вьюсов и не работал hierarchical select, сейчас вроде все нормально. А так проблемы бывают что один модуль конфликтует с JQuery 1.3.2, а другой модуль её требует. Напрмер проблемы с lightbox2.

Аватар пользователя Sinkora Sinkora 26 мая 2010 в 18:47

Просто мне нужен ui, а их сейчас двух версий, которые требуют или jQuery 1.3.2, или 1.4+...
Так вот думаю, что буду пока пользоваться версией 1.3.2...

Аватар пользователя Shift-Web Shift-Web 26 мая 2010 в 19:18
"Stan.Ezersky" wrote:

К сожалению, не будет. Drupal вообще как-то непонятно использует версии jQuery: устарелые. Хотя новая версия друпала выходит после релиза новой версии jQuery. Совпадение конечно

Трындец, что ещё тут можно добавить... тогда думаю будет разумно попытать проанализировать разницу и как-то выпилить рабочую библиотеку....

Аватар пользователя Sinkora Sinkora 26 мая 2010 в 19:39
"Shift-Web" wrote:

Трындец, что ещё тут можно добавить... тогда думаю будет разумно попытать проанализировать разницу и как-то выпилить рабочую библиотеку....

Вперед и с песней:)

Аватар пользователя 2FasT4YoU 2FasT4YoU 30 июня 2010 в 3:13

Господа, после того как подключил новый жквери, модуль лайтбокс2 начал хендлить все ссылки на сайте , хддд, это было печальное зрелище, в общем кому нужно может будет, как фиксонул
файлик
lightbox.js в папке одноименного модуля
находим там initList : function() - вот такую штуку

ниже

  $("a[rel^='lightbox']:not(.lightbox-processed)").addClass('lightbox-processed').click(function(e) {
      if (Lightbox.disableCloseClick) {
        $('#lightbox').unbind('click');
        $('#lightbox').click(function() { Lightbox.end('forceClose'); } );
      }
      Lightbox.start(this, false, false, false, false);
      if (e.preventDefault) { e.preventDefault(); }
      return false;
    });

и т.д.

убираем @ с $("a[rel^='lightbox'] и всё становится на свои места...
Я привел кусок кода ,вообще там больше Этих автохендлов, менять нужно везде!

Вперед и с песней:)хд

Аватар пользователя vgoodvin vgoodvin 30 июня 2010 в 11:42

А я когда устанавливал недавно на шестерку lightbox2 он у меня на JQuery 3.2 страдал тем же. Решилось установкой DEV-версии лайтбокса. Может и у вас также решить можно.

Аватар пользователя Stein Stein 25 января 2011 в 21:45

спасибо за решение, поначалу работает, проверял на двух проектах, через некоторое время начинает снова подставляться старый jquery.js, никакие обновления не ставил. Кто нибудь с таким сталкивался?

Аватар пользователя natbampo natbampo 14 апреля 2011 в 11:41

Мне кажется все таки надо вместо request_uri() использовать $_GET['q'], т.к. первая вернет синоним пути(если есть) и в нем может быть совпадение с вариантами проверки. К $_GET['q'] нужен вариант от TheShock, из-за слеша в начале.
В общем вот:

<?php
function jquery_update_jquery_path() { 
  
$curr_uri $_GET['q']; 
  if (
preg_match('/(admin|edit|add)/'$curr_uri)) {
    
$jquery_file = array('none' => 'jquery.js''min' => 'jquery.min.js');
    return 
JQUERY_UPDATE_REPLACE_PATH .'/'$jquery_file[variable_get('jquery_update_compression_type''min')];
  }
  else {
    
$jquery_file = array('none' => 'jquery-1.4.2.js''min' => 'jquery-1.4.2.min.js');
    return 
JQUERY_UPDATE_REPLACE_PATH .'/'$jquery_file[variable_get('jquery_update_compression_type''min')];
  }
}
?>
Аватар пользователя juliv juliv 12 июня 2011 в 1:10

http://drupal.org/node/775924
А также все забыли про batch (у меня не работало с 1.4)

<?php
function jquery_update_jquery_path() {
  $curr_uri = $_GET['q'];
  if (preg_match('/(admin|edit|add|batch)/', $curr_uri)) {
    $jquery_file = array('none' => 'jquery.js', 'min' => 'jquery.min.js');
    return JQUERY_UPDATE_REPLACE_PATH .'/'. $jquery_file[variable_get('jquery_update_compression_type', 'min')];
  }
  else {
    $jquery_file = array('none' => 'jquery-1.4.2.js', 'min' => 'jquery-1.4.2.min.js');
    return JQUERY_UPDATE_REPLACE_PATH .'/'. $jquery_file[variable_get('jquery_update_compression_type', 'min')];
  }
}
?>

И мой метод:

function jquery_update_jquery_path() {
  $curr_uri = request_uri();
  $uri = array('admin', 'edit', 'add', 'batch');
  $is_admin = FALSE;
  foreach ($uri as $u) {
        if (strpos($curr_uri, $u)) {
                $is_admin = TRUE;
                break;
        }
  }
 
  $jquery_file = $is_admin ? array('none' => 'jquery.js', 'min' => 'jquery.min.js') : array('none' => 'jquery-1.4.4.js', 'min' => 'jquery-1.4.4.min.js');
  return JQUERY_UPDATE_REPLACE_PATH .'/'. $jquery_file[variable_get('jquery_update_compression_type', 'min')];
}