К теме оформления Drupal 8 прикрепляю скрипт на Jquery. Скрипт работает нормально, НО - на определенных страницах отваливается. Работает нормально на главной, страницах с путями типа node/NID и т. п. На страницах с кастомными путями - например перезаписанными модулем Pathauto, страницах Представлений и т. д. - не работает. Куда копать?
Комментарии
Как подключаете?
Подключаю таким образом:
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'
Вроде бы добавленная так библиотека должна работать на всех страницах сайта, не?
libraries:
- 'my-theme/css
- 'my-theme/js
А разве нельзя библиотеку помещать в отдельную папку? Или нужно обязательно помещать css и js файлы библиотеки в папки css и js темы оформления?
Если вам нужна директория для библиотек то её размещают в корне сайта
/libraries
и уже из скриптов в модуле или в своей теме ссылаются на библиотеки в этой директории
Если вам нужно просто свой скрипт подключить в теме, то и подключайте его в файле theme.libraries.yml как написано выше.
Странно, подключил как вы сказали - переместил файлы js и css в одноименные папки темы, подключил их в библиотеке global-styling, почистил кэш - но скрипт продолжает отваливаться на страницах с кастомными путями....
в приводимом примере я имел в виду что нужно прописать сам файл, а не библиотеку. большой разницы нет в одноименной папке лежит файл или в корне темы. это зависит от ваших предпочтений организации структуры темы.
по идее скрипт должен работать на всех страницах, так как он выводится в
<js-placeholder token="{{ placeholder_token|raw }}">
в файле html.html.twig , который и формирует html документ для всех страниц сайта<html{{ html_attributes }}>
<head>
<meta charset="utf-8">
<meta name=viewport content="width=device-width, initial-scale=1">
<head-placeholder token="{{ placeholder_token|raw }}">
<title>{{ head_title|safe_join(' | ') }}</title>
<css-placeholder token="{{ placeholder_token|raw }}">
<js-placeholder token="{{ placeholder_token|raw }}">
</head>
<body{{ attributes }}>
<a href="#main-content" class="visually-hidden focusable">
{{ 'Skip to main content'|t }}
</a>
{{ page_top }}
{{ page }}
{{ page_bottom }}
<js-bottom-placeholder token="{{ placeholder_token|raw }}">
</body>
</html>
Консолька в браузере что- нить пишет по этому поводу, когда скрипт не работает?
Можете попробовать просто для проверки в лоб подключить скрипт в этом файле как обычно подключают в html через тег
<script src="path-to-your-script"></script>
Спасибо коллега, уже решил проблему! Фишка была в том что файл из библиотеки был подключен НИЖЕ ФАЙЛА js, в котором вызывалась функция из библиотеки, соответственно выдавалась в консоли ошибка blablabla is not a function.