すべての単純な製品で MAP が有効になっている場合に、グループ製品 (検索、カタログなど) の価格が「開始: $XX.XX」と表示される Magento に問題があります。
「カートに追加して価格を表示」のような価格を表示したい
私はこれをコード内の 2 つの可能性のある場所まで追跡しました。
app/code/core/Mage/Catalog/Block/Product/Abstract.php の最初
public function getPriceHtml($product, $displayMinimalPrice = false, $idSuffix = '')
{
$type_id = $product->getTypeId();
if (Mage::helper('catalog')->canApplyMsrp($product)) {
$realPriceHtml = $this->_preparePriceRenderer($type_id)
->setProduct($product)
->setDisplayMinimalPrice($displayMinimalPrice)
->setIdSuffix($idSuffix)
->toHtml();
$product->setAddToCartUrl($this->getAddToCartUrl($product));
$product->setRealPriceHtml($realPriceHtml);
$type_id = $this->_mapRenderer;
}
return $this->_preparePriceRenderer($type_id)
->setProduct($product)
->setDisplayMinimalPrice($displayMinimalPrice)
->setIdSuffix($idSuffix)
->toHtml();
}
if ステートメントをコメントアウトするか、戻る前に $temp_id を msrp に設定するかを判断した場合、それは機能します (ただし、すべての製品で)
そのため、上記の関数にコードを追加して、関連するすべての製品で MAP が有効になっているかどうかを確認するか、関数 canApplyMsrp を変更して確認する必要があります。
アプリ/コード/コア/メイジ/カタログ/ヘルパー/Data.php
public function canApplyMsrp($product, $visibility = null, $checkAssociatedItems = true)
{
if (!$this->isMsrpEnabled()) {
return false;
}
if (is_numeric($product)) {
$product = Mage::getModel('catalog/product')
->setStoreId(Mage::app()->getStore()->getId())
->load($product);
}
if (!$this->canApplyMsrpToProductType($product)) {
return false;
}
$result = $product->getMsrpEnabled();
if ($result == Mage_Catalog_Model_Product_Attribute_Source_Msrp_Type_Enabled::MSRP_ENABLE_USE_CONFIG) {
$result = $this->isMsrpApplyToAll();
}
if (!$product->hasMsrpEnabled() && $this->isMsrpApplyToAll()) {
$result = true;
}
if ($result && $visibility !== null) {
$productVisibility = $product->getMsrpDisplayActualPriceType();
if ($productVisibility == Mage_Catalog_Model_Product_Attribute_Source_Msrp_Type_Price::TYPE_USE_CONFIG) {
$productVisibility = $this->getMsrpDisplayActualPriceType();
}
$result = ($productVisibility == $visibility);
}
if ($product->getTypeInstance(true)->isComposite($product)
&& $checkAssociatedItems
&& (!$result || $visibility !== null)
) {
$resultInOptions = $product->getTypeInstance(true)->isMapEnabledInOptions($product, $visibility);
if ($resultInOptions !== null) {
$result = $resultInOptions;
}
}
return $result;
}
どんな助けでも大歓迎です。
ありがとう。