ฉันกำลังทำการโยกย้ายจากไซต์ที่ไม่ใช่ Drupal เพื่อวัตถุประสงค์ในการทดสอบ
ฉันมีข้อมูลทั้งหมดในไฟล์ CSV
เนื่องจากฉันยังใหม่กับการย้ายเข้าสู่ Drupal 9 จากภายนอก Drupal ฉันจึงเรียนรู้สิ่งนี้เป็นระยะเล็กๆ ที่ค่อนข้างเรียบง่าย
ข้อมูลต้นทางประกอบด้วยเรคคอร์ดจำนวนมาก ซึ่งหลายเรกคอร์ดมีไฟล์แนบมาด้วย
ไฟล์บางไฟล์แนบกับบันทึกมากกว่าหนึ่งรายการ
บันทึกบางรายการมีการแนบไฟล์หลายไฟล์
"แนบ" ที่นี่หมายถึง URL ถูกเก็บไว้ พร้อมด้วยข้อมูลเมตาเล็กน้อย เช่น คำอธิบายสั้นๆ และประเภท ในฐานข้อมูลนี้ในตารางรวมเพื่อเชื่อมโยงไฟล์กับเร็กคอร์ด
สิ่งที่ฉันต้องการบรรลุในที่สุดใน Drupal:
เรกคอร์ดทั้งหมดเหล่านี้ถูกย้ายเป็นโหนด ไฟล์ที่เข้าร่วมกับสื่อ และที่รวมเข้ากับโหนดที่ถูกต้องโดยการอ้างอิงเอนทิตี เอนทิตีสื่อที่สร้างขึ้นควรมีข้อมูลเมตาเก่า (คำอธิบาย ประเภท) ในฟิลด์ที่กำหนดเอง
ฉันรวบรวมวิธีที่ควรทำคือ:
- โอนย้ายไฟล์ไปยังเอนทิตีไฟล์
- การใช้กลุ่มการย้ายข้อมูล (migration_plus, migrate_tools และโมดูล migrate_source_csv) ให้ใช้ แหล่งข้อมูลเดียวกัน และ migration_lookup เพื่อย้ายเอนทิตีสื่อ
- ย้ายโหนดเข้าและใช้ปลั๊กอินกระบวนการ entity_generate และ value_key ของ ID เป้าหมายหรือบางอย่างเพื่อเชื่อมโยงโหนดกับเอนทิตีสื่อที่เหมาะสม
ไฟล์อยู่ในตำแหน่งที่ต้องอยู่บนเซิร์ฟเวอร์แล้ว และพาธ/URI จะถูกจัดเก็บไว้ในไฟล์ csv พร้อมกับคำอธิบายและประเภท ฟิลด์ ID เฉพาะ และ ID ของแต่ละเรกคอร์ดที่เกี่ยวข้อง
จากจุดเริ่มต้น ฉันพยายามนำเข้าไฟล์ 30 ไฟล์เป็นการนำเข้าแบบสแตนด์อโลน โมดูล migrate_files ดูไม่เหมาะสม ส่วนใหญ่เป็นเพราะฉันไม่สามารถหาวิธีปรับให้เข้ากับสถานการณ์ที่เอนทิตีสื่อกำลังจะดึงข้อมูลฟิลด์จาก csv... และไฟล์ uri's ถูกเก็บไว้ใน csv ด้วย
ดังนั้นฉันคิดว่าฉันจะลองใช้มาตรฐานเป็นส่วนใหญ่
นี่คือ yaml ของฉัน:
uuid: 1bcec3e7-0a49-4473-87a2-6dca09b91abjan-test1
รหัส: fileimptest
ป้ายกำกับ: ทดสอบการนำเข้าไฟล์
การโยกย้ายกลุ่ม: ค่าเริ่มต้น
แหล่งที่มา:
ปลั๊กอิน: 'csv'
เส้นทาง: '/srv/imports/filetest1.tab'
ตัวคั่น: "\t"
สิ่งที่แนบมา: '"'
header_offset: null
รหัส: [ความช่วยเหลือ]
# ไม่ได้ใช้ฟิลด์เหล่านี้ส่วนใหญ่ในการนำเข้าไฟล์
# แต่รวมเพราะอาจจำเป็นสำหรับการจัดกลุ่ม
# และ migrate_lookup ในการนำเข้าสื่อ?
เขตข้อมูล:
0:
ชื่อ: ช่วยเหลือ
ป้ายกำกับ: 'รหัสเฉพาะ'
1:
ชื่อ: ชื่อเรื่อง
ป้ายกำกับ: 'คำอธิบาย'
2:
ชื่อ: formflag
ป้ายกำกับ: 'FormYN'
3:
ชื่อ: เส้นทางใหม่
ป้ายกำกับ: 'เส้นทาง'
4:
ชื่อ: docnum
ป้ายกำกับ: 'หมายเลขเอกสาร'
5:
ชื่อ: doctype
ป้ายกำกับ: 'ประเภทเอกสาร'
กระบวนการ:
uid:
ปลั๊กอิน: default_value
default_value: 179
ยูริ: เส้นทาง
ปลายทาง:
ปลั๊กอิน: เอนทิตี: ไฟล์
ผลลัพธ์คือไฟล์ทดสอบ 30 ไฟล์ของฉันปรากฏในรายการไฟล์ภายใต้ผู้ดูแลระบบ/เนื้อหาโดยมีสถานะเป็นชั่วคราว ลิงก์ดูถูกต้อง แต่การคลิกลิงก์ส่งผลให้การเข้าถึง 403 ถูกปฏิเสธ (การอนุญาตโฟลเดอร์คือ 777 และเป็นของเว็บเซิร์ฟเวอร์)(ฉันใช้ระบบไฟล์ส่วนตัวและอัปโหลดไฟล์หลายไฟล์ผ่านวิดเจ็ตฟิลด์ปกติ: รายการนี้มีสถานะ 'ถาวร' ลิงก์มีลักษณะเหมือนกันนอกเหนือจากไดเร็กทอรีย่อย แต่เปิดตามปกติเมื่อคลิก)
คำถามคือ:
- ฉันทำอะไรผิดจนถึงตอนนี้?
- มีวิธีที่ดีกว่า? (ฉันค่อนข้างแน่ใจว่ามี แต่อะไรนะ?)
(รายละเอียด: uid 179 เป็นเพียงผู้ใช้ที่ฉันสร้างชื่อ "ผู้นำเข้า")
ฉันควรสังเกตว่าฉันได้อ่าน นี้ และ นี้และตัวอย่างมากมายในโมดูลที่เกี่ยวข้อง พวกเขาได้ร่วมกันแจ้งสิ่งที่ฉันคิดขึ้นมาจนถึงระดับที่ฉันเข้าใจพวกเขา)
แก้ไข: "สถานะชั่วคราว" หมายถึงยังไม่มีการใช้งาน ดังนั้นจึงไม่สำคัญ ณ จุดนี้
สิ่งเดียวที่ดูเหมือนผิดปกติกับการนำเข้าการทดสอบนี้คือปัญหาการเข้าถึงถูกปฏิเสธ กระบวนการโยกย้ายขาดบางสิ่งที่จำเป็นต่อการทำงานเต็มรูปแบบของระบบไฟล์ส่วนตัวหรือไม่
บางทีเมื่อใช้ไฟล์ส่วนตัว สามารถดูได้ก็ต่อเมื่อ 'ใช้' กับเอนทิตีอื่น ฉันไม่พบข้อมูลเกี่ยวกับสิ่งนี้หรือหาวิธีทดสอบ
แก้ไข 2: ตามความคิดเห็นและคำตอบด้านล่าง สถานะ 'ชั่วคราว' สามารถตั้งค่าโดยทางโปรแกรมในระหว่างการนำเข้า และการเข้าถึงถูกปฏิเสธเป็นเรื่องปกติภายใต้เงื่อนไขเหล่านี้: เมื่อไฟล์ที่นำเข้ามีทั้ง a) ไม่ได้ใช้ทุกที่และ b) คลิกโดยผู้ใช้อื่นที่ไม่ใช่ uid บนไฟล์