ฉันมีมุมมอง (บล็อก) ที่ง่ายมากเพื่อแสดงรายการชื่อโหนด ข้อมูลพร็อพเพอร์ตี้นี้มีรหัสจากตัวกรองตามบริบทของ URL และตัวกรองเดียวเพื่อกรองภาษาของเนื้อหาที่ตั้งค่าไว้สำหรับหน้า (ตามคำนำหน้า URL) จากนั้นบล็อกนี้จะถูกวางโดยใช้ Layout Builder ในโหมดมุมมองเนื้อหาแบบเต็มสำหรับโหนดประเภทนี้มุมมองถูกกำหนดให้ใช้การแคชตามแท็ก เมื่อฉันสลับหน้าไปมาระหว่างภาษา ภาษาของชื่อเรื่องไม่เปลี่ยนแปลง
การปิดใช้งานการแคชมุมมองจะแก้ไขปัญหานี้
ขุดเล็กน้อยและฉันเห็นว่าบริบทแคชของ Views นั้นใช้ภาษาอินเทอร์เฟซ แต่ชื่อเรื่องเป็นเนื้อหา ดังนั้นจึงจำเป็นต้องขึ้นอยู่กับภาษาของเนื้อหา ฉันได้เห็นบางโพสต์เกี่ยวกับการตั้งค่าบริบทแคชและแท็กแคช แต่ดูเหมือนว่าจะไม่ทำงาน
จนถึงตอนนี้ฉันได้ลองสิ่งนี้แล้ว:
ฟังก์ชัน mycustom_views_pre_view (ViewExecutable $view, $display_id, อาร์เรย์ &$args) {
$language_manager = \Drupal::languageManager();
$langcode = $language_manager->getCurrentLanguage(LanguageInterface::TYPE_CONTENT)->getId();
ถ้า (isset($view->element['#cache']['contexts']) && is_array($view->element['#cache']['contexts'])) {
foreach ($view->element['#cache']['contexts'] as $key => $context) {
ถ้า (stristr($context, 'language_interface')) {
unset($view->element['#cache']['contexts'][$key]);
}
}
$view->element['#cache']['contexts'][] = 'ภาษา:language_content';
$view->element['#cache']['tags'][] = 'ภาษา:' $langcode;
}
}
สิ่งนี้ดูเหมือนจะไม่ช่วยอะไร
เป็นไปได้ไหมที่ฉันแก้ไขการแคชมุมมองแล้ว แต่บล็อกยังคงแคชไม่ถูกต้อง