ฉันมีเว็บไซต์ที่มีธีมหลักและธีม "มินิ" อื่นที่ใช้ผ่านโมดูลที่กำหนดเองพร้อมตัวเจรจาธีมซึ่งกำหนดโดยประเภทโหนด เพจที่ใช้ธีมมินิมีเว็บฟอร์มในบล็อก
หน้าธีมขนาดเล็กดูเหมือนจะแสดงอย่างถูกต้อง รวมถึงเว็บฟอร์ม แต่ในหลายกรณีหลังจากกรอกแบบฟอร์มแล้ว การส่งจะไม่ถูกส่ง (ไม่ได้เข้าสู่ระบบตารางและไม่มีการยืนยัน)
มีหลายเพจที่ใช้ธีมนี้ เพจหนึ่งดูเหมือนจะไม่สอดคล้องกัน (บางครั้งส่งแบบฟอร์มและบางครั้งก็ไม่ส่ง) และในกรณีอื่นๆ ทั้งหมดก็สอดคล้องกัน - ส่งเฉพาะเมื่อฉันรีเฟรชเพจ (CTRL+F5) มิฉะนั้นจะไม่ส่ง .
เว็บฟอร์มในไซต์ธีมหลักถูกส่งโดยไม่มีปัญหาใดๆ
ปัญหานี้เริ่มต้นหลังจากอัปเกรดเป็น Drupal 9 และใช้ Webform 6.1.0
รหัสของฉันอยู่ด้านล่าง ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก! ขอขอบคุณ :)
รหัสธีม:
นี่คือรหัสที่ใช้สำหรับบล็อกซึ่งอยู่ในไฟล์ธีมของฉัน:
ฟังก์ชัน minitheme_preprocess_page(&$ตัวแปร) {
// รหัสแบบฟอร์ม
$form_block_id = 'webform_8';
$block = \Drupal\block\Entity\Block::load($form_block_id);
$variables['short_contact'] = \Drupal::entityTypeManager()
->getViewBuilder('บล็อก')
->ดู($block);
}
จากนั้นเพิ่มใน page.html.twig:
{{ short_contact }}
รหัสโมดูล:
และนี่คือไฟล์บริการ:
# ไฟล์บริการโมดูล change_theme.services.yml
บริการ:
change_theme.theme.negotiator:
คลาส: Drupal\change_theme\Theme\ThemeNegotiator
แท็ก:
- { ชื่อ: theme_negotiator ลำดับความสำคัญ: 1,000 }