Рейтинг:0

Зависимости пользовательских тем

флаг my

У меня проблема с пользовательской темой, которую я создал на тестовом сайте Drupal 9.

  • Версия Друпала: 9.3.13
  • Веб-сервер Apache 2.4.41 (XAMP win64)
  • PHP версии 8.0.11
  • Версия базы данных 10.4.8-MariaDB

пользовательская тема professional.info.yml:

Название: Профессионал
тип: тема
описание: Drupal 9 версия темы Professional
core_version_requirement: ^8 || ^9
базовая тема: ложь
версия: 1.0.0
библиотеки:
  - профессиональный/глобальный стиль
  - профессиональные/глобальные скрипты
регионы:
  sidebar_first: 'Первая боковая панель'
  sidebar_second: 'Вторая боковая панель'
  заголовок: 'Заголовок'
  front_welcome: 'Добро пожаловать'
  содержание: 'Содержание'
  content_top: 'Топ контента'
  Помогите помогите'
  нижний колонтитул: 'Нижний колонтитул'
  footer_first: 'Первый низ'
  footer_second: 'Второе дно'
  footer_ Third: 'Третье основание'
Функции:
  логотип: правда
  имя_сайта: правда
  site_slogan: правда
  node_user_picture: правда
  comment_user_picture: правда
  comment_user_verification: правда
  фавикон: правда
  главное_меню: правда
  вторичное_меню: ложь

пользовательская тема professional.libraries.yml:

глобальный стиль:
  версия: ВЕРСИЯ
  CSS:
    тема:
      css/style.css: {}  
глобальные скрипты:
  версия: ВЕРСИЯ
  js:
    js/custom.js: {}
    js/jquery.flexslider-min.js: {}
    js/slide.js: {}
  зависимости:
    - ядро/jquery
    - ядро/друпал
    - настройки ядра/друпала
    - ядро/drupal.dialog.ajax

Я сохранил все файлы новой темы, соблюдая соглашение:

/ корень сайта
 - темы
   - профессиональный
     - CSS
     - js
     - шаблоны
       - система

Проблема в том, что зависимости, включая core/drupal, вообще не применяются, а три файла JavaScript в глобальные сценарии директива не включена в страницы сайта, несмотря на то, что как основные CSS-файлы Drupal, так и style.css из профессиональный: глобальный стиль были включены.

Я видел это в консоли инструментов разработки браузера Chrome, когда пытался, например, показать базовую страницу. node в модальном всплывающем окне на примере Drupal.org:

<ol>
    <li><a class="use-ajax" data-dialog-options="{&quot;width&quot;:400}" data-dialog-type="modal" href="/xampp/drupal9test/node/9">Basic page displayed in modal dialog. </a></li>
    <li><a class="use-ajax" data-dialog-options="{&quot;width&quot;:400}" data-dialog-type="dialog" href="/xampp/drupal9test/node/9">Basic page displayed in non modal dialog. </a></li>
    <li><a class="edit-button use-ajax" data-dialog-options="{&quot;width&quot;:400}" data-dialog-renderer="off_canvas" data-dialog-type="dialog" href="/xampp/drupal9test/node/9">Basic page displayed in a nice off canvas dialog. </a></li>
</ol>

Узел отображается как обычная страница, модальное всплывающее окно не открыто. Таким образом, ни основной JavaScript, ни AJAX не применяются, если я использую свою пользовательскую тему; когда переключаюсь на тему Бартика, все работает, модальные тоже. Я попытался добавить ядро ​​Drupal и библиотеки AJAX непосредственно в professional_preprocess_page(&$переменные) в файле professional.theme со строкой:

$variables['#attached']['library'][] = 'core/drupal';
$variables['#attached']['library'][] = 'professional/global-scripts';

Я даже пробовал добавлять библиотеки с Twig прямо в шаблон html.html.twig с помощью {{ attach_library('ядро/друпал') }}, но ни одно из этих изменений не имело никакого эффекта.

Конечно, каждый раз, когда я менял какие-то настройки, я также очищал кеш сайта.

Что я делаю не так? Может ли кто-нибудь дать мне решение?

Jaypan avatar
флаг de
Я не могу сказать вам, что вы делаете неправильно, но держу пари, что это проблема с шаблоном, и вы упускаете что-то необходимое. Вы внедрили `html.html.twig`? Может у вас что-то странное.
флаг ru
Ваша тема перезаписывает шаблон html.html.twig? Вы *должны* иметь все три ``и`там, см. https://github.com/drupal/drupal/blob/9.5.x/core/themes/stable9/templates/layout/html.html.twig#L31
Kevin avatar
флаг in
Да, поскольку Бартик работает, а ваш нет, вы упускаете что-то фундаментальное. У вас нет базовой темы, поэтому, как заметили другие комментаторы, чего-то не хватает.
флаг my
Спасибо за ваши ответы, мне удалось решить проблему, но мне пришлось добавить пользовательские файлы js в прямо перед тегом, но строка в разделе уже было, и это было бесполезно... Я думал, что достаточно указать пользовательские библиотеки и зависимости в файле library.yml, чтобы он заработал.
mradcliffe avatar
флаг cn
Он должен работать. Повторяю, что должно быть что-то еще не так. Следите ли вы за поведением Drupal JavaScript API и вводите зависимости с помощью немедленно вызываемого функционального выражения (IIFE)? Предоставление javascript может помочь.
флаг my
@mradcliffe: я не знаю ответа на ваш вопрос, но если хотите, я могу сделать всю пользовательскую тему доступной для всех (при условии, что вы объясните мне, где и как я могу ее загрузить), поэтому, если кому-то захочется отлаживать и улучшив его, он может стать новым выбором для всех пользователей по всему миру, в конце концов, я только что модифицировал чужую тему для Drupal 7.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.