Уважаемые коллеги, доброго времени суток
Осваиваю 9-ку, раньше сидел на 7-ке. И сразу проблема: моя пользовательская тема не подключает библиотеки. Никакие свои css и js файлы я не могу подключить. Хотя, делаю все как на drupal.org велят:
в папке themes сделал папку mukcbs_thm, в ней папки css и js. в кои положил файлы custom.css и custom.js,Ж в папке mukcbs_thm создал
создал файл mukcbs_thm.libraries.yml:
custom-styling:
version: 1.x
head: true
css:
theme:
css/custom.css: {}
custom-scripts:
version: 1.x
head: true
js:
js/custom.js: {}
# Так как наш скрипт использует jQuery, мы устанавливаем зависимость/
dependencies:
- core/drupal
- core/once
- core/jquery
и файл mukcbs_thm.info.yml
name: mukcbs_thm
type: theme
base theme: false
description: 'Main theme for Uliyanovsk Library System site.'
core_version_requirement: ^9
version: VERSION
libraries:
- mukcbs_thm/custom-scripts
- mukcbs_thm/custom-styling
regions:
header: Header
breadcrumbs: Breadcrumbs
content: Conrtent
footer: Footer
Тему Дрпуал видит, подключает, регионы нормально делает, в них все выводится. А вот js и css файлов пользовательских не видит в упор. Их нет нигде в коде страницы, ни в тегах
Подскажите, что я не так делаю? Кэши чищу - не помогает.
Заранее благодарю. файлы темы прилагаю в архиве
Вложение | Размер |
---|---|
Моя тема на Друпал 9 | 2 КБ |
Комментарии
Déjà vu?
https://drupal.ru/node/144878
Oh, oui... Mais, que c'est-que je peus fair??? Drupal ne travail pas!
Je suis désolé Monsieur, mais Вы же не читаете того, что Вам пишут
Совет от levmyshkin из конца той ветки с attach_library() в твиг-шаблоне пробовали? Хоть один из множества вариантов, описанных по ссылке OldWarrior пробовали? Так как же Друпал должен понять, что Вы хотите включить Ваши библиотеки на какие-то страницы? Пока Вы просто описали, что эти библиотеки существуют. Этого мало.
ВСе я перепробовал, благодарю, дело было в банальной опечатке.... Файл с имеем библиотеки был неверно поименован.
https://www.drupal.org/docs/theming-drupal/adding-assets-css-js-to-a-dru...
Я бы порекомендовал начать с того, чтобы переименовать библиотеки в
global-styling
иglobal-scripts
(да-да). Если не поможет - то создать PHP-файлmukcbs_thm.theme
и использовать имплементациюhook_page_attachments()
.Спасибо, уважаемый коллега, это тоже не помогает. Уточните, должен ли файл mukcbs_thm.theme иметь в конце расширение .php?
ПОка у меня получилось подключить библиотеку только модулем, но это же неправильно? Или правильно? Я с этой 9-кой совсем запутался.... Ни один из способов, приведенных здесь:
Нет. В соответствии со стандартами D8/9 расширение должно быть именно
.theme
Ещё раз пересмотрел ваш код. Объективных причин вроде не нахожу, должно работать. Возможно, как указал ниже marassa, банальная опечатка/ошибка где-то в путях или именах файлов JS/CSS. Если, конечно, сама тема работает, как вы указали выше.
Использовать хук
mukcbs_thm_page_attachments()
из вашего файлаmukcbs_thm.theme
пробовали?БОлльшое спасибо, и правда, позорная очепятка вышла...
Почему файл определения библиотек называется nukcbs_thm.libraries.yml, при том, что тема mukcbs_thm ?
БОЛьшое спасибо. уважаемый коллега, исправил, теперь скрипт custom .js подключается. А не подскажете ли, как подключить скрипт jquery.cycle2.min.js? РАньше на 7-ке это было просто,
<?php
drupal_add_library('jquery_plugin','cycle');
?>
при условии. что был включен модуль JQuery Plugns
А как на 9-ке - что-то не пойму. пробовал этот скрипт в ту жу библиотеку global-scripts добавить - не подхватывает, пробовал отдельную библиотеку для него сделать - тот же результат.
Скрипт я скачал на свой сайт, так что это - не внешняя библиотека, а обычный скрипт (если я верно понимаю). Как можно несколько скриптов в теме подключить? У меня такие вещи часто на сайтах...
Колеги, всем спасибо! ВСЕ понял, надо было без дефисов имена файлов js писать, вот так:
global-scripts:
version: VERSION
head: true
js:
js/custom.js: {}
js/jquery.cycle2.min.js: {}
dependencies:
- core/drupal
- core/once
- core/jquery
ТОгда все просто - блок с таким кодом:
<a href="https://mail.ru" target="_blank"><img src="slide1.jpg"></a>
<a href="https://yandex.ru" target="_blank"><img src="slide2.jpg"></a>
<a href="https://rambler.ru" target="_blank"><img src="slide3.jpg"></a>
<a href="https://kinopoisk.ru" target="_blank"><img src="slide4.jpg"></a>
</div>
И пашет даже без подключения, т.е. вот этого:
Drupal.behaviors.run_cycle= {
attach: function (context, settings) {
$(context).find(".cycle-slideshow").once('run_cycle').cycle({
slides:'> a'
});
//console.log('privet, azat');
}
}
в custom.js можно не писать. Молодец Мальтсап!