Tôi đang thực hiện di chuyển từ một trang web không phải của Drupal--cho đến nay, vì mục đích thử nghiệm.
Tôi có tất cả dữ liệu trong tệp CSV.
Vì tôi mới chuyển sang Drupal 9 từ bên ngoài Drupal, nên tôi đang học điều này theo từng giai đoạn nhỏ, hơi đơn giản.
Dữ liệu nguồn bao gồm một loạt các bản ghi, nhiều bản ghi có tệp đính kèm.
Một số tệp được đính kèm vào nhiều bản ghi.
Một số bản ghi có nhiều tệp đính kèm.
"Đã đính kèm" ở đây có nghĩa là một URL được lưu trữ, cùng với một chút siêu dữ liệu, chẳng hạn như mô tả ngắn và loại. Trong cơ sở dữ liệu, đây là một bảng nối để liên kết các tệp với các bản ghi.
Những gì tôi muốn đạt được cuối cùng trong Drupal:
Tất cả các bản ghi này được di chuyển vào dưới dạng nút, các tệp được nối với phương tiện và những tệp được nối với đúng nút theo tham chiếu thực thể. Các thực thể phương tiện được creted phải có nội dung meta cũ (mô tả, loại) trong các trường tùy chỉnh.
Tôi thu thập rằng cách này nên được thực hiện là:
- Di chuyển các tệp vào các thực thể tệp
- Sử dụng nhóm di chuyển (mô-đun migration_plus, migrate_tools và migrate_source_csv) sử dụng cùng một nguồn dữ liệu và migration_lookup để di chuyển các thực thể phương tiện
- Di chuyển các nút vào và sử dụng plugin quy trình entity_generate và value_key của ID mục tiêu hoặc thứ gì đó để liên kết các nút với các thực thể phương tiện phù hợp.
Các tệp đã ở đúng vị trí chúng cần trên máy chủ và các đường dẫn/URI được lưu trữ trong tệp csv cùng với mô tả và loại, trường ID duy nhất và ID của từng bản ghi liên quan.
Khi bắt đầu, tôi đã cố gắng nhập 30 tệp dưới dạng nhập độc lập. Mô-đun mig_files có vẻ không phù hợp lắm, chủ yếu là do tôi không thể tìm ra cách điều chỉnh mô-đun đó cho phù hợp với tình huống mà các thực thể phương tiện sẽ lấy dữ liệu trường từ csv... và tệp của uri được lưu trữ trong một csv cũng có.
Vì vậy, tôi nghĩ rằng tôi sẽ thử nó với hầu hết các tiêu chuẩn.
Đây là yaml của tôi:
uuid: 1bcec3e7-0a49-4473-87a2-6dca09b91abjan-test1
id: fileimptest
nhãn: Nhập tệp kiểm tra
nhóm_di chuyển: mặc định
nguồn:
plugin: 'csv'
đường dẫn: '/srv/imports/filetest1.tab'
dấu phân cách: "\t"
bao vây: '"'
tiêu đề_offset: null
id: [trợ giúp]
# không sử dụng hầu hết các trường này trong quá trình nhập tệp
# nhưng bao gồm vì có thể cần thiết để nhóm
# và di chuyển_lookup trong quá trình nhập phương tiện?
lĩnh vực:
0:
tên: viện trợ
nhãn: 'Id duy nhất'
1:
tên: tiêu đề
nhãn: 'mô tả'
2:
tên: biểu mẫu
nhãn: 'FormYN'
3:
tên: đường dẫn mới
nhãn: 'đường dẫn'
4:
tên: donum
nhãn: 'số tài liệu'
5:
tên: tài liệu
nhãn: 'loại tài liệu'
tiến trình:
uid:
plugin: default_value
default_value: 179
uri: đường dẫn
điểm đến:
plugin: thực thể: tập tin
Kết quả là 30 tệp thử nghiệm của tôi đã xuất hiện trong danh sách tệp dưới quyền quản trị/conent với trạng thái tạm thời. Các liên kết có vẻ chính xác, nhưng việc nhấp vào chúng dẫn đến truy cập 403 bị từ chối (quyền đối với thư mục là 777 và thuộc sở hữu của máy chủ web).(Tôi đang sử dụng hệ thống tệp riêng tư và có một số tệp được tải lên thông qua tiện ích trường bình thường: danh sách này có trạng thái 'vĩnh viễn'. Các liên kết trông giống nhau ngoài thư mục con nhưng mở bình thường khi được nhấp.)
Vì vậy, câu hỏi là:
- Tôi đang làm gì sai cho đến nay?
- Có cách nào tốt hơn? (Tôi khá chắc chắn là có, nhưng cái gì?)
(Chi tiết: uid 179 chỉ là người dùng do tôi tạo tên là "nhà nhập khẩu")
Tôi nên lưu ý rằng tôi đã đọc cái này và cái này, và rất nhiều ví dụ trong các mô-đun liên quan. Họ đã cùng nhau thông báo những gì tôi đã nghĩ ra cho đến nay, ở mức độ tôi hiểu họ.)
Chỉnh sửa: "trạng thái tạm thời" chỉ có nghĩa là chưa có mục đích sử dụng nào, vì vậy không quan trọng vào thời điểm này.
Điều duy nhất có vẻ không ổn với quá trình nhập thử nghiệm này là vấn đề truy cập bị từ chối. Quá trình di chuyển thiếu một cái gì đó cần thiết để hoạt động đầy đủ của hệ thống tệp riêng tư?
Có thể khi sử dụng các tệp riêng tư, chúng chỉ có thể được xem nếu 'được sử dụng' trên một thực thể khác? Tôi chưa tìm thấy thông tin về điều này hoặc nghĩ ra cách để kiểm tra nó.
Edit2: theo nhận xét và câu trả lời bên dưới, trạng thái 'tạm thời' có thể được đặt theo chương trình trong quá trình nhập và quyền truy cập bị từ chối là bình thường trong các điều kiện này: khi tệp đã nhập vừa a) không được sử dụng ở bất kỳ đâu và b) được nhấp bởi người dùng khác với uid trên tệp.