Рейтинг:0

Лак и нестандартные блоки

флаг eg

Я хочу настроить лак на своем многоязычном веб-сайте drupal 8, и у меня есть блок, который появляется на странице с путем /my-test. Таким образом, на французском языке URL будет выглядеть так: /fr/my-test, тогда как на английском /my-test. В этом блоке я просто использую:

$lang = \Drupal::languageManager()->getCurrentLanguage()->getId(); чтобы определить язык, а затем отображать новости в зависимости от этого языка. поэтому, когда URL-адрес /my-test> язык английский (по умолчанию)> блок отображает новости, связанные с миром. когда URL-адрес /fr/my-test > язык французский > блок отображает новости, связанные с Францией.

Мой вопрос в том, используется ли лак и кешируются ли такие страницы, как /my-test. Если сначала пользователь вводит /my-test и в блоке отображаются новости мира, то после этого другой пользователь посещает /my-test/fr . Будет ли в блоке отображаться мировые новости (поскольку страница кешируется), несмотря на наличие /fr в URL? или он будет отображать правильный контент (новости, связанные с Францией)? Я полагаю, что $ланг определяет язык по префиксу URL, а не по браузеру пользователя.

флаг cn
Varnish обычно настроен на кэширование по URL-адресу. Другой URL, другая запись в кеше.
Jaypan avatar
флаг de
Вы хотите посмотреть контексты кэша (https://www.drupal.org/docs/drupal-apis/cache-api/cache-contexts). Я считаю, что Drupal отправляет их в Varnish в заголовках страниц, так что Varnish соответствующим образом изменит кеш.
Mira chalak avatar
флаг eg
@Jaypan Итак, я предполагаю, что блок будет отображать правильное событие содержимого, хотя в отправленной вами ссылке вместо languageManager упоминается LanguageInterface ..
Mira chalak avatar
флаг eg
@Clive Я также использую `$active_id = \Drupal::service('domain.negotiator')->getActiveId();` в том же блочном коде, и у меня были те же сомнения относительно этого выражения, поэтому благодаря вашему ответу я знайте, что $active_id не будет одинаковым для обоих пользователей, поскольку URL-адрес отличается :)
4uk4 avatar
флаг cn
Комментарий @Clive правильный. Varnish не может кэшировать `/my-test`, если у вас включено определение браузера.Поэтому вам также нужно добавить префикс пути для языка по умолчанию, а затем перенаправить на него. На перенаправленной странице можно использовать лак.
4uk4 avatar
флаг cn
Я предполагаю, что вы разместили этот вопрос без регистрации https://drupal.stackexchange.com/questions/307459/varnish-in-multilingual-site.
Mira chalak avatar
флаг eg
Большое спасибо @4k4. что вы подразумеваете под «если у вас включено обнаружение браузера»? Как я могу это включить? Я до сих пор не могу понять, что такое метод определения языка. Я не думаю, что у меня включено обнаружение браузера. потому что, когда вы заходите на мой сайт, вас просят выбрать язык, а затем мы перенаправляем вас на этот языковой префикс.
4uk4 avatar
флаг cn
/admin/config/региональный/язык/обнаружение
Mira chalak avatar
флаг eg
@ 4k4 У меня включены: URL-адрес обработчика языка пути страны, URL-адрес (префикс пути), выбранный язык. Браузер отключен. так что я предполагаю, что это хорошо

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

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