Ive upgraded to 1.4.8b from 1.4.7 i have managed to change my template to accommodate the changes however I'm am very stuck on the last thing i need to change.
I have got my cart module in my header and everything works fine, except that i have both the subtotal and total visible.
As i have no tax class this shows the same price in both the subtotal and total fields. i am wanting just to show either subtotal or total but not both and now that the information is being pulled from an array it's not as easy as before just to show what i want it to show.
here is my module/cart.tpl & controller/module/cart.php
Code: Select all
<div id="cart_widget">
<?php if ($products) { ?>
<br />
<div style="text-align: right;"><a href="index.php?route=checkout/cart" alt="Shopping Bag">Shopping Bag (<?php echo $this->cart->countProducts(); ?>)</a></div>
<table cellpadding="0" cellspacing="0" align="right" style="display:inline-block;">
<?php foreach ($totals as $total) { ?>
<tr>
<td align="right"><span class="cart_module_total"><b><?php echo $total['title']; ?></b></span></td>
<td align="right"><span class="cart_module_total"><?php echo $total['text']; ?></span></td>
</tr>
<?php } ?>
</table>
<?php } else { ?>
<div style="text-align: center;"><?php echo $text_empty; ?></div>
<?php } ?>
</div>
<?php if ($ajax) { ?>
<script type="text/javascript" src="catalog/view/javascript/jquery/ajax_add.js"></script>
<?php } ?>
<script type="text/javascript"><!--
function getUrlParam(name) {
var name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
var regex = new RegExp(regexS);
var results = regex.exec(window.location.href);
if (results == null)
return "";
else
return results[1];
}
$(document).ready(function () {
$('.cart_remove').live('click', function () {
if (!confirm('<?php echo $text_confirm; ?>')) {
return false;
}
$(this).removeClass('cart_remove').addClass('cart_remove_loading');
$.ajax({
type: 'post',
url: 'index.php?route=module/cart/callback',
dataType: 'html',
data: 'remove=' + this.id,
success: function (html) {
$('#module_cart .middle').html(html);
if (getUrlParam('route').indexOf('checkout') != -1) {
window.location.reload();
}
}
});
});
});
//--></script>
Code: Select all
<?php
class ControllerModuleCart extends Controller {
protected function index() {
$this->language->load('module/cart');
$this->load->model('tool/seo_url');
$this->data['heading_title'] = $this->language->get('heading_title');
$this->data['text_subtotal'] = $this->language->get('text_subtotal');
$this->data['text_empty'] = $this->language->get('text_empty');
$this->data['text_remove'] = $this->language->get('text_remove');
$this->data['text_confirm'] = $this->language->get('text_confirm');
$this->data['text_view'] = $this->language->get('text_view');
$this->data['text_checkout'] = $this->language->get('text_checkout');
$this->data['view'] = HTTP_SERVER . 'index.php?route=checkout/cart';
$this->data['checkout'] = HTTP_SERVER . 'index.php?route=checkout/shipping';
$this->data['products'] = array();
foreach ($this->cart->getProducts() as $result) {
$option_data = array();
foreach ($result['option'] as $option) {
$option_data[] = array(
'name' => $option['name'],
'value' => $option['value']
);
}
$this->data['products'][] = array(
'key' => $result['key'],
'name' => $result['name'],
'option' => $option_data,
'quantity' => $result['quantity'],
'stock' => $result['stock'],
'price' => $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))),
'href' => $this->model_tool_seo_url->rewrite(HTTP_SERVER . 'index.php?route=product/product&product_id=' . $result['product_id']),
);
}
$total_data = array();
$total = 0;
$taxes = $this->cart->getTaxes();
$this->load->model('checkout/extension');
$sort_order = array();
$results = $this->model_checkout_extension->getExtensions('total');
foreach ($results as $key => $value) {
$sort_order[$key] = $this->config->get($value['key'] . '_sort_order');
}
array_multisort($sort_order, SORT_ASC, $results);
foreach ($results as $result) {
$this->load->model('total/' . $result['key']);
$this->{'model_total_' . $result['key']}->getTotal($total_data, $total, $taxes);
}
$sort_order = array();
foreach ($total_data as $key => $value) {
$sort_order[$key] = $value['sort_order'];
}
array_multisort($sort_order, SORT_ASC, $total_data);
$this->data['totals'] = $total_data;
$this->data['ajax'] = $this->config->get('cart_ajax');
$this->id = 'cart';
if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/cart.tpl')) {
$this->template = $this->config->get('config_template') . '/template/module/cart.tpl';
} else {
$this->template = 'default/template/module/cart.tpl';
}
$this->render();
}
public function callback() {
$this->language->load('module/cart');
$this->load->model('tool/seo_url');
unset($this->session->data['shipping_methods']);
unset($this->session->data['shipping_method']);
unset($this->session->data['payment_methods']);
unset($this->session->data['payment_method']);
if ($this->request->server['REQUEST_METHOD'] == 'POST') {
if (isset($this->request->post['remove'])) {
$result = explode('_', $this->request->post['remove']);
$this->cart->remove(trim($result[1]));
} else {
if (isset($this->request->post['option'])) {
$option = $this->request->post['option'];
} else {
$option = array();
}
$this->cart->add($this->request->post['product_id'], $this->request->post['quantity'], $option);
}
}
$output = '<table cellpadding="2" cellspacing="0" style="width: 100%;">';
if ($this->cart->getProducts()) {
foreach ($this->cart->getProducts() as $product) {
$output .= '<tr>';
$output .= '<td width="1" valign="top" align="left"><span class="cart_remove" id="remove_ ' . $product['key'] . '" /> </span></td><td width="1" valign="top" align="right">' . $product['quantity'] . ' x </td>';
$output .= '<td align="left" valign="top"><a href="' . $this->model_tool_seo_url->rewrite(HTTP_SERVER . 'index.php?route=product/product&product_id=' . $product['product_id']) . '">' . $product['name'] . '</a>';
$output .= '<div>';
foreach ($product['option'] as $option) {
$output .= ' - <small style="color: #999;">' . $option['name'] . ' ' . $option['value'] . '</small><br />';
}
$output .= '</div></td>';
$output .= '</tr>';
}
$output .= '</table>';
$output .= '<br />';
$total = 0;
$taxes = $this->cart->getTaxes();
$this->load->model('checkout/extension');
$sort_order = array();
$view = HTTP_SERVER . 'index.php?route=checkout/cart';
$checkout = HTTP_SERVER . 'index.php?route=checkout/shipping';
$results = $this->model_checkout_extension->getExtensions('total');
foreach ($results as $key => $value) {
$sort_order[$key] = $this->config->get($value['key'] . '_sort_order');
}
array_multisort($sort_order, SORT_ASC, $results);
foreach ($results as $result) {
$this->load->model('total/' . $result['key']);
$this->{'model_total_' . $result['key']}->getTotal($total_data, $total, $taxes);
}
$sort_order = array();
foreach ($total_data as $key => $value) {
$sort_order[$key] = $value['sort_order'];
}
array_multisort($sort_order, SORT_ASC, $total_data);
$output .= '<table cellpadding="0" cellspacing="0" align="right" style="display:inline-block;">';
foreach ($total_data as $total) {
$output .= '<tr>';
$output .= '<td align="right"><span class="cart_module_total"><b>' . $total['title'] . '</b></span></td>';
$output .= '<td align="right"><span class="cart_module_total">' . $total['text'] . '</span></td>';
$output .= '</tr>';
}
$output .= '</table>';
$output .= '<div style="padding-top:5px;text-align:center;clear:both;"><a href="' . $view . '">' . $this->language->get('text_view') . '</a> | <a href="' . $checkout . '">' . $this->language->get('text_checkout') . '</a></div>';
} else {
$output .= '<div style="text-align: center;">' . $this->language->get('text_empty') . '</div>';
}
$this->response->setOutput($output, $this->config->get('config_compression'));
}
}
?>