Magento, как получить / изменить / перезаписать вычисления totals.phtml? - PullRequest
5 голосов
/ 30 июня 2011

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

Я надеюсь, что здесь @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>

как можноя получил свой собственный расчет?я понял, что блоки

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()) ?>

в соответствии с файлом исходного кода есть упоминание «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);

, чтобы получить простые продукты, которые я загружаю с

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();
}

1 Ответ

2 голосов
/ 18 июня 2015

Нет необходимости переписывать файл.Например, вам нужно изменить расчет подытога, затем создать собственный модуль и поместить код под глобальный тег файла config.xml модуля

     <sales>
        <quote>
            <totals>
                <subtotal><class>modulename/sales_quote_address_total_subtotal</class></subtotal>
            </totals>
        </quote>
    </sales>

, чтобы класс вашей модели выглядел следующим образом

class Namespace_Modulename_Model_Quote_Address_Total_Subtotal extends Mage_Sales_Model_Quote_Address_Total_Subtotal { }

Скопируйте функцию _initItem () из родительского класса и вставьте в созданную выше модель и измените расчет в соответствии с вашими потребностями.

Надеюсь, она вам пригодится !!

...