Score:-1

วิธีจัดการกับเอาต์พุตที่แตกต่างกันสำหรับบล็อกเดียวกัน (ปัญหาการแคช)

ธง cn

ฉันมีธีมซึ่งมีรูปลักษณ์ที่แตกต่างกันสองแบบสำหรับบล็อกเมนูหลัก ดังนั้นฉันจึงเขียนคำแนะนำธีมดังนี้:

ฟังก์ชัน MYTHEME_theme_suggestions_menu_alter (อาร์เรย์ &$คำแนะนำ, อาร์เรย์ $ตัวแปร) {
  ถ้า ($variables['menu_name'] == 'main' และ Drupal::service('path.matcher')
  ->isFrontPage()) {
    array_splice($suggestions, 1, 0, 'menu__main__front');
  }
}

เพื่อให้ฉันสามารถกำหนดธีมเมนูหลักสำหรับหน้าแรกในแบบของตัวเองได้ ปัญหาที่เกิดขึ้นคือวิธีการที่ระบบแคชของ Drupal ทำงานเกี่ยวกับบล็อก ดังนั้นเมื่อผู้ใช้นำทางไปยังหน้าอื่น ผู้ใช้จะใช้เอาต์พุตบล็อกเดียวกันซึ่งผลิตขึ้นสำหรับหน้าแรก ตอนแรกฉันคิดว่านั่นอาจเป็นปัญหาในการแนะนำธีม แต่แล้วฉันก็รู้ว่าเมื่อฉันล้างแคช มันใช้ได้ดี

ข้อเสนอแนะใด ๆ สำหรับกรณีที่เราต้องการให้เอาต์พุตบล็อกในลักษณะต่าง ๆ ตามเงื่อนไขบางประการ?

ru flag
คุณต้องเพิ่ม "บริบท" ที่เปลี่ยนลักษณะที่ปรากฏเป็นอาร์เรย์ "#cache" ในกรณีของคุณคือ "url.path" ดู [วิธีที่ถูกต้องในการตั้งค่าบริบทแคชในบล็อกที่กำหนดเองคืออะไร](https://drupal.stackexchange.com/questions/223376/what-is-the-correct-way-to-set-cache-contexts-on -กำหนดเองบล็อก)
4uk4 avatar
cn flag
ดู https://drupal.stackexchange.com/questions/182005/is-front-is-not-available-in-all-templates
Score:0
ธง de

ข้อเสนอแนะใด ๆ สำหรับกรณีที่เราต้องการให้เอาต์พุตบล็อกในลักษณะต่าง ๆ ตามเงื่อนไขบางประการ?

คุณต้องการบริบทแคช: https://www.drupal.org/docs/drupal-apis/cache-api/cache-contexts

บริบทแคชจัดเตรียมวิธีการที่ประกาศเพื่อสร้างขึ้นอยู่กับบริบท การเปลี่ยนแปลงของสิ่งที่ต้องการแคช

ดังที่ hudri ได้ระบุไว้ คุณต้องเปิดบริบทแคช url.path.

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา