Magento如何获取/更改/覆盖totals.phtml计算?

thE*_*blE 5 shopping-cart magento

我添加了一个由两个属性计算的产品,并使用自己的计算价格.问题是我不得不重写大计和小计计算...例如覆盖这些东西.

我希望@stackoverflow是一位解决了我的问题的magento大师:-)

我已经更改了/ app/design/frontend/default/gutlauf/template/checkout/cart/item/default.phtml,其中完成了购物车项目的布局.

但现在我有/ app/design/frontend/default/gutlauf/template/checkout/cart/totals.phtml的问题

<table id="shopping-cart-totals-table">
    <col />
    <col width="1" />
    <tfoot>
        <?php echo $this->renderTotals('footer'); ?>
    </tfoot>
    <tbody>
        <?php echo $this->renderTotals(); ?>
    </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

我怎么能得到自己的计算?我想出了块

tax/checkout_grandtotal tax/checkout_subtotal tax/checkout_tax

例如/app/design/frontend/default/gutlauf/template/tax/checkout/grandtotal.phtml

<?php echo $this->helper('checkout')->formatPrice($this->getTotal()->getValue()) ?>
Run Code Online (Sandbox Code Playgroud)

根据源代码文件,有一个"Mage_Tax_Block_Checkout_Grandtotal"的心理

我看了/app/code/core/Mage/Tax/Block/Checkout/Grandtotal.php评论了一些内容......但没有改变......

我希望有人可以向我解释购物车计算在哪里"隐藏",我需要一个构建总数的foreach.

我还看了/ app/code/core/Mage/Checkout/Block/Cart/Totals.php

我发现了renderTotal ...没有任何地方获得项目的foreach循环的解决方案,我想要使用类似的东西

            $productIds = array(); 
            $productIds[] = $_item['product_id'];

            $products = Mage::getModel('catalog/product')->getCollection() 
            ->addAttributeToSelect('gl_special') 
            ->addMinimalPrice() 
            ->addStoreFilter() 
            ->addIdFilter($productIds);

            $product = $products->getItemById($_item['product_id']);
            #print_r($product);
            $bBerechnet = $product->getData('gl_special');


$childProducts = Mage::getModel('catalog/product_type_configurable')->getUsedProducts(null, $product);
Run Code Online (Sandbox Code Playgroud)

得到我加载的简单产品

public function renderTotal($total, $area = null, $colspan = 1)
{
    $code = $total->getCode();

    if ($total->getAs()) {
        $code = $total->getAs();
    }
    return $this->_getTotalRenderer($code)
        ->setTotal($total)
        ->setColspan($colspan)
        ->setRenderingArea(is_null($area) ? -1 : $area)
        ->toHtml();
}
Run Code Online (Sandbox Code Playgroud)

小智 2

无需重写文件。例如,您需要更改小计的计算,然后创建自定义模块并将以下代码放入模块的 config.xml 文件的全局标记内

     <sales>
        <quote>
            <totals>
                <subtotal><class>modulename/sales_quote_address_total_subtotal</class></subtotal>
            </totals>
        </quote>
    </sales>
Run Code Online (Sandbox Code Playgroud)

所以你的模型类如下所示

class Namespace_Modulename_Model_Quote_Address_Total_Subtotal extends Mage_Sales_Model_Quote_Address_Total_Subtotal { }
Run Code Online (Sandbox Code Playgroud)

从父类复制 _initItem() 函数并粘贴到上面创建的模型上,并根据需要更改计算。

希望它对你有用!