Drupal 8 не работает jquery

Drupal Русскоязычное сообщество

На страницах с результатами поиска и добавления материала не работают мои jQuery функции.

URL страниц следующие:
mysite/search/node/ — результаты поиска
mysite/node/add — добавления материала

Похоже на то, что когда запускаются некоторые модули, они отключают кастомные jQuery функции. Материалы на сайт добавляю только я, потому с этим легко смириться, но на результаты поиска сможет посмотреть любой посетитель сайта.

Думал, может на этих страницах путь к файлу со скриптами изменился. Но нет, простые JS функции работают, я проверял с помощью alert().

Как исправить этот досадный баг? Заранее спасибо.

P.S. На моем сайте работают 2 версии jquery. Возможно, это важно. На обычных контентных страницах всё отлично работает. Подключаю их следующим образом:

  • Drupal6
  • Есть вопрос
  • Блог
  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии

Комментарии

1. Что именно такого вы используете, чего нет в старом jQuery?
2. Функции, которые не работают в студию.

alert работает, потому что это не jQuery, а чисто JavaScript-метод.

чтоб тестировать jQuery с помощью alert — вызывайте alert(‘jQuery-метод’), вместо alert(‘йа работаю’)

1. На данный момент, абсолютно ничего. Сейчас я делаю простой блог, но на более сложных проектах, возможно, потребуются более сложные функции. Да и просто хотелось бы использовать последнюю версию jQuery — ведь это главная рекомендация даже на их официальном сайте!

2. Нет смысла выкладывать неработающие функции, потому что они все не работают.

3. Я знаю. Таким образом я проверял, работает ли вообще JS из моего внешнего файла.

Установите модуль jQuery Update, он обновит jQuery до 1.3.2. В новой версии нет ничего такого, чего нельзя было сделать в старой. Только кое-что стало удобней (по большей части касаемо AJAX и еще несколько моментов, которые вряд ли вам пригодятся, если вы не очень опытный в jQuery-framework), для AJAX в друпал встроен AHAH-фреймворк, который отлично работает.

Если у вас найдется какое-нибудь место, которое будет работать в 1.6.1, но не будет работать в 1.3.2 — пишите, я расскажу что да как изменить, там ничего сложного нет.

Ок Спасибо за советы!

Источник

Drupal Русскоязычное сообщество

Всем првиет! Подскажите мне пожалуйста как подключить js в тему друпала 8-го мой либрарис.ямл выглядит так

ксс работает, js не работает. Чо я не так делаю?

  • Drupal8
  • Тему верстали
  • Есть вопрос
  • Решение проблем
  • Блог
  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии

Лучший ответ

Напишу для таких же как я
Я элементарно не мог понять, что за объявление вначале global-styling:
Это название библиотеки которую в свою очередь мы подключаем в моятема.info.yml
у меня было несколько js-ок и я их просто разделил по разным библиотекам в моятема.libraries.yml
Вот так:

Читайте также:  Edifice eqb 900 не работает кнопка connect

js-navtop:
header : true
js:
js / navbar-ontop.js: < minified: true >
dependencies:
— core / jquery

js-animate:
header : true
js:
js / animate-in.js: < minified: true >
dependencies:
— core / jquery

js-footer:
js:
js / smooth-scroll.js: < >
dependencies:
— core / jquery
— core / jquery.once

которые затем подключил в моятема.info.yml, так:

Так, заработало.

Источник

Drupal Русскоязычное сообщество

Вот код js для адаптивного меню.
($(function() <
var pull = $(‘#pull’);
menu = $(‘navigaton ul’);
menuHeight = menu.height();

$(pull).on(‘click’, function(e) <
e.preventDefault();
menu.slideToggle();
>);

$(window).resize(function() <
var w = $(window).width();
if(w > 320 && menu.is(‘:hidden’)) <
menu.removeAttr(‘style’);
>
>);
>))(jQuery);
Возможно как то не так подключаю его. Подскажите пожалуйса где не правильно делаю. В libraries.yml добавил файлик js.

  • Drupal8
  • Есть вопрос
  • Блог
  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии

Комментарии

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии

так надо подключать надо в theme.libraries.yml?

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии
  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии

вот в файле theme.libraries.yml

global:
version: VERSION
css:
base:
css/base/base.css: <>
layout:
css/layout/layout.css: <>
component:
css/components/components.css: <>
theme:
css/theme/theme.css: <>
css/theme/media.css: <>
css/theme/print.css: < media: print >
js:
js/modernizr.js: <>
js/build/scripts.js: <>
js/menu.js: <>
dependencies:
— core/jquery
— core/drupal.ajax
— core/drupal
— core/drupalSettings
— core/jquery.once

Консоль смотрели? Ваш код очевидно должен сработать на jQuery(document).ready() Добавляли эту обертку?

jQuery(document).ready($(function() <
var pull = $(‘#pull’);
menu = $(‘navigaton ul’);
menuHeight = menu.height();

$(pull).on(‘click’, function(e) <
e.preventDefault();
menu.slideToggle();
>);

$(window).resize(function() <
var w = $(window).width();
if(w > 320 && menu.is(‘:hidden’)) <
menu.removeAttr(‘style’);
>
>);
>));
Добавил сейчас так, не работает.
А где смотреть консоль и что там смотрится?

Ссылку дайте на страницу

$(‘navigaton ul’); — тут явно ошибка, скорее всего $(‘#navigaton ul’) или $(‘.navigaton ul’);

http://sitesun.ru/
меню должно при мальеньком экране при клике раскрываться, а этого не происходит.
$(‘#navigaton ul’) не помогло

Как я и предполагал, квери нет (см. скриншот).
Что-то вы намудрили с подключением, посмотрите примеры в доках.

хм. это получается я не правильно его подключил в файлике библиотек? или его еще где то подключать надо?

хорошо, посмотрю) спасибо за помощь, теперь хоть буду знать куда копать))

Не за что, скачайте любую тему под восьмерку и посмотрите как в ней реализовано подключение.

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии

Действительно, не правильно подключал. Я все в одну библиотеку засовывал. Сейчас сделал в разных и все заработало! Спасибо)

Источник

Drupal Русскоязычное сообщество

К теме оформления Drupal 8 прикрепляю скрипт на Jquery. Скрипт работает нормально, НО — на определенных страницах отваливается. Работает нормально на главной, страницах с путями типа node/NID и т. п. На страницах с кастомными путями — например перезаписанными модулем Pathauto, страницах Представлений и т. д. — не работает. Куда копать?

Читайте также:  Citroen ксара 98 года почему не работает левый водительский стеклоподъемник

Комментарии

Подключаю таким образом:
1. Помещаю библиотеку в корень папки темы — папка my-library.
2. Добавляю библиотеку в файле MYTHEME.libraries.yml —
my-library:
css:
theme:
my-library/css/my-library-style.css: <>
js:
my-library/js/my-library.js: <>
3. Подключаю библиотеку в файле MYTHEME.info.yml:
libraries:
— ‘my-theme/my-library’

Вроде бы добавленная так библиотека должна работать на всех страницах сайта, не?

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии

3. Подключаю библиотеку в файле MYTHEME.info.yml:

— ‘my-theme/my-library’
Вроде бы добавленная так библиотека должна работать на всех страницах сайта, не?

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии

А разве нельзя библиотеку помещать в отдельную папку? Или нужно обязательно помещать css и js файлы библиотеки в папки css и js темы оформления?

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии

Если вам нужна директория для библиотек то её размещают в корне сайта
/libraries
и уже из скриптов в модуле или в своей теме ссылаются на библиотеки в этой директории

Если вам нужно просто свой скрипт подключить в теме, то и подключайте его в файле theme.libraries.yml как написано выше.

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии

Странно, подключил как вы сказали — переместил файлы js и css в одноименные папки темы, подключил их в библиотеке global-styling, почистил кэш — но скрипт продолжает отваливаться на страницах с кастомными путями.

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии

в приводимом примере я имел в виду что нужно прописать сам файл, а не библиотеку. большой разницы нет в одноименной папке лежит файл или в корне темы. это зависит от ваших предпочтений организации структуры темы.
по идее скрипт должен работать на всех страницах, так как он выводится в js-placeholder token= «<< placeholder_token|raw >>» > в файле html.html.twig , который и формирует html документ для всех страниц сайта

Консолька в браузере что- нить пишет по этому поводу, когда скрипт не работает?

Можете попробовать просто для проверки в лоб подключить скрипт в этом файле как обычно подключают в html через тег script src= «path-to-your-script» >

  • Войдите или зарегистрируйтесь, чтобы отправлять комментарии

Спасибо коллега, уже решил проблему! Фишка была в том что файл из библиотеки был подключен НИЖЕ ФАЙЛА js, в котором вызывалась функция из библиотеки, соответственно выдавалась в консоли ошибка blablabla is not a function.

Источник

Почему не срабатывают скрипты Jquery в Drupal 7?

Собственно говоря, чем мы сегодня займёмся понятно из названия этой статьи. Раньше в Drupal 6, я писал свои скрипты и подгружал их к страницам сайта без особых проблем – правильно написанный скрипт всегда работал без сбоев. Но при переходя на Drupal 7, столкнулся с такой проблемой, что мои, замечу синтаксически правильно написанные скрипты отказывались работать под семёркой. Пришлось лесть опять в Api Drupal и более внимательно перечитывать, что они там понаделали.

Читайте также:  Как настроить сканирование по сети hp laserjet

Распишу всё на конкретном примере: Допустим мы хотим свернуть «стандартное меню навигации» по клику по какому то элементу на странице. С первого взгляда очень даже простая задача.

Приступим. В примере я использую стандартный шаблон «Bartik». Для начала нам необходимо определиться кликая по какому элементу на странице у нас будет происходить сворачивание меню навигации, я предлагаю создать свой элемент, в качестве которого у нас будет выступать просто текст. Для этого открываем файл нашей темы page.tpl.php и перед выводом левого сайдбара впишем свой элемент и присвоим ему id под названием « clickFirst».

Теперь приступим к написанию самого скрипта. Создадим текстовый файл с название « myscript.js», его содержание вот такое:

Естественно для его выполнения нужна ещё и библиотека Jquery, я использовал 1.8, скачать можно с официального ресурса. И как бы на этом наша работа должна была бы и закончиться, остаётся только подключить нашу новую библиотеку Jquery и скрипт myscript.js к сайту. Как правильно подключать скрипты можно почитать вот здесь, я на этом останавливаться не буду.

Итак скрипты закинули на сервер, подключили через info файл и смотрим, что у нас получилось на сайте. Видим, что новый элемент появился, но он не на что не реагирует, а Firebug выдал ошибку скрипта, хотя скрипт совершенно правильный:

Так в чём же проблема? А проблема в том, что разработчики теперь требуют производить вызов функции через так называемый « noconflict», нужен он для того, что бы скрипты написанные под старые версии Jquery не конфликтовали с новыми, которые допустим как я написал из под Jquery 1.8. Т.е. теперь для вызова какой то функции в Jquery необходимо применять конструкцию вместо:

Теперь всё становится более ясно, давайте так и сделаем как говорит нам API. Новая конструкция очень длинная и при написании длинного скрипта будет очень не удобной, поэтому я предлагаю запихнуть её в переменную, допустим dr. Для этого создадим ещё один файл с название « noconflict.js» где его содержимое будет таким:

И так же подключим его через « info» файл к нашим страницам на сайте. И теперь нам осталось лишь переписать вызов функции исходя из нашей переменной, которая лежит в файле « noconflict.js». Открываем файл « myscript.js» и пишем следующее:

И теперь смотрим, что у нас на сайте получилось

Источник

Оцените статью