Рейтинг:0

Средняя часть страницы исчезает и снова появляется после сброса всех кешей

флаг cn

Иногда средняя часть некоторых страниц нашего сайта может исчезать, и по-прежнему отображаются только верхний и нижний колонтитулы.Проблема всегда решается после сброса всех кэшей.

Наш html.html.twig загружает шаблоны так, как

{% включает '@themename/header.html.twig' %}
{{ страница }}
{% включает '@themename/footer.html.twig' %}

И наш страница.html.twig загружает соответствующий шаблон в зависимости от пути к странице, например

{% установить путь = путь('<текущий>') %}
{% set pagePath = путь|рендеринг|рендеринг %}
{% if pagePath == '/node' %} {# если домашняя страница #}
{% включает '@themename/homepage.html.twig' %}
{% еще %}
{% включает '@themename/innerpage.html.twig' %}
{% конец%}

Мы плохо знакомы с кэшированием Drupal, поэтому не знаем, как именно проблема связана с кэшированием. Может быть, это как-то связано с кешем рендеринга? Как мы используем путь|рендеринг|рендеринг в нашем страница.html.twig. Или, может быть, это как-то связано с index.php который появляется иногда в адресной строке?

sonfd avatar
флаг in
Уже есть шаблон/предложение `page--front.html.twig`, который вы можете использовать для таргетинга только на главную страницу (независимо от того, что установлено на странице конфигурации основных настроек сайта). Используйте это вместо этого.
Рейтинг:1
флаг cn

В шаблоне страницы в разделе «Общие служебные переменные» перечислены is_front переменная:

{% если is_front %}
  {% включает '@themename/homepage.html.twig' %}
{% еще %}
  {% включает '@themename/innerpage.html.twig' %}        
{% конец%}

Это должно решить проблему, даже если вы посещаете страницу по разным URL-адресам. Вы также можете избежать этого, т. Модуль перенаправления перенаправляет готовые разные пути страницы на канонический. Тогда условие на основе пути будет предсказуемым, так что это будет второй способ решения проблемы.

флаг cn
Если я попробую `{% if is_front %}`, я получу ошибку `Twig\Error\SyntaxError: Неизвестный тег "is_front". в Twig\Parser->subparse()`
флаг cn
Я добавил строку `$vars['is_front'] = \Drupal::service('path.matcher')->isFrontPage();` в свою функцию `themename_preprocess_page()`, и теперь она работает
4uk4 avatar
флаг cn
Странно, эта переменная уже есть в ядре. См. [template_preprocess_page](https://api.drupal.org/api/drupal/core%21includes%21theme.inc/function/template_preprocess_page)
флаг cn
Вы имеете в виду в версии 9.x? Мы используем 8.x, я просто указал это как тег вопроса, извините
4uk4 avatar
флаг cn
То же самое для 8.х. См. https://api.drupal.org/api/drupal/core%21includes%21theme.inc/function/template_preprocess_page/8.9.x.

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

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