Hiện tại, không có hỗ trợ nhập cửa hàng bằng Nguồn cấp dữ liệu hoặc Nguồn cấp dữ liệu thương mại. tôi đã làm một yêu cầu tính năng trong hàng đợi sự cố Nguồn cấp dữ liệu thương mại.
Trong thời gian chờ đợi, tôi đã thiết lập loại nguồn cấp dữ liệu để nhập Cửa hàng thương mại sử dụng ánh xạ cho mọi trường trừ địa chỉ (vì không có hỗ trợ cho địa chỉ).
Tôi muốn có thể cập nhật các cửa hàng của mình, vì vậy tôi hiện đang sử dụng nguồn cấp dữ liệu này để cập nhật chúng, nhưng tạo các thực thể cửa hàng theo cách thủ công trong hook_module_update()
như hình bên dưới.
sử dụng \Drupal\commerce_store\Entity\Store;
MYMODULE_update_9001() {
// Giá trị địa chỉ mặc định sẽ sử dụng.
$address_default = [
'mã_nước' => 'JP',
'khu_hành_chính' => 'Tokyo',
'địa phương' => 'Địa điểm',
'mã_bưu_điện' => '111-1111',
'address_line1' => 'Nơi nào đó',
'address_line2' => 'Đâu đó',
];
// Tìm ID cho loại nguồn cấp dữ liệu cửa hàng mà chúng tôi muốn sử dụng để cập nhật cửa hàng này.
$store_feed_id_query =
\Drupal::entityQuery('feeds_feed')
->điều kiện('loại', 'tên_nguồn cấp dữ liệu_loại_máy');
$store_feed_result = $store_feed_id_query->execute();
$store_feed_id = 0;
nếu (isset($store_feed_result)) {
// Cần duyệt qua các kết quả; chỉ nên có một kết quả, nhưng nếu có nhiều kết quả, hãy lấy kết quả gần đây nhất.
foreach ($store_feed_result as $only_result) {
$store_feed_id = $only_result;
}
}
nếu ($store_feed_id > 0) {
$store = Store::create([
'type' => 'store_type_machine_name',
'name' => 'Cửa hàng tuyệt vời của tôi',
'thư' => '[email protected]',
'default_currency' => 'JPY',
'địa chỉ' => $address_default,
'múi giờ' => 'Châu Á/Tokyo',
'is_default' => 1,
'đường dẫn' => '/cửa hàng',
'uid' => 2,
]);
$store->feeds_item->target_id = $store_feed_id;
$store->feeds_item->guid = 'my-store-id'; // Tùy chọn, chỉ đặt nếu bạn đang sử dụng GUID để làm cho nguồn cấp dữ liệu của bạn trở nên độc nhất.
$store->save();
} khác {
throw new \Exception("Không lấy được id nguồn cấp dữ liệu cửa hàng: $store_feed_id");
}
}
Lưu ý rằng trong ánh xạ của tôi cho Mục nguồn cấp dữ liệu lĩnh vực, tôi đã thiết lập HƯỚNG DẪN thành giá trị duy nhất. Điều này cho phép tôi sử dụng loại nguồn cấp dữ liệu của mình để cập nhật giá trị cửa hàng. Thông tin thêm về cách làm việc với Mục nguồn cấp dữ liệu theo chương trình.