ปัจจุบันยังไม่รองรับการนำเข้าร้านค้าด้วย Feeds หรือ Commerce Feeds ฉันทำ คำขอฟีเจอร์ในคิวปัญหา Commerce Feeds
ในระหว่างนี้ ฉันได้ตั้งค่าประเภทฟีดสำหรับการนำเข้าร้านค้า Commerce ที่ใช้การแมปสำหรับทุกฟิลด์ยกเว้นที่อยู่ (เนื่องจากไม่มีการสนับสนุนสำหรับที่อยู่)
ฉันต้องการอัปเดตร้านค้าของฉัน ดังนั้นฉันจึงใช้ฟีดนี้เพื่ออัปเดตร้านค้า แต่การสร้างเอนทิตีร้านค้าด้วยตนเองใน hook_module_update()
ดังที่แสดงด้านล่าง
ใช้ \Drupal\commerce_store\Entity\Store;
MYMODULE_update_9001() {
// ค่าที่อยู่เริ่มต้นที่จะใช้
$address_default = [
'country_code' => 'JP',
'administrative_area' => 'โตเกียว',
'locality' => 'สถานที่',
'postal_code' => '111-1111',
'address_line1' => 'สถานที่',
'address_line2' => 'ที่ไหนสักแห่ง',
];
// ค้นหา ID สำหรับประเภทฟีดของร้านค้าที่เราต้องการใช้เพื่ออัปเดตร้านค้านี้
$store_feed_id_query =
\Drupal::entityQuery('feeds_feed')
->เงื่อนไข ('ประเภท', 'store_feed_type_machine_name');
$store_feed_result = $store_feed_id_query->ดำเนินการ ();
$store_feed_id = 0;
ถ้า (isset($store_feed_result)) {
// จำเป็นต้องทำซ้ำผ่านผลลัพธ์; ควรมีเพียงผลลัพธ์เดียว แต่ถ้ามีหลายรายการ ให้เลือกผลลัพธ์ล่าสุด
แต่ละรายการ ($store_feed_result เป็น $only_result) {
$store_feed_id = $only_result;
}
}
ถ้า ($store_feed_id > 0) {
$store = ร้านค้า::สร้าง([
'type' => 'store_type_machine_name',
'name' => 'ร้านสุดเจ๋งของฉัน',
'เมล' => '[email protected]',
'default_currency' => 'เยน',
'ที่อยู่' => $address_default,
'เขตเวลา' => 'เอเชีย/โตเกียว',
'is_default' => 1,
'path' => '/ร้านค้า',
'uid' => 2,
]);
$store->feeds_item->target_id = $store_feed_id;
$store->feeds_item->guid = 'รหัสร้านค้าของฉัน'; // ไม่บังคับ ตั้งค่าเฉพาะเมื่อคุณใช้ GUID เพื่อทำให้ฟีดของคุณไม่ซ้ำใคร
$store->save();
} อื่น {
ส่ง new \Exception("ไม่สามารถรับรหัสฟีดร้านค้า: $store_feed_id");
}
}
โปรดทราบว่าในการแมปของฉันสำหรับ รายการฟีด ฟิลด์ฉันได้ตั้งค่า คู่มือ เพื่อเป็นค่าเฉพาะ สิ่งนี้ทำให้ฉันสามารถใช้ประเภทฟีดของฉันเพื่ออัปเดตค่าที่เก็บได้ ข้อมูลเพิ่มเติมเกี่ยวกับการทำงานกับรายการฟีดโดยทางโปรแกรม