วิธีการใช้การอ้างอิงโหนดแบบสองทาง


20

โมดูลการอ้างอิงโหนด (ส่วนประกอบของ CCK) เป็นวิธีที่ยอดเยี่ยมในการสร้างการอ้างอิงหนึ่งโหนดจากอีกโหนดหนึ่ง วิธีที่ดีที่สุดที่จะเปิดเผยความสัมพันธ์แบบสองทางระหว่างทั้งสองคืออะไร? ตัวอย่างด้านล่าง:

ตัวอย่างเช่นในระบบติดตามตั๋วที่มีตั๋วสองใบ (โหนด) A & B คุณสามารถสร้างการอ้างอิงโหนดจากตั๋ว A -> B และทำเครื่องหมาย B ว่าเป็นลูก เมื่อดูตั๋ว A มันเป็นเรื่องไม่สำคัญที่จะแสดงข้อมูลนี้ อย่างไรก็ตามฉันต้องการแสดงความสัมพันธ์นี้เมื่อดูตั๋ว B และแสดงตั๋ว A เป็นรายการหลัก

ข้อกำหนดเดียวกันนี้จะนำไปใช้ในสถานการณ์ที่ไม่เป็นลำดับชั้น (ตั๋ว C & D) โดยมีการอ้างอิงจาก C -> D ความสัมพันธ์ควรปรากฏบนตั๋ว D และ C

คำตอบ:


25

มีโมดูลจำนวนมากที่มีระยะทางของคุณอาจแตกต่างกันไป:

BackReference (Drupal 6 เท่านั้น)

NodeReferrer (รุ่นเบต้าของ Drupal 7)

ความสัมพันธ์ของโหนด (Drupal 6 เท่านั้น)

การอ้างอิงโหนดที่สอดคล้องกัน (การปล่อยเสถียรของ Drupal 7)

การอ้างอิงเอนทิตีที่สอดคล้องกัน (การปล่อย Drupal 7 dev)

การพึ่งพาเนื้อหา (การปล่อยเสถียร Drupal 7)


การอ้างอิงโหนดที่สอดคล้องกันทำงานได้อย่างสมบูรณ์แบบสำหรับฉันและเมื่อ CER มีเสถียรภาพฉันจะสลับไปที่


4

สำหรับ Drupal 6 ตัวเลือกที่ดีที่สุดน่าจะเป็นโมดูล NodeReferrer สำหรับ Drupal 7 ความสัมพันธ์นั้นเหมาะสมกับใบเสร็จ แต่ยังไม่พร้อม


ฉันมักจะใช้โมดูล NodeReferrer สำหรับสิ่งที่คุ้มค่า
electblake

1
โมดูลความสัมพันธ์พร้อมใช้งานแล้วตั้งแต่เดือนกรกฎาคม '12
ted.strauss

ใช่ความสัมพันธ์ดูเหมือนจะเป็นตัวเลือกที่ทรงพลังทีเดียว มิฉะนั้น CER ยังเป็นตัวเลือกที่มีน้ำหนักเบา
shivams

4

หากคุณกำลังใช้ Drupal 7 / Views คุณสามารถสร้างความสัมพันธ์ 'ย้อนกลับ' เพื่อรับรายการของโหนดที่อ้างถึงโหนดที่ระบุ (หรือบางทีผู้ใช้ที่อ้างถึงโหนดที่ระบุ) ตรวจสอบโปรแกรมแก้ไขในปัญหานี้: http://drupal.org/node/1043260

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

[แก้ไข: ตั้งแต่เดิมที่เขียนโพสต์นี้แพทช์ในปัญหาดังกล่าวข้างต้นมุ่งมั่นที่จะอ้างอิงสำหรับ D7 และควรจะเป็นวิธีที่นิยมในการติดต่อกลับ (ใช้งานได้ดีเมื่อต้องการรายชื่อโหนดหรือผู้ใช้ที่อ้างอิงโหนดหรือผู้ใช้อื่น) .]

[แก้ไข 2: หากคุณใช้การอ้างอิงเอนทิตีดูเหมือนว่าโซลูชันที่ต้องการคือการใช้การอ้างอิงเอนทิตีที่สอดคล้องกันและยังมีการซิงโครไนซ์ฟิลด์การอ้างอิงเอนทิตีที่ใช้กันอย่างแพร่หลายน้อยกว่า]


ดูเหมือนว่าการอ้างอิงจะถูกคัดค้านเนื่องจากการอ้างอิงเอนทิตี ไม่แน่ใจว่าจะทิ้งคำตอบนี้ไว้ที่ไหน
Jay

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

3

ในDrupal 7 (ซึ่งคุณระบุไว้) ดูเหมือนว่าวิธีแก้ปัญหาคือการใช้โมดูลการอ้างอิงเอนทิตีร่วมกับโมดูลการซิงโครไนซ์ฟิลด์การอ้างอิง (เอนทิตี)ซึ่งเพิ่มฟังก์ชันที่จำเป็นในการซิงค์ความสัมพันธ์

สามารถทำได้เหมือนกันกับReference Moduleพร้อมโมดูล cnr - วิธีนี้ใช้งานได้ (ฉันกำลังใช้งานบนเว็บไซต์ Drupal 7 แห่งปัจจุบัน) แต่ตอนนี้ล้าสมัย / เลิกใช้แล้วในแนวทางแรกที่ฉันให้

โซลูชันอื่น ๆ ที่กล่าวถึงในคำตอบข้างต้นเกี่ยวข้องกับDrupal 6เท่านั้น(ยกเว้นRelationที่มีศักยภาพที่จะเป็นโมดูลที่ยอดเยี่ยม แต่ตอนนี้ไม่ได้ทำอะไรมากและมีปัญหามากมาย)


การโหวตคำตอบนี้เพราะล่าสุดและ Moshe เป็นสมาชิกอาวุโสของชุมชน Drupal ในคำตอบที่ได้รับการยอมรับโมดูล D7 ที่เสถียรเพียงอย่างเดียวคือ CNR และนั่นถูกคิดค่าเสื่อมราคาในความโปรดปรานของ CER (ซึ่งยังไม่มีการปล่อยที่เสถียรในขณะนี้)
aendrew

1
ความสัมพันธ์ยังไม่มีปัญหามากมายแม้แต่ย้อนกลับไปในเดือนมีนาคม และ Moshe Eshel drupal.org/user/168876 ! = Moshe Weitzman drupal.org/user/23 (ดูที่รหัสนั้น ... ) btw

@chx ฉันรู้สึกประหลาดใจที่เห็นฉันเป็นสมาชิกอาวุโส ... ฉันพยายามเป็นผู้สนับสนุนที่ดีกว่า แต่ฉันไม่คิดว่าฉันจะก้าวขึ้นสู่ระดับของ Moshe ดั้งเดิม เกี่ยวกับโมดูลความสัมพันธ์ฉันยึดตามความคิดเห็นจากคนที่รู้ (ฉันจะไม่ตั้งชื่อ) - ฉันไม่มีโอกาสทดสอบจริง ๆ ในเวลานั้นและอาศัยความเห็นนั้น ฉันกำลังทำงานในโครงการ D7 - ฉันคิดว่าฉันจำเป็นต้องใช้มันดังนั้นฉันจะให้ความเห็นที่อัปเดตของฉันที่นี่เมื่อฉันทำเสร็จแล้ว
Moshe Eshel

2

อีกทางเลือกหนึ่งถ้าคุณกำลังดำเนินการเกี่ยวกับการใช้งานที่กำหนดเองและต้องการวิธีอ้างอิงย้อนกลับแบบตรงไปข้างหน้าคุณสามารถขอnodeapiฟังการsaveดำเนินการและอัปเดตโหนดที่อ้างอิงโดยทางโปรแกรม




0

คุณสามารถใช้โมดูลการพึ่งพาเนื้อหา

มันจะให้ย้อนกลับอ้างอิงผ่านทางแท็บและสนับสนุนต่อไปนี้โมดูล: อ้างอิงโหนดอ้างอิง / นิติบุคคล


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