เพิ่มเขตข้อมูลลงในเนื้อหาหลายประเภทพร้อมกันหรือไม่


9

ฉันต้องการเพิ่มเขตข้อมูลลงในเนื้อหาหลายประเภทพร้อมกันและกำหนดค่าให้กับทุกประเภทพร้อมกัน

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

มีวิธีใดบ้างในการเพิ่ม / กำหนดค่าจำนวนมากของเขตข้อมูลใหม่ให้กับเนื้อหาหลายประเภท


คุณมีเนื้อหาประเภทใดบ้าง
bobylapointe

ฉันสมมติว่าคำถามนี้ไม่เกี่ยวข้องกับ OP อีกต่อไป แต่เกี่ยวข้องกับ Nigel Waters ที่ตั้งค่าหัว คุณจะสนใจแสดงความคิดเห็นกับไนเจลไหม?
Kari Kääriäinen

มี 25 (เป็นไซต์ที่มีขนาดใหญ่มากซึ่งต้องการให้เป็นประเภทเนื้อหาแยกต่างหาก)
ไนเจลวอเตอร์ส

Btw, การแก้ปัญหาหนึ่งคือการจ้างคนราคาถูกสำหรับชนิดของสิ่งนี้ :)
donquixote

หรือแมโครของเบราว์เซอร์
donquixote

คำตอบ:


9

บรรทัดที่กว้างโดยใช้โมดูลคุณสมบัติอาจเป็น:

  1. เพิ่มฟิลด์ลงในประเภทเนื้อหา (เพื่อดูรูปแบบ) ด้วยมือ
  2. สร้างคุณสมบัติรวมถึงฟิลด์ฐานและอินสแตนซ์ของฟิลด์สำหรับฟิลด์ที่สร้างขึ้นใหม่
  3. แก้ไขโมดูลที่สร้างขึ้นคูณฐานฟิลด์และอินสแตนซ์กับเนื้อหาทุกประเภทที่ต้องการ
  4. เปิดใช้งานโมดูลที่แก้ไข

ฉันจำไม่ได้ว่าฟีเจอร์ที่เกี่ยวข้องกับฟิลด์ .. เป็นไปได้หรือไม่ที่จะปิดใช้งานคุณสมบัติหลังจากสร้างฟิลด์แล้ว?
donquixote

โมดูลทารกแรกเกิดจะขึ้นอยู่กับคุณสมบัติดังนั้นโดยทั่วไปไม่เท่าที่ฉันรู้
Kari Kääriäinen

ฉันหมายถึงปิดใช้งานโมดูลแรกเกิดไม่ใช่ปิดใช้งานคุณสมบัติ คำถามคือว่าอินสแตนซ์ของฟิลด์จะยังคงอยู่หรือไม่ บางที Lester Peabody หรือ Nigel Waters สามารถลองและรายงานกลับมาได้
donquixote

โอ้ขอโทษ. ใช่จริง ๆ แล้วทั้งสองสามารถปิดการใช้งานเขตข้อมูลจะอยู่ในฐานข้อมูลที่ฉันเห็นขณะที่ฉันกำลังทดสอบตัวเอง
Kari Kääriäinen

นี่เป็นคำตอบที่ถูกต้องสำหรับการตั้งค่าเริ่มต้นของ drupal และการตั้งค่าอื่น ๆ ของ Drupal แต่ถ้าคุณมีโหมดการแสดงผลที่แตกต่างกันสำหรับประเภทเนื้อหาที่แตกต่างกันคุณจะดีกว่าการกำหนดค่าฟิลด์ในแต่ละประเภทเนื้อหาด้วยมือหรือให้แน่ใจว่าคุณใช้ประเภทการแสดงผลที่ถูกต้องในรหัสอาร์เรย์ field_instance ของคุณ
Sumeet Pareek

5

ใช้โมดูลเครื่องมือภาคสนาม :

ชุดเครื่องมือ UI ที่มีประโยชน์สำหรับการทำงานกับฟิลด์:

Overview of fields with links to edit single instances, and all instances at once
Clone any field instance to multiple entities and bundles
Clone all field instance of a bundle to multiple entities and bundles
Import and export fields
Delete multiple instances of a field
Apply a vocabulary to multiple entities and bundles at once (the same way vocabularies were applied to content types on Drupal 6)
... your idea here. Patches welcome!

มันฟังดูยอดเยี่ยมมากฉันจะต้องดูเรื่องนี้
Lester Peabody

3

หากคุณไม่สนใจที่จะเขียนโมดูลที่กำหนดเองสำหรับสิ่งนี้คุณสามารถเพิ่มเขตข้อมูลลงในประเภทเนื้อหาผ่านรหัสได้ง่ายๆ:
$instance = array(
'field_name' => 'field_firstname',
'label' => 'First name',
'entity_type' => 'node',
'bundle' => 'person',
);
field_create_instance($instance);

รหัสด้านบนจะเพิ่มช่อง "field_firstname" ให้กับประเภทเนื้อหาที่มีชื่อเครื่อง "คน" ดังนั้นคุณสามารถสร้างโมดูลที่ฟอร์มที่อนุญาตให้คุณเลือกฟิลด์และชนิดเนื้อหาจำนวนหนึ่งและเมื่อส่งฟิลด์จะถูกเพิ่มในประเภทเนื้อหาที่เลือกทั้งหมด


1

ไม่กี่ครั้งที่ฉันต้องทำแบบนี้ผมเคยใช้เก็บฟิลด์

จัดเตรียมฟิลด์การรวบรวมฟิลด์ซึ่งสามารถแนบฟิลด์จำนวนเท่าใดก็ได้

มันยังค่อนข้างลำบากเนื่องจากคุณต้องเพิ่มฟิลด์การรวบรวมฟิลด์ลงในเนื้อหาทุกประเภท ที่กล่าวว่าหากคุณเพิ่ม 5 หรือ 6 ช่องไปยังหลายประเภทเนื้อหาคุณจะต้องกำหนดค่าเริ่มต้น 5 หรือ 6 สาขาหนึ่งครั้งในการรวบรวมฟิลด์

ต่อจากนั้นคุณสร้างฟิลด์การรวบรวมฟิลด์ (เพื่อให้เกิดข้อโต้แย้งลองเรียกมันว่าfield_collection_field) ในประเภทเนื้อหาหนึ่งของคุณจากนั้นใช้ฟิลด์เดียวกันซ้ำในรายการอื่นทั้งหมด

ดังที่ฉันได้กล่าวไว้คุณยังคงต้องกำหนดค่าหนึ่งฟิลด์สำหรับจำนวนเนื้อหา x .. แต่มันจะดีกว่าการสร้าง 10 ฟิลด์ใน 10 ประเภทเนื้อหา (เช่น)


aah..sorry ฉันเพิ่งอ่านคำถามของคุณอีกครั้งและต้องการเพียงหนึ่งฟิลด์ ขออภัยที่เสียเวลา> _ <
Chapabu

ที่กล่าวว่าคุณสามารถใส่เขตข้อมูลนี้ลงในคอลเลกชันของเขตข้อมูลและกำหนดค่าตามที่คุณต้องการจากนั้นอ้างอิงคอลเลกชันของเขตข้อมูลที่มีเขตข้อมูลที่กำหนดค่าไว้แล้ว อย่างไรก็ตามนี่เป็นเพียงเล็กน้อยมากเกินไป
Chapabu

ไม่มีปัญหา Chapabu นี้ยังเป็นข้อมูลที่เป็นประโยชน์ต่อไปในกรณีที่ฉันต้องทำอะไรแบบนี้ไปตามถนน
เลสเตอร์พีบอดี

1

หากคุณจัดการฐานข้อมูลได้โดยตรงอินสแตนซ์ของฟิลด์จะถูกเก็บไว้ในตาราง {field_config_instance} คุณสามารถเพิ่ม / กำหนดค่าฟิลด์ของคุณสำหรับประเภทเนื้อหาหนึ่งประเภทจากนั้นค้นหาระเบียนในตารางฐานข้อมูลและทำซ้ำ

คุณจะต้องเปลี่ยนค่าคอลัมน์สองค่าในแถวที่ซ้ำกัน:

  • id: ควรเป็นจำนวนเต็มใหม่ที่ไม่ซ้ำกับตาราง
  • บันเดิล: ควรเป็นชื่อเครื่องของประเภทเนื้อหาใหม่
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.