Продажные цены уровня Magento? - PullRequest
3 голосов
/ 13 февраля 2012

Я пытался отразить некоторые функции в Magento (v1.6), как видно на другом сайте.В этом примере владелец магазина настроил возможность применения продажных цен к уровню.(скорее всего, tierprices.phtml в качестве оболочки), применяя продажную цену (скорее всего, в продажах admin / product / price)

Я пытался выяснить, как именно это делается, но пока несделал какой-то прогресс на этом, насколько.Кто-нибудь имеет какие-либо идеи, как это было построено?

Вот пример веб-сайта http://www.epromos.com/product/2801001.html

Вот код таблицы:

    if($_tierPrices) {
        echo '<style>
                .strikeRow      {text-decoration: line-through;}
                .saleRow td     {color:red;}
                .quantityRow    {background: #eef} 
                td              {padding:3px 9px; border: 1px solid #fc0;} 
            </style>';          // temporary styling

        $q = "<td>Quantity</td>";
        $p = "<td>{$_product->getName()}</td>";
        $s = "<td>Reduced Price</td>";

        foreach ($_tierPrices as &$tier) { 
        #$tier['tier_sale'] = '0.00';   // trick the dump into thinking there is a product sale
            if($tier['price_qty'])      { $q .= "<td>{$tier['price_qty']}</td>"; }
            if($tier['price'])          { $p .= "<td>".number_format($tier['price'], 2, '.', '')."</td>"; }
            if($tier['tier_sale'])      { $s .= "<td>{$tier['tier_sale']}</td>"; }
        }

        $q = "<tr class='quantityRow'>{$q}</tr>";
        $p = ($_tierPrices[0]['tier_sale'])? "<tr class='strikeRow'>{$p}</tr>"  : "<tr>{$p}</tr>";
        $s = ($_tierPrices[0]['tier_sale'])? "<tr class='saleRow'>{$s}</tr>"    : '';

        echo "<tbody>$q $p $s</tbody></table>";

    }

И полный источник:

<?php
/**
 * @see Mage_Catalog_Block_Product_View
 */
$_product = $this->getProduct();
$_tierPrices = $this->getTierPrices();
$_finalPriceInclTax = $this->helper('tax')->getPrice($_product, $_product->getFinalPrice(), true);

/** @var $_catalogHelper Mage_Catalog_Helper_Data */
$_catalogHelper = Mage::helper('catalog');

$_weeeTaxAmount = Mage::helper('weee')->getAmountForDisplay($_product);

if (Mage::helper('weee')->typeOfDisplay($_product, array(1,2,4))) {
    $_weeeTaxAttributes = Mage::helper('weee')->getProductWeeeAttributesForDisplay($_product);
}

 if (count($_tierPrices) > 0) { 

    // start table group with class type if  (obj)getInGrouped() == 1
    echo ($this->getInGrouped()) ? '<table class="tier-prices-grouped product-pricing-grouped">' : '<table class="tier-prices product-pricing">'; 

    // assign tier pricing to $_tierPrices
    if ($this->getInGrouped()) {
         $_tierPrices = $this->getTierPrices($_product);
    }

        Mage::helper('weee')->processTierPrices($_product, $_tierPrices);

    foreach ($_tierPrices as $_price) {

        echo '<tr>';

        if ($_catalogHelper->canApplyMsrp($_product)) {

            if ($this->getInGrouped()) {

                echo $this->__('Buy %1$s for', $_price['price_qty']) .':';

            } else { 

                echo $this->__('Buy %1$s', $_price['price_qty']);

            } 

        } else {

                if ($this->helper('tax')->displayBothPrices()) {

                    if (Mage::helper('weee')->typeOfDisplay($_product, 0)) {

                        echo $this->__('Buy %1$s for %2$s (%3$s incl. tax) each', $_price['price_qty'], $_price['formated_price_incl_weee_only'], $_price['formated_price_incl_weee']);

                    } elseif(Mage::helper('weee')->typeOfDisplay($_product, 1)) {

                            echo $this->__('Buy %1$s for %2$s', $_price['price_qty'], $_price['formated_price_incl_weee_only']);

                            if ($_weeeTaxAttributes) {

                                echo '(<small>';
                                echo $this->__('%1$s incl tax.', $_price['formated_price_incl_weee']);

                                $separator = ' + '; 

                                    foreach ($_weeeTaxAttributes as $_attribute) {

                                        echo $separator;
                                        echo $_attribute->getName() .': '. Mage::helper('core')->currency($_attribute->getAmount());

                                    }

                                echo '</small>)';

                            }

                            echo $this->__('each');

                    } elseif(Mage::helper('weee')->typeOfDisplay($_product, 4)) {

                            echo $this->__('Buy %1$s for %2$s', $_price['price_qty'], $_price['formated_price_incl_weee_only']);

                            if ($_weeeTaxAttributes) {

                                echo '(<small>';
                                echo $this->__('%1$s incl tax.', $_price['formated_price_incl_weee']);

                                $separator = ' + '; 

                                    foreach ($_weeeTaxAttributes as $_attribute) {

                                        echo $separator;
                                        echo $_attribute->getName() .': '. Mage::helper('core')->currency($_attribute->getAmount()+$_attribute->getTaxAmount());

                                    }

                                echo '</small>)';

                            }

                            echo $this->__('each');

                    } elseif(Mage::helper('weee')->typeOfDisplay($_product, 2)) {

                            echo $this->__('Buy %1$s for %2$s', $_price['price_qty'], $_price['formated_price']);

                            if ($_weeeTaxAttributes) {

                                echo '(<small>';

                                    foreach ($_weeeTaxAttributes as $_attribute) {

                                        echo $_attribute->getName() .': '. Mage::helper('core')->currency($_attribute->getAmount());

                                    }

                                echo $this->__('Total incl. Tax: %1$s', $_price['formated_price_incl_weee']);
                                echo '</small>)';

                            }

                            echo $this->__('each');

                    } else {

                            echo $this->__('Buy %1$s for %2$s (%3$s incl. tax) each', $_price['price_qty'], $_price['formated_price'], $_price['formated_price_incl_tax']);

                    }

                } else {

                    if ($this->helper('tax')->displayPriceIncludingTax()) {

                        if (Mage::helper('weee')->typeOfDisplay($_product, 0)) {

                                echo $this->__('Buy %1$s for %2$s each', $_price['price_qty'], $_price['formated_price_incl_weee']);

                        } elseif(Mage::helper('weee')->typeOfDisplay($_product, 1)) {

                                echo $this->__('Buy %1$s for %2$s', $_price['price_qty'], $_price['formated_price_incl_weee']);

                                if ($_weeeTaxAttributes) {

                                    echo '(<small>';
                                    $separator = ''; 

                                    foreach ($_weeeTaxAttributes as $_attribute) {

                                            echo $separator;
                                            echo $_attribute->getName() .': '. Mage::helper('core')->currency($_attribute->getAmount());

                                        $separator = ' + '; 

                                    }

                                    echo '</small>)';

                                }

                                echo $this->__('each');

                        } elseif(Mage::helper('weee')->typeOfDisplay($_product, 4)) { 

                                echo $this->__('Buy %1$s for %2$s', $_price['price_qty'], $_price['formated_price_incl_weee']);

                                if ($_weeeTaxAttributes) {

                                    echo '(<small>';
                                    $separator = ''; 

                                    foreach ($_weeeTaxAttributes as $_attribute) {

                                            echo $separator;
                                            echo $_attribute->getName() .': '. Mage::helper('core')->currency($_attribute->getAmount()+$_attribute->getTaxAmount());

                                        $separator = ' + ';

                                    } 

                                    echo '</small>)';

                                }

                                echo $this->__('each');

                        } elseif(Mage::helper('weee')->typeOfDisplay($_product, 2)) {

                                echo $this->__('Buy %1$s for %2$s', $_price['price_qty'], $_price['formated_price_incl_tax']);

                                if ($_weeeTaxAttributes) {

                                    echo '(<small>';

                                        foreach ($_weeeTaxAttributes as $_attribute) {

                                            echo $_attribute->getName() .': '. Mage::helper('core')->currency($_attribute->getAmount());

                                        }

                                    echo $this->__('Total incl. Tax: %1$s', $_price['formated_price_incl_weee']);
                                    echo '</small>)';

                                }

                                echo $this->__('each');

                        } else {

                                echo $this->__('Buy %1$s for %2$s each', $_price['price_qty'], $_price['formated_price_incl_tax']);
                        }

                    } else {

                        if (Mage::helper('weee')->typeOfDisplay($_product, 0)) {

                                echo $this->__('Buy %1$s for %2$s each', $_price['price_qty'], $_price['formated_price_incl_weee_only']);

                        } elseif(Mage::helper('weee')->typeOfDisplay($_product, 1)) {

                                echo $this->__('Buy %1$s for %2$s', $_price['price_qty'], $_price['formated_price_incl_weee_only']);

                                if ($_weeeTaxAttributes) {

                                    echo '(<small>';
                                    $separator = ''; 

                                        foreach ($_weeeTaxAttributes as $_attribute) {

                                            echo $separator;
                                            echo $_attribute->getName(); ?>: <?php echo Mage::helper('core')->currency($_attribute->getAmount());

                                        $separator = ' + '; 

                                        }

                                    echo '</small>)';

                                }

                                echo $this->__('each');

                        } elseif(Mage::helper('weee')->typeOfDisplay($_product, 4)) {

                                echo $this->__('Buy %1$s for %2$s', $_price['price_qty'], $_price['formated_price_incl_weee_only']);

                                if ($_weeeTaxAttributes) {

                                    echo '(<small>';
                                    $separator = ''; 

                                        foreach ($_weeeTaxAttributes as $_attribute) {

                                            echo $separator;
                                            echo $_attribute->getName(); ?>: <?php echo Mage::helper('core')->currency($_attribute->getAmount()+$_attribute->getTaxAmount());

                                        $separator = ' + '; 

                                        }

                                    echo '</small>)';

                                }

                                echo $this->__('each');

                        } elseif(Mage::helper('weee')->typeOfDisplay($_product, 2)) {

                                echo $this->__('Buy %1$s for %2$s', $_price['price_qty'], $_price['formated_price']);

                                if ($_weeeTaxAttributes) {

                                    echo '(<small>';

                                        foreach ($_weeeTaxAttributes as $_attribute) {

                                            echo $_attribute->getName(); ?>: <?php echo Mage::helper('core')->currency($_attribute->getAmount());

                                        }

                                    echo $this->__('Total incl. Tax: %1$s', $_price['formated_price_incl_weee_only']);
                                    echo '</small>)';

                                }

                                echo $this->__('each');

                        } else {

                                // concern
                                //echo $this->__('Buy %1$s for %2$s each', $_price['price_qty'], $_price['formated_price']);

                                $priceSchema['quantity'][] =  $_price['price_qty'];
                                $priceSchema['formated_price'][] =  $_price['formated_price'];

                        }


                    } 

        }


        } // Can apply MSRP

        if (!$this->getInGrouped()) {

        // we need this ~

            // funky ass OR switch, can i rework this in a saner way?
            if( ($_product->getPrice() == $_product->getFinalPrice() && $_product->getPrice() > $_price['price'])
             || ($_product->getPrice() != $_product->getFinalPrice() &&  $_product->getFinalPrice() > $_price['price']) ) {

//               echo ' '. $this->__('and') .'&nbsp;<strong class="benefit">'. $this->__('save') .'&nbsp;'. $_price['savePercent'] .'%';

            } 

//          echo '</strong>'; // why the hell isn't this in the OR switch??? 

        // we need this ~

        }

        if ($_catalogHelper->isShowPriceOnGesture($_product)) {

            $popupId = 'msrp-popup-' . $_product->getId() . $this->helper('core')->getRandomString(20);

            echo '<a href="#" id="'. $popupId .'">'. $this->__('Click for price') .'</a>';
            echo '<script type="text/javascript">';

            if (!$this->getInGrouped()) {

                echo 'var newLink = {';

                    echo 'url: "'. $this->getAddToCartUrl($_product, array('qty' => $_price['price_qty'])) .'",';
                    echo 'qty: "'. $_price['price_qty'] .'"';

                echo '};';

            } else {

                echo 'var newLink = {';

                    echo 'url: "'. $this->getAddToCartUrl($_product, array('qty' => $_price['price_qty'])) .'",';
                    echo 'notUseForm: true';

                echo '};';

            }

                echo 'Catalog.Map.addHelpLink(';

                    echo "$('{$popupId}'),";
                    echo '"'. $_product->getName() .'",';
                    echo json_encode($_price['real_price_html']) .',';
                    echo '"'. $this->helper('core')->currency($_product->getMsrp(),true,false) .'",';
                    echo 'newLink';

                echo ');';

            echo '</script>';

        } else {

            echo '<span class="msrp-price-hide-message">'. $_catalogHelper->getMsrpPriceMessage($_product) .'</span>';

        }

    }
}

    if($_tierPrices) {
        echo '<style>
                .strikeRow      {text-decoration: line-through;}
                .saleRow td     {color:red;}
                .quantityRow    {background: #eef} 
                td              {padding:3px 9px; border: 1px solid #fc0;} 
            </style>';          // temporary styling

        $q = "<td>Quantity</td>";
        $p = "<td>{$_product->getName()}</td>";
        $s = "<td>Reduced Price</td>";

        foreach ($_tierPrices as &$tier) { 
        #$tier['tier_sale'] = '0.00';   // trick the dump into thinking there is a product sale
            if($tier['price_qty'])      { $q .= "<td>{$tier['price_qty']}</td>"; }
            if($tier['price'])          { $p .= "<td>".number_format($tier['price'], 2, '.', '')."</td>"; }
            if($tier['tier_sale'])      { $s .= "<td>{$tier['tier_sale']}</td>"; }
        }

        $q = "<tr class='quantityRow'>{$q}</tr>";
        $p = ($_tierPrices[0]['tier_sale'])? "<tr class='strikeRow'>{$p}</tr>"  : "<tr>{$p}</tr>";
        $s = ($_tierPrices[0]['tier_sale'])? "<tr class='saleRow'>{$s}</tr>"    : '';

        echo "<tbody>$q $p $s</tbody></table>";

    }
?>

Ответы [ 2 ]

2 голосов
/ 13 февраля 2012

Я почти уверен, что вы ищете абсолютную цену для опционов независимо от уровня, если да, то вот ссылка на то, как это можно сделать:

http://www.magentocommerce.com/wiki/5_-_modules_and_development/catalog/use-absolute-price-for-custom-options

1 голос
/ 14 февраля 2012

Вот быстрое решение для вас.

Вы можете использовать поле «стоимость» продукта, чтобы определить процент, на который розничная цена выше, чем ваша цена.По умолчанию поле «стоимость» используется в качестве напоминания о том, сколько вы заплатили за продукт, и не используется нигде в интерфейсе.

Затем перейдите в шаблоны / template / catalog / product / view / tierprices.phtml вашей темы и добавьте следующие строки после строки $_product = $this->getProduct();:

$multiplier = $_product->getData('cost');
$multiplier = $multiplier ? $multiplier : 1;

И следующую строку между <?php endif; ?> и <?php if (!$this->getInGrouped()): ?>:

Retail price: <?php echo $_coreHelper->currency($_price['price']*$multiplier, true, false) ?>

I'mуверен, что вы сможете стилизовать его, как вы хотите.Пожалуйста, дайте мне знать, если что-то неясно.

...