Я хотел бы настроить свой веб-сайт Drupal 8 таким образом, чтобы в любое время параметр запроса «refcode» использовался для посещения моего сайта, и это значение реплицировалось во все ссылки меню на этой странице. Например, использование https://www.example.com?refcode=joe добавит «? Refcode = joe» ко всем ссылкам меню на этой странице. Когда кто-то заходит на сайт с использованием определенного кода ссылки, то использование ссылок меню для перемещения по сайту сохранит этот код возврата, а использование ссылок меню для перехода от сайта также сохранит этот код ссылки на внешние ссылки меню.
Когда кеш пуст, этот код работает:
function mymodule_link_alter( &$variables )
{
if ( $refcode = \Drupal::request( )->query->get( 'refcode' ) )
$variables['options']['query']['refcode'] = $refcode;
}
Когда страница кэшируется, это не так. Я попытался добавить это:
$variables['#cache']['contexts'][] = 'url.query_args:refcode';
, но это не работает. Я думаю, что я должен добавить эту директиву кэширования где-то еще, но я не знаю, где. Есть ли место, где я могу дать Drupal 8 указание учитывать "код перекодировки" при получении любой кэшированной страницы?