Am o vizualizare (bloc) foarte simplă pentru a enumera titlul unui nod. Această vizualizare are un id de la filtrul contextual URL și un singur filtru pentru a filtra pe limba de conținut setată pentru pagină (după prefixul URL). Acest bloc este apoi plasat folosind Layout Builder în modul de vizualizare Conținut complet pentru acest tip de nod.Vizualizarea este setată să utilizeze memorarea în cache bazată pe etichete. Când schimb pagina înainte și înapoi între limbi; limba titlului nu se schimbă.
Dezactivarea memorării în cache a vizualizărilor rezolvă acest lucru.
Puțin săpături și văd că contextul cache al vizualizărilor se bazează pe limbajul interfeței, dar titlul este conținut; deci trebuie să se bazeze pe limbajul conținutului. Am văzut câteva postări despre setarea contextului cache-ului și a etichetelor cache, dar acestea nu par să funcționeze.
Pana acum am incercat asta:
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'] ca $key => $context) {
dacă (stristr($context, 'interfaţă_limbă')) {
unset($view->element['#cache']['contexts'][$key]);
}
}
$view->element['#cache']['contexts'][] = 'languages:language_content';
$view->element['#cache']['tags'][] = 'limba:' . $langcode;
}
}
Nimic din toate acestea nu pare să ajute.
Este posibil să fi remediat memorarea în cache a vizualizării, dar blocul încă nu este memorat în cache corect?