2011-06-30 13 views
5

había agregado un producto que se calcula con dos atributos y usa un precio calculado por mí mismo. el problema es que tuve que reescribir el cálculo de subtotal y general ... por ejemplo, sobrescribiendo el material.Magento ¿cómo obtener/cambiar/sobrescribir el cálculo de totals.phtml?

espero aquí @stackoverflow es un gurú de Magento que había resuelto mi problema :-)

yo había cambiado el/app/design/frontend/default/gutlauf/template/Pedido/compra/artículo/por defecto .phtml donde se realiza el diseño de los elementos del carrito.

pero ahora tengo un problema con/app/design/frontend/default/gutlauf/template/Pedido/compra/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> 

¿Cómo puedo obtener mi propio cálculo? me di cuenta de que los bloques

impuestos/checkout_grandtotal impuestos/checkout_subtotal impuestos/checkout_tax

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

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

de acuerdo con el archivo de código fuente no es una actividad mental de "Mage_Tax_Block_Checkout_Grandtotal"

i miraba a/app/código/core/Mago/Tax/Bloque/Che ckout/Grandtotal.php comentó algunas líneas ... pero nada cambió ...

Espero que alguien pueda explicarme dónde está "oculto" el cálculo del carrito de la compra, necesito un foreach donde se compilan los totales.

i, también vieron/app/código/core/Mago/Pedido/Bloquear/Carro/Totals.php

encontré el renderTotal ... sin ninguna parte de la solución de conseguir el bucle foreach de la artículos, donde quiero usar algo como

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

para obtener los productos simples que me carga con

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

¿Encontró una solución para esto? – anasaitali

+0

Cómo lo está haciendo no va a funcionar. La manipulación del cálculo del precio en el nivel de bloque no será coherente con el modelo/capa de datos.Diríjase al administrador, en Promociones -> Reglas de precios del carrito de compras y vea si no puede lograr lo que necesita allí. –

Respuesta

2

No hay necesidad de volver a escribir el archivo. Por ejemplo, es necesario cambiar el cálculo de subtotal a continuación, crear módulo personalizado y poner debajo de código dentro de la etiqueta global del archivo config.xml del módulo

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

por lo que su mirada clase del modelo, como a continuación

class Namespace_Modulename_Model_Quote_Address_Total_Subtotal extends Mage_Sales_Model_Quote_Address_Total_Subtotal { } 

Copiar _initItem() funciona desde la clase principal y pega en el modelo creado anteriormente y cambia el cálculo según lo necesites.

Espero que sea útil para usted!

Cuestiones relacionadas