更改总计的顺序

maa*_*sen 3 magento magento-1.7

我遇到了一些麻烦,想知道如何更改交易电子邮件模板中的总计顺序(在Magento中).

基本上我希望"税"排在最底部 - 低于'总计包含.税'.

我知道这是打印行的代码.但我似乎无法弄清楚如何改变行的顺序.

<?php foreach ($this->getTotals() as $_code => $_total): ?>
<?php if ($_total->getBlockName()): ?>
    <?php echo $this->getChildHtml($_total->getBlockName(), false); ?>
<?php else:?>
<tr class="<?php echo $_code?>">
    <td <?php echo $this->getLabelProperties()?>>
        <?php if ($_total->getStrong()):?>
        <?php echo $this->escapeHtml($_total->getLabel());?>
        <?php else:?>
        <?php echo $this->escapeHtml($_total->getLabel());?>
        <?php endif?>
    </td>
    <td <?php echo $this->getValueProperties()?>>
        <?php if ($_total->getStrong()):?>
        <?php echo $this->formatValue($_total) ?>
        <?php else:?>
        <?php echo $this->formatValue($_total) ?>
        <?php endif?>
    </td>
</tr>
<?php endif?>
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助解决这个问题吗?

谢谢,祝你有个美好的一天!

Axe*_*xel 6

方法1:修改主题模板文件.

复制app/design/frontend/base/sales/order/totals.phtml到您的主题文件并打开它.
将以下内容添加到其顶部.

if($tax = $this->getTotal('tax'))
{
    $this->removeTotal('tax');
    $this->addTotal($tax, 'grand_total');
}
Run Code Online (Sandbox Code Playgroud)

此代码将从总计列表中删除税,然后将其重新添加到总计下方.您应该将totals.phtml文件移动到自定义主题文件夹中,以便升级不会覆盖它.

方法2:覆盖核心块文件.

您可以通过执行以下操作来覆盖核心Totals块来执行相同的修补程序:

  1. 复制app/code/core/Mage/Sales/Block/Order/Totals.phpapp/code/local/Mage/Sales/Block/Order/Totals.php

  2. 打开app/code/local/Mage/Sales/Block/Order/Totals.php并将getTotals()功能更改为以下内容:

    public function getTotals($area=null)
    {
            //Move tax below grand_total
            if($tax = $this->getTotal('tax'))
            {
            $this->removeTotal('tax');
            $this->addTotal($tax, 'grand_total');
            }       
    
            $totals = array();
            if ($area === null) {
            $totals = $this->_totals;
            } else {
            $area = (string)$area;
            foreach ($this->_totals as $total) {
                $totalArea = (string) $total->getArea();
                if ($totalArea == $area) {
                    $totals[] = $total;
                }
            }
        }       
        return $totals;
    }
    
    Run Code Online (Sandbox Code Playgroud)