Drupal 8 - Как кэшировать версии блоков на основе определенного значения $ переменных? - PullRequest
0 голосов
/ 21 октября 2019

Я использую Drupal 8 для веб-сайта, где некоторые блоки сайта могут иметь различное содержимое в зависимости от значения пользовательской серверной переменной: $_SERVER['X_HTTP_USER_LOCATION'].

В my_theme_preprocess () я установил $variables['http_location'] = $_SERVER['X_HTTP_USER_LOCATION'], чтобы сделать его доступным везде.

Эта переменная может содержать 2 различных значения: «глобальное», если запрос поступает из любой точки мира, или «Китай ", если пользователь просматривает из Китая.

Это используется, например, чтобы скрыть некоторые ссылки на социальные сети в нижнем колонтитуле, если пользователь из Китая.

Я хотел бы использоватьКэш Drupal с сохранением двух версий блоков сохранен.

Я попытался:

  • Отключить внутренний кэш страниц, как рекомендовано в документации.
  • Отключитькеш для тех блоков, которые зависят от переменной $variables['http_location']. Это, конечно, замедляет работу веб-сайта.
  • Устанавливает настраиваемый ключ кэша в каждой функции предварительной обработки, связанной с блоком, который подвержен изменениям, на основе переменной $variables['http_location'].
  • Setнастраиваемый тег кэша в каждой функции предварительной обработки, который привязан к блоку, который может изменяться в зависимости от переменной $variables['http_location'].

Что я использовал для деактивации кэша: $variables['#cache']['max-age'] = 0; (у меня естьс тех пор как удалили эту строку кода)

Что я использовал, чтобы попытаться добавить ключ: $variables['#cache']['keys'][] = "block_name__".$variables['http_location'];

Что я использовал, чтобы попытаться добавить тег: $variables['#cache']['tags'][] = "block_name__".$variables['http_location'];

Установка ключа кеша и тега кеша не работает, как я ожидаю, так как блок визуализируется с помощью $ variable ['http_location'];сохраняя его значение в первой кешированной версии.

Я не очень разбираюсь в Drupal, поэтому вполне возможно, что я смотрю на проблему под неправильным углом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...