Tôi có chế độ xem (khối) rất đơn giản để liệt kê tiêu đề của nút. Chế độ xem này có id từ bộ lọc theo ngữ cảnh url và một bộ lọc duy nhất để lọc trên Ngôn ngữ nội dung được đặt cho trang (theo tiền tố URL). Sau đó, khối này được đặt bằng cách sử dụng Trình tạo bố cục ở chế độ xem Toàn bộ nội dung cho loại nút này.Chế độ xem được đặt để sử dụng bộ nhớ đệm dựa trên Thẻ. Khi tôi chuyển trang qua lại giữa các ngôn ngữ; ngôn ngữ tiêu đề không thay đổi.
Vô hiệu hóa chế độ xem vào bộ nhớ đệm sẽ khắc phục điều này.
Tìm hiểu một chút và tôi thấy rằng ngữ cảnh bộ nhớ cache của Chế độ xem dựa trên ngôn ngữ Giao diện nhưng Tiêu đề là nội dung; vì vậy nó cần phải dựa trên Ngôn ngữ nội dung. Tôi đã thấy một vài bài đăng về cài đặt bối cảnh bộ đệm và thẻ bộ đệm nhưng chúng dường như không hoạt động.
Cho đến nay tôi đã thử điều này:
function mycustom_views_pre_view(ViewExecutable $view, $display_id, array &$args) {
$language_manager = \Drupal::languageManager();
$langcode = $language_manager->getCurrentLanguage(LanguageInterface::TYPE_CONTENT)->getId();
if (isset($view->element['#cache']['contexts']) && is_array($view->element['#cache']['contexts'])) {
foreach ($view->element['#cache']['contexts'] as $key => $context) {
if (stristr($context, 'language_interface')) {
unset($view->element['#cache']['contexts'][$key]);
}
}
$view->element['#cache']['contexts'][] = 'languages:language_content';
$view->element['#cache']['tags'][] = 'ngôn ngữ:' . mã ngôn ngữ $;
}
}
Không ai trong số này dường như để giúp đỡ.
Có thể nào tôi đã sửa chế độ xem vào bộ nhớ đệm nhưng khối vẫn không được lưu vào bộ nhớ cache đúng cách?