Điểm:0

Làm cách nào để nhập Cửa hàng thương mại bằng Nguồn cấp dữ liệu?

lá cờ cn

Tôi đang cố gắng thiết lập nguồn cấp dữ liệu để nhập các thực thể Cửa hàng thương mại.

Tôi đã cài đặt mô-đun Nguồn cấp dữ liệu và Nguồn cấp dữ liệu thương mại mô-đun.

Sau đó, tôi đã tạo nguồn cấp dữ liệu tệp CSV với các ánh xạ sau:

  • Tên: Tên cửa hàng
  • Email: Lưu trữ thông báo email
  • Tiền tệ: Tiền tệ mặc định
  • Múi giờ: Lưu trữ múi giờ

Tuy nhiên, khi tôi cố gắng nhập nguồn cấp dữ liệu, tôi gặp lỗi:

Địa chỉ (address): Giá trị này không được rỗng. Vui lòng kiểm tra của bạn ánh xạ.

Điều này hợp lý vì tôi không đặt ánh xạ cho địa chỉ.

Tuy nhiên, trong ánh xạ, tôi không thấy bất kỳ tùy chọn nào cho địa chỉ:

tùy chọn nhập cửa hàng nguồn cấp dữ liệu

Nguồn cấp dữ liệu có hỗ trợ cho các trường Địa chỉ, vậy tôi cần làm gì để đặt trường địa chỉ thực thể cửa hàng?

No Sssweat avatar
lá cờ ua
Nguồn cấp dữ liệu thương mại, theo mô tả là [dành cho sản phẩm](https://git.drupalcode.org/project/commerce_feeds/-/blob/8.x-1.x/commerce_feeds.info.yml#L3) và không đề cập đến các cửa hàng. Việc tích hợp trường địa chỉ nguồn cấp dữ liệu được thực hiện thông qua [mô-đun trường địa chỉ](https://www.drupal.org/project/address/issues/2882589). Vì vậy, bạn sẽ cần xem mã nguồn cấp dữ liệu và mã của mô-đun trường địa chỉ để thử và tìm ra vấn đề nằm ở đâu. Ngoài ra, hãy kiểm tra kỹ xem biểu mẫu lưu trữ mô-đun thương mại có thực sự sử dụng mô-đun trường địa chỉ hay không.
No Sssweat avatar
lá cờ ua
Một giải pháp thay thế mà bạn có thể cân nhắc là sử dụng tính năng di chuyển của lõi Drupal. https://drupal.stackexchange.com/questions/208908/migrate-address-field
lá cờ cn
@NoSssweat Cảm ơn, có vẻ như trường Địa chỉ được thêm vào cửa hàng là không chuẩn (ví dụ: trường này không hiển thị trong Giao diện người dùng trường). Vì vậy, tôi đang cố gắng tìm hiểu xem liệu có thể bằng cách nào đó coi nó như một trường Địa chỉ thông thường hay không.
Điểm:0
lá cờ cn

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.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.