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

27 сентября 2023 в 15:14

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

Комментарии

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

28 сентября 2023 в 14:44

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

28 сентября 2023 в 16:06

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

27 сентября 2023 в 23:46

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

28 сентября 2023 в 13:00

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

29 сентября 2023 в 12:17

Ого, 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 Вашей темы можете показать?

29 сентября 2023 в 16:01

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

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

29 сентября 2023 в 9:48

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

29 сентября 2023 в 15:39