Рейтинг:-1

Как обрабатывать разные выходные данные для одного и того же блока (проблема кэширования)?

флаг cn

У меня есть тема, которая имеет два разных вида для блока главного меню, поэтому я написал предложение темы следующим образом:

function MYTHEME_theme_suggestions_menu_alter (массив &$предложений, массив $переменных) {
  if ($variables['menu_name'] == 'main' и Drupal::service('path.matcher')
  ->isFrontPage()) {
    array_splice($suggestions, 1, 0, 'menu__main__front');
  }
}

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

Любое предложение для случая, когда мы хотим, чтобы блок выводился по-разному в зависимости от некоторого условия?

флаг ru
Вам нужно добавить этот `контекст`, который изменяет внешний вид, в массив `#cache`, в вашем случае `url.path`. См. [Как правильно установить контексты кеша в пользовательских блоках?](https://drupal.stackexchange.com/questions/223376/what-is-the-correct-way-to-set-cache-contexts-on -пользовательские блоки)
4uk4 avatar
флаг cn
См. https://drupal.stackexchange.com/questions/182005/is-front-is-not-available-in-all-templates.
Рейтинг:0
флаг de

Любое предложение для случая, когда мы хотим, чтобы блок выводился по-разному в зависимости от некоторого условия?

Вам нужны контексты кеша: https://www.drupal.org/docs/drupal-apis/cache-api/cache-contexts

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

Как заявил hudri, вам нужен контекст кеша на url.путь.

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

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