ฉันจะแก้ไขข้อขัดแย้งนี้ระหว่างโมดูลคุณสมบัติสองโมดูลได้อย่างไร


16

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

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

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

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

คำตอบ:


16

สร้างฟีเจอร์ที่สามที่กำหนดส่วนประกอบ (*) ที่ใช้โดยฟีเจอร์อิสระอีกสองตัว

ในอีกสองคุณลักษณะให้ลบส่วนประกอบที่ตอนนี้อ้างสิทธิ์โดยคุณลักษณะที่สามและแทนให้แสดงคุณสมบัติที่สามเป็นการอ้างอิง

echo 'digraph G {label = "กราฟการพึ่งพา";  โครงสร้าง [ฉลาก = "คุณสมบัติเชิงโครงสร้าง \ n (ฟิลด์, อนุกรมวิธาน)"];  "คุณสมบัติ A \ n (ประเภทเนื้อหา)" -> โครงสร้าง  "คุณสมบัติ B \ n (ประเภทเนื้อหา)" -> โครงสร้าง  };'  |  dot -Tpng> dependency.png

(*) ในฟีเจอร์สำหรับ Drupal 7, ฟังก์ชั่นนี้ยังไม่ได้รับการยืนยัน - ดูhttp://drupal.org/node/1064472และช่วยตรวจสอบรหัสที่เสนอ - แพทช์นี้ได้รับการมุ่งมั่นที่คุณสมบัติ 7.x-2.x


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

3
@Ashlar: แต่ถ้าคำจำกัดความของฟิลด์ในแต่ละคุณสมบัติสองอย่างแรกแตกต่างกัน - คำจำกัดความที่ขัดแย้งกันจะแก้ไขได้อย่างไร? นอกจากนี้โดยทั่วไปมีคำจำกัดความเผด็จการหลายข้อมูลเดียวกันเป็นปัญหา การแชร์ฟิลด์ไม่ใช่ปัญหา แต่มีหลายหน่วยงานที่ระบุว่าฟิลด์ใดเป็นปัญหา
smokris

2
ไม่ฉันกำลังบอกว่าคุณควรกำหนดฟิลด์หนึ่งครั้ง (และกำหนดค่าที่เป็นไปได้ของฟิลด์หนึ่งครั้ง ) ในฟีเจอร์โครงสร้าง - และอ้างอิงฟิลด์นั้นในฟีเจอร์เนื้อหาแต่ละประเภท (Ack ... ฉันเพิ่งรู้ว่าสิ่งที่ฉันเสนอจะถือว่า patch ที่drupal.org/node/1064472ถูกนำไปใช้ซึ่งฉันลืมที่จะพูดถึงคำตอบที่แก้ไข)
smokris

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

1
โปรแกรมแก้ไขที่กล่าวถึงสำหรับคุณสมบัติ D7 ได้รับการมุ่งมั่นที่จะพัฒนา drupal.org/node/1064472#comment-7235792
danbohea

1

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

http://drupal.org/node/1698290


0

ทางออกหนึ่งที่ใช้งานได้สำหรับฉันคือการแนบคุณสมบัติทั้งสองเข้ากับคุณลักษณะที่ใหญ่กว่านี้ซึ่งแก้ไขข้อขัดแย้ง

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