回答:
参照:$ product-> getTypeInstance()-> getProductByAttributes($ attributesInfo、$ product); からMage_Catalog_Model_Product_Type_Configurable
。
編集:
これは就職の面接でキャッチーなもののような質問です。フロントエンドの設定可能な製品ページでこれが必要ですか?
でapp/code/base/default/template/catalog/product/type/options/configurable.phtml
あります。
var spConfig = new Product.Config(<?php echo $this->getJsonConfig() ?>);
このオブジェクトを拡張する必要があります。クラスに関数を追加するか、必要な既存の関数を拡張します。http://prototypejs.org/learn/class-inheritance
デフォルトでspConfigに渡されるJSON設定には、options
キーとより深いproducts
キーがあります。JS関数でこの構成を使用できます。構成可能な製品ページにJSONオブジェクトをコピーして貼り付け、理解しやすいようにツールでフォーマットします。JSONは組み込みですMage_Catalog_Block_Product_View_Type_Configurable::getJsonConfig()
。
JSクラスには次のものがあります。
this.settings.each(function(element){
Event.observe(element, 'change', this.configure.bind(this))
}.bind(this));
configureElement
関数呼び出しがあります:
this.reloadPrice();
関数reloadPrice
では、ドロップダウンの反復が行われます。コードはこの反復を模倣して、使用可能なすべてのドロップダウンが選択されているかどうかを確認する必要があります。成功すると、カスタムコードが登場します。
動的コンテンツをフェッチするためのAjax呼び出しですか?私はそれをお勧めしません。代わりに、カスタムJSクラスによって処理されるJSONオブジェクトのレンダリングされたページで、関連製品の動的コンテンツ/データを利用できるようにしてください。
ユーザーが選択したら、これを試して最終的なシンプルな製品IDを取得します。
カスタムモジュールのphtmlファイルではproductId
、次のコードを使用して、サイズや色などの構成およびスーパー属性の値を取得できます
<?php
$_product = $this->getProduct();
$productId = $_product->getId();
$AllowAttributes=$_product->getTypeInstance(true)->getConfigurableAttributes($_product);
$attr1 = 0;
foreach($AllowAttributes as $attribute) {
$productAttribute = $attribute->getProductAttribute();
$attr2 = $productAttribute->getId();
if($attr1 == 0){
$attr1 = $attr2;
}
}
?>
使用することによりproductId
、color
およびsize
カスタムモジュールAPI関数(例への呼び出しgetProductInfo()
あなたのPHTMLファイルから)のjQueryを使用して、あなたのAPIの場所にコードを
function getProductInfo($productId,$color,$size){
$nextarr = array();
$productData = array();
$product = Mage::getModel('catalog/product')->load($productId);
$configurable= Mage::getModel('catalog/product_type_configurable')->setProduct($product);
$simpleCollection = $configurable->getUsedProductCollection()
->addAttributeToSelect('*')
->addAttributeToFilter('color',$color)
->addAttributeToFilter('size',$size)
->addFilterByRequiredOptions();
if(!empty($simpleCollection)){
$data = array();
foreach($simpleCollection as $simple){
$simpleProductId = $simple->getId();
}
}
return $simpleProductId;
}
簡単な製品の詳細が必要な場合は、以下のコードを試してください
$order=Mage::getModel("sales/order")->load(5);
foreach ($order->getAllItems() as $item) {
if (!$item->isDeleted() && !$item->getParentItemId()) {
echo $item->getName()."-".$item->getSku()."<br/>";
$Options=$item->getData('product_options');
echo "<pre>";
print_r(unserialize($Options));
echo "</pre>";
}}
説明:$オプションを提供しますsimple product super_attribute value
とvariance text value etc
、あなたが取得したい.IF simple product id
その後、ロードする必要がproduct by $item->getSku();
SKUはギブですsimple product sku
$product=Mage::getModel("catalog/product")->loadByAttribute('sku',$item->getSku());
引用したい場合は、変更してください
$quote = Mage::getSingleton('checkout/session')->getQuote();
$cartItems = $quote->getAllVisibleItems();
foreach ($cartItems as $item)
Magento 2の次のコードを使用
$superAttribute = [$size_id => $sel_propduct_size, $touch_id => $sel_propduct_touch, $color_id => $sel_propduct_color];
$childProduct = $product->getTypeInstance()->getProductByAttributes($superAttribute, $product);
$child_product_id = $childProduct->getID();