8

次のような製品価格帯を設定する必要があります

下の画像は私の要件です

製品名: $140 - 310 以下のコードを使用します

if(Mage::getSingleton('customer/session')->isLoggedIn())
{
        // Get group Id
        $groupId = Mage::getSingleton('customer/session')->getCustomerGroupId();
}
else
{
        $groupId = 0;
}     
$db = Mage::getSingleton('core/resource')->getConnection('core_write');
$result = $db->query('SELECT price ,final_price, min_price, max_price, tier_price, group_price FROM catalog_product_index_price WHERE entity_id='.$_product->getId().' AND customer_group_id ='.$groupId.' ORDER BY customer_group_id ASC LIMIT 1');
$rows = $result->fetch();

また、構成製品の通常の価格帯も必要です。また、商品名の後の範囲が間違っていると思います。なぜなら、Your Price have a price $135最小値と最大特別価格、および通常価格を取得するにはどうすればよいですか?

どうすればそれを取得できますか?

感謝と敬意

4

4 に答える 4

4

Magento StackExchange の同様の質問に対するこの回答は、作業の良い基礎となります。それを使用して、構成可能な製品が複数の価格変更属性を持つ可能性を考慮に入れた、この問題の解決策を次に示します。

構成可能な製品 ID を受け取り、最小価格から最大価格までの文字列を返す関数として記述しました。必要なコンテキストにそれを組み込む方法はかなり明確なはずです。

function getPriceRange($productId) {

 $max = '';
 $min = '';

 $pricesByAttributeValues = array();

 $product = Mage::getModel('catalog/product')->load($productId); 
 $attributes = $product->getTypeInstance(true)->getConfigurableAttributes($product);
 $basePrice = $product->getFinalPrice();

 foreach ($attributes as $attribute){
    $prices = $attribute->getPrices();
    foreach ($prices as $price){
        if ($price['is_percent']){ //if the price is specified in percents
            $pricesByAttributeValues[$price['value_index']] = (float)$price['pricing_value'] * $basePrice / 100;
        }
        else { //if the price is absolute value
            $pricesByAttributeValues[$price['value_index']] = (float)$price['pricing_value'];
        }
    }
 }


 $simple = $product->getTypeInstance()->getUsedProducts();

 foreach ($simple as $sProduct){
    $totalPrice = $basePrice;

    foreach ($attributes as $attribute){

        $value = $sProduct->getData($attribute->getProductAttribute()->getAttributeCode());
        if (isset($pricesByAttributeValues[$value])){
            $totalPrice += $pricesByAttributeValues[$value];
        }
    }
    if(!$max || $totalPrice > $max)
        $max = $totalPrice;
    if(!$min || $totalPrice < $min)
        $min = $totalPrice;
 }

 return "$min - $max";

}
于 2014-03-02T20:46:52.143 に答える
2

最初にその構成可能な製品のすべての子製品を取得してから、各子製品の価格を取得し、それらを比較して、最高と最低を見つけることができますか?

//load configurable product    
$product = Mage::getModel('catalog/product')->load(some_id);  
//load all children
$childProducts = Mage::getModel('catalog/product_type_configurable')
                    ->getUsedProducts(null,$product);   
foreach($childProducts as $child){
    $_child = Mage::getModel('catalog/product')->load($child->getId());
    $childPrice =  $_child->getPrice();
    //compare the $childPrice
}
于 2013-04-02T11:00:54.010 に答える
1

$product->getMinPrice()とを使用してみてください$product->getMaxPrice()

app/code/core/Mage/Catalog/Model/Resource/Product/Collection.php を見てください。

于 2015-12-20T16:49:27.943 に答える