ฉันต้องการบังคับให้สร้างเนื้อหาทั้งหมดโดยใช้ธีมหลักของเว็บไซต์ ฉันต้องการทำเช่นนี้เพราะฉันใช้โปรแกรมเรนเดอร์ใน MYMODULE_node_presave()
แบบนี้:
ฟังก์ชัน MYMODULE_node_presave (NodeInterface $node) {
$renderer = \Drupal::service('เรนเดอร์');
$content_type = $node->getType();
ถ้า ($content_type == 'หน้า') {
$viewmode_render = $node->get('field_text_main_to_render')
-> ดู ('rendered_output');
$processed_display = $renderer->renderPlain($viewmode_render);
$node->set('field_text_main_display', "$processed_display");
$node->field_text_main_display->format = 'ประมวลผลแล้ว';
}
เว็บไซต์ของฉันใช้ Bartik เป็นธีมหลักและ Seven เป็นธีมสำหรับผู้ดูแลระบบ
ภายใต้การตั้งค่าลักษณะที่ปรากฏ (/admin/ลักษณะที่ปรากฏ) ฉันได้ตรวจสอบการตั้งค่าแล้ว ใช้ธีมการดูแลระบบเมื่อแก้ไขหรือสร้างเนื้อหา. สิ่งนี้ทำให้มั่นใจได้ว่าโหนดจะแสดงผลใน Bartik เมื่อสร้างใน UI
อย่างไรก็ตาม เมื่อฉันเปิดโหนดอีกครั้ง /ผู้ดูแลระบบ/เนื้อหา
โหนดจะถูกบันทึกใหม่ด้วย Seven แทนที่จะเป็น Bartik ดังนั้นฉันจึงเพิ่ม หัวข้อ นักเจรจาต่อรอง
:
/**
* เลือกธีมที่ถูกต้องสำหรับเส้นทางต่างๆ
*/
คลาส ThemeNegotiator ใช้ ThemeNegotiatorInterface {
/**
* {@inheritDoc}
*/
ใช้ฟังก์ชันสาธารณะ (RouteMatchInterface $route_match) {
ส่งคืน $this->negotiateRoute($route_match) ? ถูกผิด;
}
/**
* {@inheritDoc}
*/
ฟังก์ชันสาธารณะกำหนด ActiveTheme (RouteMatchInterface $route_match) {
ส่งคืน $this->negotiateRoute($route_match) ?: NULL;
}
/**
* เลือกธีมสำหรับกรณีพิเศษ
*
* @param \Drupal\Core\Routing\RouteMatchInterface $route_match
* เส้นทางที่ตรงกันในปัจจุบัน
*
* @return บูล|สตริง
* ชื่อธีมที่จะใช้ (สตริง) หรือเท็จ (บูล)
*/
ฟังก์ชันส่วนตัวการเจรจาเส้นทาง (RouteMatchInterface $route_match) {
$route_name = $route_match->getRouteName();
// หน้าเนื้อหาของผู้ดูแลระบบต้องใช้ธีมการเรนเดอร์โหนด
// ทำไม: การดำเนินการ "บันทึกเนื้อหา" จะใช้ธีมของหน้านี้
ถ้า ($route_name === 'system.admin_content') {
กลับ 'bartik';
}
อื่น {
กลับ FALSE;
}
}
}
ตอนนี้เมื่อฉันรันโหนดจำนวนมากอีกครั้ง /ผู้ดูแลระบบ/เนื้อหา
โหนดแสดงผลอย่างถูกต้องด้วย Bartik
ต่อไปฉันติดตั้งไฟล์ ฟีด โมดูล. ตอนนี้ เมื่อฉันนำเข้าโหนดผ่าน CSV โดยใช้ฟีด โหนดเหล่านั้นจะแสดงผลโดยใช้ Seven ไม่ใช่ Bartik ฉันต้องการบังคับให้โหนดเหล่านี้แสดงผลโดยใช้ Bartik แต่ฉันไม่รู้ว่าต้องทำอย่างไร (เช่นถ้ามีวิธีใช้ เจรจาเส้นทาง
ใน หัวข้อ นักเจรจาต่อรอง
ก็น่าจะใช้ได้ แต่ฉันไม่รู้วิธีตั้งค่า) มีความคิดเห็นอย่างไร