รัน Drupal 9 ด้วยโมดูลย่อหน้า, ย่อหน้าแบบยุบได้และย่อหน้า jquery ui ติดตั้งหีบเพลง ฉันต้องการแก้ไขรูปแบบย่อหน้า โดยเฉพาะที่แสดงไฟล์ส่วนตัวโดยเพิ่มช่องทำเครื่องหมาย 'เปลี่ยนเป็นสาธารณะ' ใต้คำอธิบายไฟล์แต่ละรายการ (ดูภาพที่แนบมา)
ฉันใช้ hook_field_widget_WIDGET_TYPE_form_alter() นี่คือรหัสตัวอย่าง:
**
* ใช้ hook_field_widget_WIDGET_TYPE_form_alter()
*/
ฟังก์ชัน sbn_field_widget_paragraphs_form_alter(&$องค์ประกอบ, &$form_state, $บริบท) {
ถ้า (!empty($element['subform']['field_private_files'])) {
# องค์ประกอบ $['subform']['field_private_files']['widget'][0]['#default_value']['switch'] = [
# '#type' => 'ช่องทำเครื่องหมาย',
# '#title' => t('เปลี่ยนเป็นสาธารณะ'),
# '#required' => เท็จ
# '#default_value' => เท็จ
# ];
$element['subform']['field_private_files']['widget'][0]['#default_value']['switch'] = อาร์เรย์(
'#type' => 'ช่องทำเครื่องหมาย',
'#title' => t('เปลี่ยนเป็นสาธารณะ'),
'#ขนาด' => 10,
'#maxlength' => 255,
'#default_value' => 1,
'#required' => เท็จ
'#description' => '<p>' t('เปลี่ยนจากส่วนตัวเป็นสาธารณะ') . '</p>',
);
// dsm($องค์ประกอบ);
}
}
ฉันรู้ว่าองค์ประกอบอาร์เรย์อยู่ที่นั่นเพราะฉันใช้ dsm เพื่อพิมพ์แบบฟอร์มทั้งหมดหากมี ['subform']['field_private_files'] อยู่:
[field_private_files] => อาร์เรย์
(
[#type] => คอนเทนเนอร์
[#parents] => อาร์เรย์
(
[0] => field_body1
[1] => 7
[2] => ฟอร์มย่อย
[3] => field_body2
[4] => 0
[5] => ฟอร์มย่อย
[6] => field_private_files_wrapper
)
[#attributes] => อาร์เรย์
(
[คลาส] => อาร์เรย์
(
[0] => ฟิลด์--ประเภท-ไฟล์
[1] => ฟิลด์--ชื่อ-ฟิลด์-ไฟล์ส่วนตัว
[2] => field--widget-file-generic
[3] => ย่อหน้าเนื้อหา
)
)
[วิดเจ็ต] => อาร์เรย์
(
[0] => อาร์เรย์
(
[#title] => ไฟล์ส่วนตัว
[#รายละเอียด] =>
[#field_parents] => อาร์เรย์
(
[0] => field_body1
[1] => 7
[2] => ฟอร์มย่อย
[3] => field_body2
[4] => 0
[5] => ฟอร์มย่อย
)
[#จำเป็น] =>
[#เดลต้า] => 0
[#น้ำหนัก] => 0
[#type] => Managed_file
[#upload_location] => ส่วนตัว://
[#upload_validators] => อาร์เรย์
(
[file_validate_size] => อาร์เรย์(1)
[file_validate_extensions] => อาร์เรย์(1)
)
[#value_callback] => อาร์เรย์
(
[0] => Drupal\file\Plugin\Field\FieldWidget\FileWidget
[1] => ค่า
)
[#กระบวนการ] => อาร์เรย์
(
[0] => อาร์เรย์(2)
[1] => อาร์เรย์(2)
)
[#progress_indicator] => ตัวสั่น
[#ขยาย] => 1
[#field_name] => field_private_files
[#entity_type] => ย่อหน้า
[#display_field] => 1
[#display_default] => 1
[#description_field] => 1
[#จำนวนสมาชิก] => -1
[#default_value] => อาร์เรย์
(
[target_id] => 436
[จอแสดงผล] => 1
[description] => การประชุมผู้บริหาร นาทีที่ 11-15-21
[fids] => อาร์เรย์(1)
)
คำแนะนำใดๆ เกี่ยวกับวิธีเขียนโค้ดนี้เพื่อให้ช่องทำเครื่องหมายถูกพิมพ์ใต้ 'คำอธิบาย' ของส่วนไฟล์ส่วนตัวแต่ละส่วนของแต่ละย่อหน้า (อาจมีหลายย่อหน้าแนบกับแต่ละโหนด) ขอบคุณ!