2011-06-30 12 views
5

Dodałem produkt, który jest obliczany przez dwa atrybuty i wykorzystuje własną cenę obliczeniową. Problem polega na tym, że musiałem przerobić obliczenia grandtotal i subtotal ... na przykład z nadpisaniem danych.Magento howto pobrać/zmienić/zastąpić obliczenia totals.phtml?

mam nadzieję, że tu @stackoverflow jest guru Magento, który rozwiązał mój problem :-)

miałem zmienił/app/design/frontend/default/gutlauf/template/checkout/koszyk/item/domyślne .phtml gdzie układ elementów koszyka jest wykonywany.

ale teraz mam problem z/app/design/frontend/default/gutlauf/template/checkout/koszyk/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> 

jak mogę dostać mój własny kalkulacja? i zorientowali się, że bloki

podatkowy/checkout_grandtotal podatkowy/checkout_subtotal podatkowy/checkout_tax

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

<?php echo $this->helper('checkout')->formatPrice($this->getTotal()->getValue()) ?> 

według pliku z kodem źródłowym jest żania "Mage_Tax_Block_Checkout_Grandtotal"

Spojrzałem w/app/code/core/Mage/podatku/block/Che ckout/Grandtotal.php skomentował kilka linijek ... ale nic się nie zmieniło ...

Mam nadzieję, że ktoś mógłby mi wytłumaczyć, gdzie kalkulacja koszyka jest "ukryta", potrzebuję foreach, gdzie sumy są budowane.

ja również spojrzał/app/code/core/Mage/Zamówienie/pustak/Koszyk/Totals.php

znalazłem renderTotal ... nigdzie nie rozwiązanie coraz pętli foreach z następujących przedmioty, gdzie chcę użyć coś jak

  $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); 

aby uzyskać proste produkty, które załadować z

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

Czy znalazłeś rozwiązanie problemu? – anasaitali

+0

Sposób, w jaki to robisz, nie zadziała. Manipulowanie kalkulacją ceny na poziomie bloku nie będzie spójne z warstwą model/dane.Przejdź do administratora, w sekcji Promocje -> Reguły cenowe koszyka zakupów i sprawdź, czy nie możesz osiągnąć tego, czego potrzebujesz. –

Odpowiedz

2

Nie trzeba przepisać plik. Na przykład, trzeba zmienić kalkulację swojej podsumy następnie utworzyć niestandardowy moduł i umieścić poniżej kodu wewnątrz znacznika globalnego pliku config.xml modułu

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

więc klasa modelu wygląda jak poniżej

class Namespace_Modulename_Model_Quote_Address_Total_Subtotal extends Mage_Sales_Model_Quote_Address_Total_Subtotal { } 

Copy Funkcja _initItem() z klasy nadrzędnej i wklej na wyżej utworzony model i zmień obliczenia zgodnie z potrzebami.

Mam nadzieję, że się przyda!