จะซ่อนตัวเลือกรูปแบบอินพุตและช่วยเหลือข้อความใต้ textarea เมื่อเพิ่ม | แก้ไขโหนดได้อย่างไร
จะซ่อนตัวเลือกรูปแบบอินพุตและช่วยเหลือข้อความใต้ textarea เมื่อเพิ่ม | แก้ไขโหนดได้อย่างไร
คำตอบ:
สำหรับ Drupal 7 คุณสามารถใช้โมดูลSimplify อนุญาตให้คุณซ่อนตัวเลือกรูปแบบข้อความ textarea รวมถึงองค์ประกอบอื่น ๆ ในรูปแบบโหนด
คุณสามารถใช้ hook_form_alter ในโมดูลที่กำหนดเองเพื่อทำสิ่งนี้
ตัวอย่างเช่นใน drupal 7:
// hook_form_alter function
function CUSTOM_MODULE_form_alter(&$form, &$form_state, $form_id) {
// We want this on a specific node type
if ($form_id == 'NODE_TYPE_node_form') {
$form['#after_build'][] = 'CUSTOM_MODULE_NODE_TYPE_node_form_after_build';
}
}
// afterbuild function
function CUSTOM_MODULE_NODE_TYPE_node_form_after_build($form) {
// We want this on a specific field
$form['YOUR_FIELD']['und']['0']['format']['#access'] = FALSE;
return $form;
}
ใน drupal 6 มีโมดูลรูปแบบที่ดีกว่าซึ่งทำสิ่งที่คุณต้องการอย่างแน่นอนมีรุ่น 7 dev แต่มันมาพร้อมกับคำเตือนว่าภายใต้การพัฒนาที่หนักหน่วง หากไซต์ของคุณยังอยู่ในระหว่างการพัฒนาอาจมีค่าสำหรับการลองใช้
คุณสามารถฆ่าไอเท็มฟอร์มการจัดรูปแบบได้จริง
function MY_THEME_form_comment_form_alter(&$form, &$form_state, &$form_id) {
$form['comment_body']['#after_build'][] = 'MY_THEME_configure_comment_form';
}
function MY_THEME_configure_comment_form(&$form) {
unset($form[LANGUAGE_NONE][0]['format']);
return $form;
}
CUSTOM
มีวัตถุประสงค์เป็นชื่อธีมที่กำหนดเองของคุณ คุณไม่ควรใช้รหัสภาษาอย่างหนักหากคุณต้องการใช้ภาษาที่ใช้งานglobal $language;
เพื่อจับมัน
LANGUAGE_NONE
เป็นค่าคงที่มีค่าund
... und
ไม่ได้ใช้
ฉันคิดว่าทางออกที่ดีที่สุดคือไม่อนุญาตให้เข้าถึงองค์ประกอบการเลือกรูปแบบข้อความ หากคุณยกเลิกการตั้งค่าอย่างสมบูรณ์คุณจะพบกับผลข้างเคียงที่ไม่พึงประสงค์ในฐานะโปรแกรมแก้ไขแบบ WYSIWYG ที่หายไป ดังนั้นฉันจึงเสนอรหัสต่อไปนี้
function MY_MODULE_form_comment_form_alter(&$form, &$form_state, &$form_id) {
$form['comment_body']['#after_build'][] = 'MY_MODULE_hide_text_format';
}
function MY_MODULE_hide_text_format(&$form) {
$form[LANGUAGE_NONE][0]['format']['#access'] = false;
return $form;
}
ใช้ CSS วิธีที่ง่ายที่สุด
#body-add-more-wrapper #edit-body-und-0-format {display: none;}
โชคดี.
สำหรับ Drupal 7
function MODULENAME_element_info_alter(&$type) {
if (isset($type['text_format']['#process'])) {
foreach ($type['text_format']['#process'] as &$callback) {
if ($callback === 'filter_process_format') {
$callback = 'MODULENAME_filter_process_format';
}
}
}
}
function MODULENAME_filter_process_format($element) {
$element = filter_process_format($element);
// Change input format to "Filtered HTML" for body fields of NODETYPE_NAME
if ($element['#bundle'] == 'NODETYPE_NAME' && $element['#field_name'] == 'body') {
$element['format']['format']['#default_value'] = 'filtered_html';
$element['format']['format']['#format'] = 'filtered_html';
$element['format']['format']['#value'] = 'filtered_html';
$element['#format'] = 'filtered_html';
}
return $element;
}
อีกวิธีง่ายๆในการซ่อนตัวเลือกรูปแบบการป้อนข้อมูลคือการลบรูปแบบการป้อนข้อมูลอื่น ๆ ทั้งหมดออกจากโปรไฟล์ผู้ใช้ที่คุณต้องการซ่อนตัวเลือก สำหรับสิ่งนี้ไปที่ admin-> configuration-> รูปแบบอินพุตและลบบทบาทผู้ใช้ทั้งหมดออกจากรูปแบบอินพุตอื่น ๆ ยกเว้นรูปแบบที่คุณต้องการให้เป็นค่าเริ่มต้น
ฉันทำอย่างนี้:
ยกเลิกการเลือก "ใช้รูปแบบข้อความ HTML ที่กรองแล้ว" และ "จัดการรูปแบบข้อความและตัวกรอง" จากบุคคล> การอนุญาตสำหรับผู้ใช้ที่ไม่ระบุชื่อและผู้ใช้ที่ได้รับอนุญาตเพื่อให้ไม่สามารถใช้ CKeditor
แน่นอนคุณสามารถปิดการใช้งานได้จาก CSS โดย "display: none;" สำหรับคลาส div โดยเฉพาะ (เป็น. filer-wrapper) และซ่อนพื้นที่ทั้งหมดที่คุณชี้ไปด้านบน แต่ในกรณีนี้พื้นที่จะถูกซ่อนสำหรับทุกคนรวมถึง superuser
ติดตั้งโมดูลCSS Injector (ปัจจุบันมีเพียงรุ่นพัฒนาที่ใช้งานได้สำหรับ Drupal 8)
จากนั้นไปที่หน้าการดูแลระบบของ CSS Injector (/ admin / config / development / css-injector) สร้างกฎ CSS ใหม่ด้วยรหัสนี้ (หรือรหัสใด ๆ ที่ใช้กับคลาสของการจัดรูปแบบข้อความพื้นที่):
.filter-guidelines {
display: none;
}
เลือกที่จะใช้กับชุดรูปแบบSeven (หรือชุดรูปแบบผู้ดูแลระบบที่ใช้งานอยู่) บันทึกและสนุก!
คุณไม่สามารถลบรูปแบบการป้อนข้อมูล "ข้อความธรรมดา" และ RTE จะไม่แสดงเมื่อคุณใช้รูปแบบอินพุต "ข้อความธรรมดา"
ฉันจะใช้ตัวเลือก CSS
ฉันใช้ทั้ง "ลบรูปแบบการป้อนข้อมูลอื่น ๆ ทั้งหมดออกจากโปรไฟล์ผู้ใช้" และวิธี css
ลดความซับซ้อนช่วยให้เขตข้อมูลเฉพาะที่จะซ่อนจากส่วนต่อประสานผู้ใช้ สิ่งนี้จะช่วยลดความยุ่งเหยิงของแบบฟอร์มและนำเสนอประสบการณ์การใช้งานที่ง่ายขึ้นให้กับผู้แก้ไขเนื้อหา
หากคุณต้องการซ่อนรูปแบบ แต่ยังคงมีอยู่ให้ลองใช้โมดูล " รูปแบบที่ง่ายขึ้น ": https://www.drupal.org/project/simplified_formats
มันซ่อนรายละเอียดรูปแบบในไอคอนเครื่องหมายคำถามเล็ก ๆ ถัดจากดรอปดาวน์การเลือกรูปแบบ สำหรับตัวกรองรูปแบบข้อความจำนวนมากมันไม่ดีเลยที่จะซ่อนคำแนะนำที่บอกวิธีใช้อย่างสมบูรณ์ ตัวกรองอื่น ๆ เป็นแบบอัตโนมัติมากขึ้น ฉันคิดว่าเราต้องการโมดูลที่ช่วยให้เราสามารถเลือกสิ่งที่แสดงให้เห็นถึงผู้ใช้และสิ่งที่ไม่
คุณยังสามารถใช้โมดูลการซ่อนรูปแบบ
ซ่อนรูปแบบช่วยให้คุณสามารถยุบ "รูปแบบข้อความ" หรือ "รูปแบบการป้อนข้อมูล" แบบเลื่อนลงเพื่อล้าง UI
สำหรับ Drupal 8. สิ่งนี้จะลบพื้นที่การจัดรูปแบบสำหรับสองฟิลด์
/**
* Implements hook_form_FORM_ID_alter().
*/
function CUSTOM_MODULE_form_FORM_ID_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
$form['#after_build'][] = 'CUSTOM_MODULE_eform_application_after_build';
}
function CUSTOM_MODULE_eform_application_after_build ($form) {
unset($form['field_experience']['widget'][0]['format']);
unset($form['field_miscellaneous']['widget'][0]['format']);
return ($form);
}
สำหรับ Drupal 7 คุณสามารถ:
1) ใช้hook_theme_registry_alter(&$theme_registry)
จากภายในโมดูลเพื่อแก้ไขการลงทะเบียนชุดรูปแบบ eq นิยามตัวประมวลผลธีม
2) จากนั้นปรับเปลี่ยนฟังก์ชั่นสามธีมtheme_filter_tips
, theme_filter_tips_more_info
และtheme_filter_guidelines
และบังคับให้พวกเขากลับไม่มีอะไร ดังนี้
นี่คือฟังก์ชั่นเป้าหมาย ฟังก์ชั่นชุดรูปแบบทั้งหมดข้างต้นจะถูกเปลี่ยนเส้นทางไปที่
function _mymodule_filter_tips($tips, $long = FALSE, $extra = ''){
return '';
}
/**
* Implements hook_theme_registry_alter
*/
function mymodule_theme_registry_alter(&$theme_registry) {
$theme_registry['filter_tips']['theme path'] = drupal_get_path( 'module', 'mymodule' );
$theme_registry['filter_tips']['function'] = '_mymodule_filter_tips';
$theme_registry['filter_guidelines']['theme path'] = drupal_get_path( 'module', 'mymodule' );
$theme_registry['filter_guidelines']['function'] = '_mymodule_filter_tips';
$theme_registry['filter_tips_more_info']['theme path'] = drupal_get_path( 'module', 'mymodule' );
$theme_registry['filter_tips_more_info']['function'] = '_mymodule_filter_tips';
}
เมื่อคุณล้างแคชของคุณ Drupal จะค้นหาคำจำกัดความตัวกรองเหล่านั้นบนเส้นทางของโมดูลที่คุณเลือก (ดูdrupal_get_path
) และไม่ส่งคืนสิ่งใดสำหรับตัวกรองแต่ละตัว ดังนั้นไม่มีคำอธิบายรูปแบบข้อความเพิ่มเติม
/ hook_form_alter function
function CUSTOM_MODULE_form_alter(&$form, &$form_state, $form_id) {
// We want this on a specific node type
if ($form_id == 'NODE_TYPE_node_form') {
$form['#after_build'][] = 'CUSTOM_MODULE_NODE_TYPE_node_form_after_build';
}
}
// afterbuild function
function CUSTOM_MODULE_NODE_TYPE_node_form_after_build($form) {
// We want to hide input formats and we can do it like following
$form['body']['und']['0']['format']= '<div style="display:none;">';
$form['body']['und']['0']['format']= '</div>';
return $form;
}
ส่วนใหญ่ทำงานให้ฉันด้วยการเปลี่ยนแปลงเล็กน้อยเหล่านี้
$form['body'][LANGUAGE_NONE][0]['format']['#prefix']<br>
$form['body'][LANGUAGE_NONE][0]['format']['#suffix']
hook_form_alter
แต่ผมไม่แน่ใจว่าเกี่ยวกับรายละเอียดดังนั้นฉันจะไม่โพสต์นี้เป็นคำตอบ ...