Puncte:0

Cum pot fi importate Commerce Stores cu Feed-uri?

drapel cn

Încerc să configurez un feed pentru a importa entități de magazin Commerce.

Am instalat modulul Feeds și Feeduri de comerț modul.

Apoi am creat un flux de fișiere CSV cu următoarele mapări:

  • Nume: numele magazinului
  • E-mail: stocați notificările prin e-mail
  • Moneda: moneda implicită
  • Fus orar: stocați fusul orar

Cu toate acestea, când încerc să import feedul, primesc o eroare:

Adresă (adresă): această valoare nu trebuie să fie nulă. Vă rugăm să vă verificați mapări.

Acest lucru are sens deoarece nu am setat o mapare pentru adresa.

Cu toate acestea, în mapări, nu văd nicio opțiune pentru adresa:

opțiunile de import din magazinul de fluxuri

Feed-urile are suport pentru câmpurile Adresă, deci ce trebuie să fac pentru a seta câmpul pentru adresa entității magazinului?

No Sssweat avatar
drapel ua
Fluxurile de comerț, se spune în descrierea care este [pentru produse](https://git.drupalcode.org/project/commerce_feeds/-/blob/8.x-1.x/commerce_feeds.info.yml#L3) și nu mentioneaza magazine. Integrarea câmpului de adresă a fluxurilor a fost realizată prin intermediul [modulului câmpului de adresă](https://www.drupal.org/project/address/issues/2882589). Așadar, va trebui să vă uitați la codul modulului de câmpuri și fluxuri de adrese pentru a încerca să aflați unde este problema. De asemenea, verificați din nou dacă formularul de magazin al modulului de comerț utilizează într-adevăr modulul câmpului de adresă.
No Sssweat avatar
drapel ua
O alternativă pe care o puteți lua în considerare este utilizarea Drupal Core's migrate. https://drupal.stackexchange.com/questions/208908/migrate-address-field
drapel cn
@NoSssweat Mulțumesc, se pare că câmpul Adresă adăugat în magazine nu este standard (de exemplu, nu apare în UI Field). Așa că încerc să-mi dau seama dacă este posibil să-l tratez cumva ca pe un câmp obișnuit de adresă.
Puncte:0
drapel cn

În prezent, nu există suport pentru importarea magazinelor cu Feed-uri sau Commerce Feed-uri. am făcut o cerere de caracteristică în coada de probleme pentru Feeduri de comerț.

Între timp, am configurat un tip de feed pentru importul magazinelor Commerce care utilizează mapări pentru fiecare câmp, cu excepția adresei (pentru că nu există suport pentru adresă).

Vreau să îmi pot actualiza magazinele, așa că acum folosesc acest feed pentru a le actualiza, dar creez manual entitățile magazin în hook_module_update() așa cum se arată mai jos.

utilizați \Drupal\commerce_store\Entity\Store;

MYMODULE_update_9001() {
  // Valoarea implicită a adresei de utilizat.
  $address_default = [
    'country_code' => 'JP',
    'administrative_area' => 'Tokio',
    'locality' => 'Loc',
    'postal_code' => '111-1111',
    'address_line1' => 'Undeva',
    'address_line2' => 'Undeva',
  ];

  // Găsiți ID-ul tipului de feed al magazinului pe care dorim să-l folosim pentru a actualiza acest magazin.
  $store_feed_id_query = 
 \Drupal::entityQuery('feeds_feed')
    ->condition('tip', 'tip_aliment_magazin_nume_maşină');
  $store_feed_result = $store_feed_id_query->execute();
  $store_feed_id = 0;
  dacă (isset($store_feed_result)) {
    // Necesitatea de a repeta rezultatele; ar trebui să existe un singur rezultat, dar dacă există mai multe, luați-l pe cel mai recent.
    foreach ($store_feed_result ca $only_result) {
      $store_feed_id = $numai_rezultat;
    }
  }
  dacă ($store_feed_id > 0) {
    $magazin = Store::create([
      'type' => 'tip_magazin_nume_mașină',
      'name' => 'Magazinul meu minunat',
      'mail' => '[email protected]',
      'default_currency' => 'JPY',
      'adresă' => $address_default,
      'timezone' => 'Asia/Tokyo',
      'is_default' => 1,
      'path' => '/magazin',
      'uid' => 2,
    ]);
    $magazin->feeds_item->target_id = $store_feed_id;
    $store->feeds_item->guid = 'my-store-id'; // Opțional, setat numai dacă utilizați GUID pentru a face feedul dvs. unic.
    $magazin->salvare();
  } altfel {
    throw new \Exception("Nu s-a putut obține ID-ul feedului magazinului: $store_feed_id");
  }
}

Rețineți că în mapările mele pentru Fluxează articolul câmp, am stabilit GUID să fie valoarea unică. Acest lucru îmi permite să folosesc tipul meu de feed pentru a actualiza valorile magazinului. Mai multe informații despre lucrul cu Elementele de feed în mod programatic.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.