Các sản phẩm có thể cấu hình và bộ thuộc tính


18

TL; DR : Có bất kỳ lý do tại sao các sản phẩm đơn giản được liên kết với một sản phẩm có thể định cấu hình phải nằm trong cùng thuộc tính được đặt với chính sản phẩm có thể định cấu hình không? Ý tôi là, có bất kỳ lý do kỹ thuật ? Tôi biết lý do "lẽ thường". Nếu bạn bán một đôi giày thì tất cả các phiên bản tùy thuộc vào màu sắc và kích cỡ cũng phải là giày .
Phiên bản dài : Tôi có nhiệm vụ "hợp nhất" một số sản phẩm có thể cấu hình. Ý tôi là từ 2 trở lên chỉ làm một. Tôi không muốn làm thủ công vì số lượng sản phẩm và tôi không muốn trải qua$product->load(..)->set...()->save()bởi vì lượng thời gian cần thiết để chạy tập lệnh. Vì vậy, tôi đã ngắn gọn quá trình này vì tôi chắc chắn rằng không có sản phẩm đơn giản nào bị chồng chéo. Có một sự kết hợp độc đáo của kích thước và màu sắc. Tôi đã làm điều này:

Mage::getResourceSingleton('catalog/product_type_configurable')
    ->saveProducts($mainConfigrableProduct, $simpleProductIds);

trong đó $simpleProductIdsmột mảng gồm tất cả các id sản phẩm đơn giản được liên kết tất cả với các sản phẩm có thể định cấu hình cần được hợp nhất.
Điều này làm việc hoàn hảo cho hầu hết các sản phẩm, nhưng có một số ít có vấn đề.
Nếu tôi gọi

$productIds = $product->getTypeInstance()->getUsedProductIds() 

Tôi sẽ nhận được tất cả các id sản phẩm đơn giản, nhưng trong phần phụ trợ chỉ xuất hiện một vài trong số chúng. Sau khi đào một thời gian, tôi phát hiện ra rằng những cái duy nhất được hiển thị là những cái trong cùng thuộc tính được đặt làm sản phẩm có thể định cấu hình. Bộ thuộc tính khác rất giống với thuộc tính đầu tiên, chỉ là một số khác biệt nhỏ nhưng nó chứa các thuộc tính cấu hình (kích thước và màu sắc).
Và bây giờ là điều kỳ lạ. Ở frontend tôi dự kiến ​​sẽ thấy tất cả các sản phẩm ($ productIds trong mã ở trên) hoặc chỉ các sản phẩm trong cùng một bộ thuộc tính. Vâng, có một cái gì đó giữa.

  • 20 id sản phẩm được liên kết - 5 kích cỡ, 4 màu
  • 10 sản phẩm được liên kết trong phần phụ trợ - 5 kích cỡ, 2 màu - 2 màu còn lại (10 sản phẩm) nằm trong một bộ thuộc tính khác
  • 15 kết hợp ở lối vào - 5 kích cỡ 3 màu (???)

Tôi đã có thể giải quyết vấn đề bằng cách thay đổi bộ thuộc tính cho các sản phẩm không xuất hiện, nhưng tôi vẫn bối rối.

Lưu ý : Đừng thử điều này ở nhà. Hoặc bạn có thể thử nó ở nhà nhưng không phải trên máy chủ trực tiếp.

Câu trả lời:


13

Sau khi hỏi xung quanh đây là những lý do tôi có. Hy vọng nó đáp ứng cho bạn, mặc dù nó có thể là những gì bạn mong đợi.

  1. Giao diện adminhtml được tạo ra với mục đích làm cho các thương nhân khó có thể hoàn toàn làm hỏng việc.

Vì lý do đó, nhiều tính năng được Magento cung cấp dưới dạng Khung không thể thực hiện được thông qua giao diện người dùng.
Lý do tại sao chỉ các sản phẩm trong cùng một bộ thuộc tính có thể được chọn làm sản phẩm đơn giản được liên kết cho cấu hình là vì đó là những gì có trong thông số kỹ thuật.
Như bạn đã nói, nó có ý nghĩa theo cách đó.

  1. Một lý do khác là suy nghĩ về mục đích của các tập thuộc tính. Một trong những lý do chúng tồn tại là để giảm số lượng thuộc tính và tùy chọn phải được tải và xử lý trong khi yêu cầu. Áp dụng suy nghĩ này cho các cấu hình có ý nghĩa, vì nó là một loại sản phẩm đắt tiền tương đối.

Bởi vì phụ trợ được xây dựng theo cách đó, logic frontend cho cấu hình không bao giờ được mong đợi sẽ xử lý các sản phẩm đơn giản từ các bộ thuộc tính khác nhau.
Đó là lý do tại sao các hạn chế không được thực hiện hoàn toàn ở đó.

Có lẽ sẽ dễ dàng để làm cho cấu hình hoạt động với các mô phỏng từ các bộ thuộc tính khác nhau. Nó không có ý định như vậy.

Tôi đã không hỏi thêm và không nhìn vào bản thân mình để xem chính xác tương tác mã nào tạo ra kết quả lạ trên frontend. Có lẽ nó không quan trọng, vì nếu tôi hiểu chính xác bạn yêu cầu lý do đằng sau quyết định loại trừ các sản phẩm đơn giản khỏi các bộ thuộc tính khác với cấu hình, không phải là giải thích mã.


Cảm ơn Vinai. Tôi đã hy vọng sâu trong tâm trí của tôi cho một lý do "thổi tâm trí". Nó sẽ rất vui :). Đây là một lời giải thích thỏa đáng. Đối với "kết quả lạ", không cần phải đào mã. Tôi sẽ làm điều đó khi tôi sẽ chán. Tôi vẫn có kết xuất DB và cách tái tạo kết quả tương tự. Rất có thể là vì tôi đã bắt vít trực tiếp vào cơ sở dữ liệu. Tôi sẽ đăng một kết quả khi / nếu tôi sẽ tìm thấy một.
Marius

2
Tsk tsk, @Marius - không chạm vào db;)
philwinkle

4
@philwinkle. Tôi biết, tôi biết, vũ trụ sẽ nổ tung nếu làm điều đó. Tôi có thể nói gì? Tôi thích sống nguy hiểm. Để bảo vệ tôi, tôi đã nói "đừng thử điều này trên một máy chủ trực tiếp".
Marius

1
Vẫn đang chờ đợi để làm cho tâm trí của tôi bị thổi bay, quá ... :)
Vinai

2

Chúng tôi sử dụng tiện ích mở rộng có tên RapidFlow của Unirgy (mà tôi không thể đề xuất đủ cao) để nhập và xuất. Một trong những tính năng trong phiên bản Pro cho phép thay đổi bộ thuộc tính. Một cách khác là tạo ra các sản phẩm thông qua nhập CSV. Thỉnh thoảng chúng tôi tạo ra các sản phẩm đơn giản mới cho cấu hình và đôi khi, tình cờ những sản phẩm đơn giản đó có các bộ thuộc tính khác với cha mẹ của chúng.

Rapidflow sẽ vui vẻ nhập các sản phẩm này và thay đổi bộ thuộc tính. Chúng tôi có xu hướng không hài lòng với kết quả. Các sản phẩm có thể định cấu hình được định cấu hình bởi các thuộc tính bên ngoài bộ thuộc tính của chúng không thể hiển thị trong quản trị viên sản phẩm và phải được sửa chữa. Nếu chúng ta không thay đổi tập thuộc tính của cha mẹ, như bạn đã lưu ý, con cái đơn giản là không được liên kết chính xác với cha mẹ của chúng. Chúng tồn tại dưới dạng các thực thể Magento, có thể được chỉnh sửa, nhưng sẽ không xuất hiện dưới dạng trẻ em trên trang sản phẩm mặt trước hoặc danh sách sản phẩm được liên kết của cha mẹ có thể định cấu hình.

Vì vậy, từ quan điểm thuần túy kỹ thuật, có thể các sản phẩm đơn giản nằm trong một bộ thuộc tính khác với cha mẹ của chúng. Nhưng vì hành vi này không được hỗ trợ, ngay cả trong EE, và do đó, Occam's Razor nói rằng khi họ thiết kế Magento, các nhà phát triển Varien không thấy sự cần thiết.


1
Cảm ơn câu trả lời (và khuyến nghị mở rộng) nhưng điều này không trả lời câu hỏi của tôi. Tôi đã nói rằng tôi đã quản lý để giải quyết vấn đề của mình bằng cách thay đổi cơ sở dữ liệu trực tiếp. Tôi biết tôi không nên làm điều đó nhưng tôi có kiến ​​thức tốt về những gì tôi đang làm - và một bản sao lưu cơ sở dữ liệu :). Tôi chỉ tò mò tại sao hạn chế này tồn tại. Theo như "Varien devs không thấy sự cần thiết" Tôi có cảm giác bạn đã sai. Nếu bạn thực hiện một hạn chế thì đó phải là một lý do cho nó.
Marius
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.