Вкладки (табы) в теле ноды на друпал 9

Аватар пользователя protoftor protoftor 4 июля в 12:25

Уважаемые коллеги, если позволите, такой вопрос:
ПЕревожу сайты с 7-ки на 9-ку. Есть там такая нода с вкладками, а в этих вкладках еще вкладки, на 7-ке было просто:
<?php
drupal_add_library ('system' , 'ui.tabs');
drupal_add_js ('jQuery(document).ready(function(){jQuery(".tabs").tabs();});' , 'inline');
?>

Content on tab 1
Content on tab 1
Content on tab 2

А на 9-ке как вызвать UI.tabs для ноды? Ну, и торт вопрос по аккордеону, если можно.
Всем ответившим - заранее спасио!

Комментарии

Аватар пользователя VasyOK VasyOK 4 июля в 12:50

Библиотеки подключаются через модули:
https://www.drupal.org/project/jquery_ui_accordion
https://www.drupal.org/project/jquery_ui_tabs

mytheme.libraries.yml:
themescripts:
version: 1.x
js:
js/myscript_accordion.js: {}
js/myscript_tabs.js: {}
dependencies:
- jquery_ui/core
- jquery_ui_accordion/accordion
- jquery_ui_tabs/tabs

Аватар пользователя protoftor protoftor 4 июля в 19:31

СПАсибо, Все сделал, но не получилось. Модули скачались, поставились, включились.
сделал приписку в bartik.libraries.yml:
themescripts:
version: 1.x
js:
js/tabs.js:{}
depedencies:
- jquery_ui/core
- jquery_ui_tabs/tabs
в файле bartik.info.yml библиотеку подключил в секции libraries:
- bartik/themescripts
в папке bartik/js сделал файлик tabs.js:
(function ($) {
Drupal.behaviors.tabs-including= {
attach: function (context, settings) {
console.log("Privert, Azat");
$(".yakovlev-tabs").tabs();
}
};
})(jQuery)
В ноде такой html:

<div class="yakovlev-tabs">
<ul>
    <li><a href="#tab1">tab1</a></li>
    <li><a href="#tab2">tab2</a></li>
    <li><a href="#tab3">tab3</a></li>
</ul>
<div id="tab1">Content on tab 1</div>
<div id="tab2">Content on tab 2</div><div id="tab3">Content on tab 3</div>
</div>

Удивляет то, что после включения модуля jquery_ui в коде страницы не появилось чего-то похожего на это:

Похоже, jquery-ui не подключается .
Что я делаю не так?
Заранее благодарю.

Аватар пользователя protoftor protoftor 4 июля в 20:06

БОЛьшое спасибо, уважаемый Коллега, до завтра. С утра я на выезде работаю, а к вечеру - обязательно внимательно изучу Ваш ответ.

Аватар пользователя VasyOK VasyOK 4 июля в 22:48

Вот в libraies вы подключили библиотеку с названием themescripts.

mytheme.info.yml:
libraries:
- mytheme/themescripts

Аватар пользователя protoftor protoftor 5 июля в 13:26

Да, я так и сделал, только я пока тему новую не делал, все на бартик пробую. А что не так? Как надо было? Я не вижду в скриптах jquery-ui.min.js, вот в чесм загвоздка. Ну, и свой tabs.js - тоже. Что-т 9-ка с библиотеками странно работает... Или ВЫ считаете, что надо свою тему сделать, тогда будет пахать?

Аватар пользователя protoftor protoftor 6 июля в 16:35

Все сделал, как здесь https://www.drupal.org/forum/support/theme-development/2016-05-06/using-... пишут, но у меня вообще не подключаются ни jquery-ui.min.js, ни мой скрипт, где я вешаю tabs() на селектор!!! В чем дело, подскажите6, я уже с ума схожу.... (((

Аватар пользователя protoftor protoftor 6 июля в 16:37

Это значит, вообще никакие свои скрипты я не смогу подключить, пока не разберусь с этой засадой.

Аватар пользователя VasyOK VasyOK 6 июля в 18:49

Пооскачивайте темы с орга. Посмотрите, как в них скрипты подключены. Попробуйте также подключить свои.

Аватар пользователя protoftor protoftor 12 июля в 13:07

Уважаемые коллеги, искренне благодарю всех ответивших. Сколь я смог понять, объявление библиотек в Друпал 8 и выше в файлах themename.info.yml и themename.libraries.yml в отличие от 7-ки, не означает их подключения к генерируемым страницам. ТАкая вот засада, выходит? Т.е. пока эту библиотеку не подключишь в модуле, ни css ни js файлы не заработают. Во всяком случае, такое мнение у мня сложилось, увы. Подключать кастомную библиотеку надо либо на всех страницах, в файле modulename.module, либо в контроллере, отвечающем за создание определенных страниц, с помощью hook_page_attachment().
ЭТо не облегчает работу. НЕ знаю, может быть, это я что-то не так делаю?

Аватар пользователя ivnish ivnish 12 июля в 14:05

protoftor wrote: объявление библиотек в Друпал 8 и выше в файлах themename.info.yml и themename.libraries.yml в отличие от 7-ки, не означает их подключения к генерируемым страницам

Да, там мы только объявляем библиотеки, а подключаем уже там где надо

protoftor wrote: ЭТо не облегчает работу

А что облегчает работу?

Аватар пользователя protoftor protoftor 15 июля в 10:01

ВОТ как на 7-ке было - гораздо проще. ИЛи надо нормальными словами писать - ни хрена так,как раньше, не работает, теперь делайте все через ж..,.

Аватар пользователя levmyshkin levmyshkin 12 июля в 16:35
1

Можно подключить библиотеку в шаблоне вашей ноды или блока который вы выводите.
{{ attach_library('ebt_tabs/jquery_ui_tabs') }}