Рейтинг:0

Как можно импортировать коммерческие магазины с фидами?

флаг cn

Я пытаюсь настроить фид для импорта объектов Commerce store.

Я установил модуль Feeds и Коммерческие каналы модуль.

Затем я создал фид файла CSV со следующими сопоставлениями:

  • Имя: Название магазина
  • Электронная почта: хранить уведомления по электронной почте
  • Валюта: Валюта по умолчанию
  • Часовой пояс: сохранить часовой пояс

Однако, когда я пытаюсь импортировать фид, я получаю сообщение об ошибке:

Адрес (адрес): это значение не должно быть нулевым. Пожалуйста, проверьте ваш сопоставления.

Это имеет смысл, потому что я не устанавливал сопоставление для адреса.

Однако в сопоставлениях я не вижу никакой опции для адреса:

параметры импорта магазина фидов

В фидах есть поддержка адресных полей., так что мне нужно сделать, чтобы установить поле адреса объекта магазина?

No Sssweat avatar
флаг ua
Коммерческие фиды, в описании говорится, что [для продуктов] (https://git.drupalcode.org/project/commerce_feeds/-/blob/8.x-1.x/commerce_feeds.info.yml#L3) и не упоминает магазины. Интеграция поля адреса канала была выполнена через [модуль поля адреса] (https://www.drupal.org/project/address/issues/2882589). Таким образом, вам нужно будет просмотреть код модуля фидов и адресного поля, чтобы попытаться выяснить, в чем проблема. Кроме того, дважды проверьте, что форма магазина модуля коммерции действительно использует модуль поля адреса.
No Sssweat avatar
флаг ua
Альтернативой, которую вы можете рассмотреть, является использование миграции ядра Drupal. https://drupal.stackexchange.com/questions/208908/мигрировать-адрес-поле
флаг cn
@NoSssweat Спасибо, похоже, что поле «Адрес», добавленное в магазины, нестандартно (например, оно не отображается в пользовательском интерфейсе поля). Поэтому я пытаюсь выяснить, можно ли как-то обращаться с ним как с обычным полем адреса.
Рейтинг:0
флаг cn

В настоящее время нет поддержки импорта магазинов с фидами или коммерческими фидами. я сделал запрос функции в очереди задач 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 быть уникальным значением. Это позволяет мне использовать мой тип фида для обновления значений магазина. Дополнительные сведения о программной работе с элементами веб-канала.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.