Score:0

วิธีซ่อนฟิลด์ในการจัดการการแสดงผลเมื่อติดตั้งโมดูลโครงร่างและแสดงเมื่อโมดูลถูกถอนการติดตั้งโดยทางโปรแกรม

ธง in

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

รหัสการกำหนดค่านี้เป็นของ entity_view_display.node.article.default

  ใช้: eedc35e4-0592-4f1a-bdc6-47dbf60fa929    
    รหัสภาษา: th    
    สถานะ: จริง    
    การพึ่งพา:   
      การกำหนดค่า:   
        - field.field.node.article.body 
        - field.field.node.article.comment  
        - field.field.node.article.field_image  
        - field.field.node.article.field_media  
        - field.field.node.article.field_sample_text    
        - field.field.node.article.field_tags   
        - node.type.article 
      โมดูล:   
        - layout_builder    
        - ข้อความ  
        - ผู้ใช้  
    third_party_settings:   
      layout_builder:   
        เปิดใช้งาน: เท็จ  
        allow_custom: เท็จ 
    รหัส: node.article.default    
    targetEntityType: โหนด  
    กำ: บทความ 
    โหมด: ค่าเริ่มต้น   
    เนื้อหา:    
      ร่างกาย: 
        ประเภท: text_default  
        ป้ายกำกับ: เหนือ    
        การตั้งค่า: {  }  
        third_party_settings: { }  
        น้ำหนัก: 0   
        ภูมิภาค: เนื้อหา 
    ที่ซ่อนอยู่: 
      ความคิดเห็น: จริง 
      field_image: จริง 
      field_media: จริง 
      field_sample_text: จริง   
      field_tags: จริง  
      รหัสภาษา: จริง    
      ลิงค์: จริง   
      search_api_excerpt: จริง
4uk4 avatar
cn flag
คุณกำลังมองหา hook เช่น hook_modules_installed/uninstalled หรือ setComponent /removeComponent สำหรับโหมดการแสดงผลหรือไม่? ดู https://drupal.stackexchange.com/questions/224686/8-how-do-i-programmatically-enable-a-user-field-under-manage-form-display-and
Libbna Mathew avatar
in flag
ใน hook_install() ฉันต้องการซ่อนฟิลด์ในการจัดการการแสดงผล เช่นเดียวกับเมื่อฉันเปิดใช้งาน/ติดตั้งโมดูลตัวสร้างโครงร่าง ฟิลด์ในการจัดการการแสดงผลควรถูกปิดใช้งาน
4uk4 avatar
cn flag
คุณหมายถึงโมดูลตัวสร้างเค้าโครงหลักหรือไม่ ถ้าอย่างนั้นคุณต้องมีตะขอที่ฉันพูดถึง hook_install() ทำงานเฉพาะสำหรับโมดูลที่ใช้ hook เท่านั้น
Libbna Mathew avatar
in flag
ไม่ ไม่ ฉันได้สร้างโมดูลเค้าโครงแบบกำหนดเองแล้ว และฉันกำลังทำงานกับ D9 ฉันแค่ต้องการให้เนื้อหาว่างเปล่าในฟิลด์การกำหนดค่าและเนื้อหาที่กล่าวถึงข้างต้นในเนื้อหาควรถูกซ่อนไว้: จริง และฟังก์ชันนี้ควรทำใน hook_install() หวังว่าฉันจะอธิบายได้ดี!
Libbna Mathew avatar
in flag
ฉันต้องการปิดใช้งานฟิลด์ในการจัดการการแสดงผลเมื่อฉันติดตั้งโมดูลที่กำหนดเอง
Score:1
ธง in

ฉันได้แก้ไขปัญหาแล้ว แทน \Drupal::entityTypeManager() ฉันใช้

$articleDefaultLayout = LayoutBuilderEntityViewDisplay::load(
    'node.article.default'
);
$articleDefaultLayout->setComponent('body');
Libbna Mathew avatar
in flag
@4uk4 ขอบคุณความช่วยเหลือของคุณ
4uk4 avatar
cn flag
ไม่สำคัญว่าคุณจะใช้ entityTypeManager() หรือ static load() ทั้งคู่มีผลเหมือนกัน
Libbna Mathew avatar
in flag
แต่เมื่อฉันใช้ entityTypeManager(), removeComponent() เกิดข้อผิดพลาด "ไม่พบวิธีการ"
4uk4 avatar
cn flag
จากนั้นมีข้อผิดพลาดอื่น BTW ตัวอย่างโค้ดของคุณมีข้อเสียตรงที่จะเกิดข้อผิดพลาดเมื่อไม่ได้ติดตั้ง Layout Builder จะเป็นการดีกว่าที่จะโหลดคลาสดั้งเดิมหรือโหลดเอนทิตีตามรหัสประเภทเอนทิตีผ่าน entityTypeManager()จากนั้นคุณจะได้รับคลาสที่ติดตั้งในปัจจุบันสำหรับประเภทเอนทิตีนี้เสมอ
Libbna Mathew avatar
in flag
ฉันมีประเด็นของคุณ แต่ทำไมจึงแสดงข้อผิดพลาดนี้ ฉันทำสิ่งที่คุณพูดถึงในรหัสใน hook_install() ไม่พบเมธอด removeComponent() !!
Score:0
ธง cn

หากต้องการปิดใช้งานฟิลด์เนื้อหาเมื่อคุณติดตั้งโมดูลแบบกำหนดเอง:

mymodule.install

/**
 * ใช้ hook_install ()
 */
ฟังก์ชัน mymodule_install () {
  \Drupal::entityTypeManager()
    ->getStorage('entity_view_display')
    ->load('node.article.default')
    ->removeComponent('ร่างกาย')
    ->บันทึก();
}

วิธีเปิดใช้งานฟิลด์ดู 8 - ฉันจะเปิดใช้งานฟิลด์ผู้ใช้โดยทางโปรแกรมภายใต้การจัดการการแสดงฟอร์มและจัดการการแสดงผลได้อย่างไร

Libbna Mathew avatar
in flag
ฉันได้รับข้อผิดพลาดในเมธอด removeComponent() และถ้าฉันต้องการลบฟิลด์โดยใช้ field id ดังนั้นแทนที่จะเป็น 'body' เราสามารถเขียน field id ได้ใช่ไหม
Libbna Mathew avatar
in flag
ฉันกำลังทำงานกับ Drupal 9

โพสต์คำตอบ

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