javascript не работает при подключении через стандартный способ, но работает при прямой вставке текста в html.tpl.php

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

Аватар пользователя Anatolii1309 Anatolii1309 19 марта 2014 в 14:38

Если подробнее.
Есть красивый слайд шоу. Где необходимо подключить 2 js скрипта , вернее библиотека jquery.
Так как я делаю slide только для главной. Планировала подключить только для главной через блок (т. к. сайт мультиязычный), но как показалось, что это не возможно даже при вставке самого текста java.
С первым js все нормально (отвечает за миниатюры под слайдами)
Я его подключил через template.php для главной, а именно

function corporateclean_preprocess_page(&$variables) {
if (drupal_is_front_page()) {
// Подключение скрипта с именем script.js, который лежит в корне темы
$variables['scripts'] = drupal_add_js(drupal_get_path('theme', 'corporateclean') . 'js/jquery.easing.1.3.js');

}
}

Со вторым данный эффект не прошел. Начал всеми способами подключать. И через .info, и page.tpl.php, и через html. Никак.
Тогда начал убирать, смотреть с чем он может конфликтовать. Ни каких вариантов не дало.
И только сейчас я добился результата. А именно просто вставил html в теги

Весь текст js. Все работает. Но раза два вылетали ошибки ...../locale.ini Так как работаю на локальной машине думаю ошибки денвера. Но все же не исключаю.
Проблема в том, что из-за этого очень огромный получается материал страницы. Из-за этого js. Страница получается огромной и мне это не нравится. Если есть варианты в чем проблема, почему не подключается напрямую даже так scripts[] = js/jquery.eislideshow.js
прошу написать. На всякий случай прикрепил данный файл

Комментарии

Аватар пользователя Anatolii1309 Anatolii1309 20 марта 2014 в 10:16

vortex wrote:
А html смотрите? строк <script type="text/javascript" новых не прибавляется?
Объединение js стоит?

Код весь чистил как говорится до нуля, ничего лишнего. Объединение js не стоит. Честно говоря боюсь, так как подключено 6 громоздких js. Но проверял между собой не конфликтуют. Общих переменных нет.

Аватар пользователя sg85 sg85 19 марта 2014 в 22:14

как варинат, причиной может быть порядок вывода подключаемых скриптов, повлиять на порядок можно через тот же drupal_add_js() через второй аргумент, см описание функции. В логах браузера что по этому поводу написано?

Аватар пользователя Anatolii1309 Anatolii1309 20 марта 2014 в 10:33

sg85 wrote:
как варинат, причиной может быть порядок вывода подключаемых скриптов, повлиять на порядок можно через тот же drupal_add_js() через второй аргумент, см описание функции. В логах браузера что по этому поводу написано?

С вариантом порядок вывода думаю без смысле но, писал, что пробовал убирать все подключенные js, без результатно.
Да про логи спасибо. Да действительно есть.
Вот все лаги:
Failed to load resource: the server responded with a status of 404 (Not Found) http://moi.ru/sites/all/themes/corporatecleanjs/jquery.eislideshow.js?n2...
Failed to load resource: the server responded with a status of 404 (Not Found) http://moi.ru/style.css
Failed to load resource: the server responded with a status of 404 (Not Found) http://moi.ru/sites/all/themes/corporatecleanjs/jquery.easing.1.3.js?n2oh0x
Uncaught TypeError: Property '$' of object [object Object] is not a function
Uncaught TypeError: Object [object Object] has no method 'eislideshow' (index):731
event.returnValue is deprecated. Please use the standard event.preventDefault() instead. jquery.js:9597

Аватар пользователя Shutnic Shutnic 20 марта 2014 в 10:44

Так попробуй:

<?php
function corporateclean_preprocess_page(&$variables) {
if (
drupal_is_front_page()) {
// Подключение скрипта с именем script.js, который лежит в корне темы
 
drupal_add_js(drupal_get_path('theme''corporateclean') . 'js/jquery.easing.1.3.js');
}
}
?>
Аватар пользователя Anatolii1309 Anatolii1309 20 марта 2014 в 10:53

Shutnic wrote:
Так попробуй:

<?php
function corporateclean_preprocess_page(&$variables) {
if (
drupal_is_front_page()) {
// Подключение скрипта с именем script.js, который лежит в корне темы
 
drupal_add_js(drupal_get_path('theme''corporateclean') . 'js/jquery.easing.1.3.js');
}
}
?>

Попробовал, не правильно
Parse error: syntax error, unexpected '<' in Z:\home\moi.ru\www\sites\all\themes\corporateclean\template.php on line 107

Аватар пользователя Anatolii1309 Anatolii1309 20 марта 2014 в 11:02

Shutnic wrote:
ну смотри, что там на 107 строчке. Синтаксическая какая-то ошибка, написано же!

Да извини, там php стоял. Вставил не смотря.

Эффект тот же jquery.easing.1.3.js (за миниатюры работает)
jquery.eislideshow.js нет. Подключен но ничего не происходит. Кэш чистил

Аватар пользователя Anatolii1309 Anatolii1309 20 марта 2014 в 10:55

После того как, пытаюсь изменить появляется эта ошибка опять.

Warning: file_get_contents(sites/all/themes/corporatecleanjs/jquery.eislideshow.js) [function.file-get-contents]: failed to open stream: No such file or directory в функции _locale_parse_js_file() (строка 1488 в файле Z:\home\moi.ru\www\includes\locale.inc).

Аватар пользователя Anatolii1309 Anatolii1309 20 марта 2014 в 11:12

Shutnic wrote:
ну, а теперь пишет, что нету файла jquery.eislideshow.js в твоей директории.

Я писал, что там он есть и никуда не девался. В этом то и прикол

Аватар пользователя Anatolii1309 Anatolii1309 21 марта 2014 в 9:55

Shutnic wrote:
как слайд-шоу называется, откуда скачивал?

http://tympanus.net/Tutorials/ElasticSlideshow/index2.html
Отсюда.
И еще делаю меню в подвале. Меню тоже с этого сайта.
ТОЧНО такая же проблема. Все аналогично тоже не подключается один js. Все абсолютно так же.

Аватар пользователя sg85 sg85 20 марта 2014 в 19:37

я про подключение плагина спросил потому, что он у Вас нигде не инициализируется, то есть не срабатывает, а просто регистрирует плагин и на этом вся его деятельность заканчивается, а вообще далее этот плагин нужно инициализировать, однако каким образом его удалось переписать так, чтобы он работал? То есть вы превратили jQuery плагин в обычный js?

Аватар пользователя Anatolii1309 Anatolii1309 21 марта 2014 в 10:00

sg85 wrote:
я про подключение плагина спросил потому, что он у Вас нигде не инициализируется, то есть не срабатывает, а просто регистрирует плагин и на этом вся его деятельность заканчивается, а вообще далее этот плагин нужно инициализировать, однако каким образом его удалось переписать так, чтобы он работал? То есть вы превратили jQuery плагин в обычный js?

Смотрите ссылку выше. Там очень хорошо описано данный слайд. И по этому мне это в голову не приходило. Там не идет и речи об этом. Стоит модуль на сайте jquery_update. Я не думаю так. Да и в директорию template.php я его описал как jquery

Аватар пользователя alextdk alextdk 21 марта 2014 в 12:21
<?php
drupal_add_js
(drupal_get_path('theme''corporateclean') . 'js/jquery.easing.1.3.js');
?>

Функция drupal_get_path возвращает путь без / в конце, соответственно код должен быть как минимум такой:

<?php
drupal_add_js
(drupal_get_path('theme''corporateclean') . '/js/jquery.easing.1.3.js');
?>

Если вы хотите нормальной помощи в решении вопроса, потрудитесь как минимум создать тестовую площадку доступную в интернете.

Аватар пользователя Anatolii1309 Anatolii1309 21 марта 2014 в 14:48

lamer wrote:

<?php
drupal_add_js
(drupal_get_path('theme''corporateclean') . 'js/jquery.easing.1.3.js');
?>

Функция drupal_get_path возвращает путь без / в конце, соответственно код должен быть как минимум такой:

<?php
drupal_add_js
(drupal_get_path('theme''corporateclean') . '/js/jquery.easing.1.3.js');
?>

Если вы хотите нормальной помощи в решении вопроса, потрудитесь как минимум создать тестовую площадку доступную в интернете.

Спасибо. Это решила проблему по ошибкам 404. Честно не знал про drupal_get_path.
Ну не как не решило по второму.
Uncaught TypeError: Object [object Object] has no method 'eislideshow'
Я думаю нашел проблему. Оказывается, нужно выстроить обращения к библиотекам в определенной последовательности и закинуть всю подгрузку в хедер.