В настоящее время нет поддержки импорта магазинов с фидами или коммерческими фидами. я сделал запрос функции в очереди задач Commerce Feeds.
Тем временем я настроил тип канала для импорта магазинов Commerce, который использует сопоставления для каждого поля, кроме адреса (поскольку адрес не поддерживается).
Я хочу иметь возможность обновлять свои магазины, поэтому теперь я использую этот фид для их обновления, но создаю объекты магазина вручную в hook_module_update()
как показано ниже.
используйте \Drupal\commerce_store\Entity\Store;
МОЙ МОДУЛЬ_обновление_9001 () {
// Используемое значение адреса по умолчанию.
$адрес_по умолчанию = [
'код_страны' => 'Япония',
'administrative_area' => 'Токио',
'locality' => 'Место',
'почтовый_код' => '111-1111',
'address_line1' => 'Где-то',
'address_line2' => 'Где-то',
];
// Находим идентификатор типа фида магазина, который мы хотим использовать для обновления этого магазина.
$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)) {
// Нужно перебрать результаты; должен быть только один результат, но если их несколько, берите самый последний.
foreach ($store_feed_result как $only_result) {
$store_feed_id = $only_result;
}
}
если ($store_feed_id > 0) {
$store = Магазин::создать([
'тип' => 'store_type_machine_name',
'name' => 'Мой замечательный магазин',
'mail' => '[email protected]',
'default_currency' => 'JPY',
'адрес' => $address_default,
'часовой пояс' => 'Азия/Токио',
'is_default' => 1,
'путь' => '/магазин',
'ид' => 2,
]);
$store->feeds_item->target_id = $store_feed_id;
$store->feeds_item->guid = 'my-store-id'; // Необязательно, устанавливайте, только если вы используете GUID, чтобы сделать ваш фид уникальным.
$магазин->сохранить();
} еще {
throw new \Exception("Не удалось получить идентификатор фида магазина: $store_feed_id");
}
}
Обратите внимание, что в моих сопоставлениях для Элемент фидов поле, я установил GUID быть уникальным значением. Это позволяет мне использовать мой тип фида для обновления значений магазина. Дополнительные сведения о программной работе с элементами веб-канала.