Несовместимость тем Drupal 8 и Drupal 9

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

Аватар пользователя pstepanov@onpeak.ru pstepanov@onpeak.ru 27 сентября 2023 в 15:14

При обновлении Drupal 8.9 на Drupal 9.5.11 получено сообщение о несовместимости ряда модулей, а также о несовместимости установленных тем. Вместе с тем, вся визуальная часть сайта работает на этих темах. С помощью манипуляций в файлах "название_темы.info.yml", а именно добавление строки "core_version_requirement: ^9", обновление завершилось, административная панель работает, вместе с тем, при попытки перейти на индексную страницу сайта получаю 500 ошибку, видимо из-за несоответствие темы новой версии Drupal. Подскажите есть ли возможность каким-либо способом сделать тему совместимой с 9 версией Drupal.

Комментарии

Аватар пользователя marassa marassa 28 сентября 2023 в 14:44

Нет, речь не о журнале Друпала, а о журнале PHP. Это файл, который может называться error_log, а может и по-другому в зависимости от настроек Вашего окружения.

Аватар пользователя jura12 jura12 28 сентября 2023 в 16:06

посмотрите и запостите полное сообщение об ошибке.
можно посмотреть в файле ошибок php или отдать команду drush ws

Аватар пользователя VasyOK VasyOK 27 сентября 2023 в 23:46

Быдлокодерский вариант. Если чтение журнала - темный лес.
Удаляем из темы сначала файлы mytheme.theme, mytheme.libraries.yml потом папку templates.
при каждом удалении смотрим на проблемную страницу. Т.обр. можно найти проблемный файл.
Делать это надо естественно на тестовой версии сайта, т.к. блоки могут растеряться при удалении файлов типа page.html.twig. Надеюсь обновляетесь тоже не на продакшене.

Аватар пользователя VasyOK VasyOK 28 сентября 2023 в 13:00

если первый раз - конечно многое может не получаться.
А в другой теме оформления работает? В claro например?

Аватар пользователя VasyOK VasyOK 29 сентября 2023 в 12:17

Контент может быть в шаблон вшитым. Скорей всего не сам контент а его программный вывод. Может угадаю если сайт покажете.

Аватар пользователя marassa marassa 29 сентября 2023 в 16:01
1

Ого, 4 гигабайта мало!
Смотрим в файл /web/core/lib/Drupal/Core/Theme/ThemeInitialization.php . Строка 117 находится в цикле поиска родителей данной темы:

    // Find all our ancestor themes and put them in an array.
    $base_themes = [];
    $ancestor = $theme_name;
    while ($ancestor && isset($themes[$ancestor]->base_theme)) {
      $ancestor = $themes[$ancestor]->base_theme;
      if (!$this->themeHandler->themeExists($ancestor)) {
        throw new MissingThemeDependencyException(sprintf('Base theme %s has not been installed.', $ancestor), $ancestor);
      }
      $base_themes[] = $themes[$ancestor];
    }

Первое, что приходит в голову - тема объявила своим родителем самоё себя, цикл становится бесконечным и продолжается до полного истощения памяти.
Файл .info.yml Вашей темы можете показать?

Аватар пользователя marassa marassa 29 сентября 2023 в 9:48

pstepanov@onpeak.ru wrote: есть ли возможность каким-либо способом сделать тему совместимой с 9 версией Drupal.

А на странице темы на drupal.org точно нет патча, решающего эту проблему? Это и модулей касается.

Аватар пользователя marassa marassa 29 сентября 2023 в 15:39

Тогда этим должен заниматься разработчик. Общий алгоритм такой: находим в логе PHP ошибку. Сначала пробуем ее исправить по ленивому варианту: ищем эту ошибку в issues Друпала, и, если кто-то в других модулях/темах с этим уже сталкивался и починил, то копируем их решение. Если по ленивому не получается, то разбираемся самостоятельно по документации Друпала что поменялось в API и как это делается теперь. И так ошибка за ошибкой, пока не исправим все.