Xem: $ sản phẩm-> getTypeInstance () -> get SẢNtByAttribut ($ PropertiesInfo, $ sản phẩm); từ Mage_Catalog_Model_Product_Type_Configurable
.
Biên tập:
Đây là một câu hỏi giống như những câu hỏi hấp dẫn từ các cuộc phỏng vấn việc làm. Bạn có cần điều này trên trang sản phẩm cấu hình trên frontend?
Trong app/code/base/default/template/catalog/product/type/options/configurable.phtml
đó có:
var spConfig = new Product.Config(<?php echo $this->getJsonConfig() ?>);
Bạn cần mở rộng đối tượng này. Hoặc thêm chức năng của bạn trong lớp hoặc mở rộng một chức năng hiện có mà bạn cần. http://prototypejs.org/learn/ class-inherribution
Trong cấu hình JSON được truyền cho spConfig theo mặc định, có options
khóa và products
khóa sâu hơn . Bạn có thể sử dụng cấu hình này trong chức năng JS của bạn. Trên bất kỳ trang sản phẩm có thể định cấu hình nào, hãy dán đối tượng JSON và định dạng nó bằng một công cụ để dễ hiểu. JSON được xây dựng trong Mage_Catalog_Block_Product_View_Type_Configurable::getJsonConfig()
.
Trong lớp JS có:
this.settings.each(function(element){
Event.observe(element, 'change', this.configure.bind(this))
}.bind(this));
Trong configureElement
hàm có cuộc gọi:
this.reloadPrice();
Trong chức năng, reloadPrice
việc lặp lại trên danh sách thả xuống được thực hiện. Mã của bạn nên bắt chước lần lặp này để kiểm tra xem tất cả các danh sách thả xuống có sẵn đã được chọn chưa. Khi thành công, mã tùy chỉnh của bạn đi vào.
Đây có phải là một cuộc gọi Ajax để lấy nội dung động không? Tôi sẽ không khuyên bạn nên nó. Thay vào đó, hãy cố gắng có sẵn nội dung / dữ liệu động của các sản phẩm được liên kết trong trang được hiển thị trong một đối tượng JSON được xử lý bởi lớp JS tùy chỉnh của bạn.