(Решено) Drupal 8 - отваливаются скрипты на определенных страницах

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

Аватар пользователя runner12 runner12 15 июня 2017 в 22:15

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

Комментарии

Аватар пользователя runner12 runner12 15 июня 2017 в 22:59

Подключаю таким образом:
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'

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

Аватар пользователя Mihail.space Mihail.space 15 июня 2017 в 23:06

runner12 wrote:

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

libraries:

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


libraries:
- 'my-theme/css
- 'my-theme/js

Аватар пользователя runner12 runner12 15 июня 2017 в 23:19

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

Аватар пользователя Mihail.space Mihail.space 15 июня 2017 в 23:24

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

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

Аватар пользователя runner12 runner12 15 июня 2017 в 23:46

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

Аватар пользователя Mihail.space Mihail.space 16 июня 2017 в 1:34

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

<!DOCTYPE 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>

Аватар пользователя runner12 runner12 16 июня 2017 в 1:56

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