Hi.
Could someone tell me how i could add an extra button to the drop down cart preview in the header so it would link to main shopping cart page? (I know there is a separate link providing this functionality but i would like it to be in the cart preview, giving the option of viewing the full cart page or going to checkout)
I've searched the forum but havent found anything besides one other post exactly like mine which hasn't been answered.
Could someone tell me how i could add an extra button to the drop down cart preview in the header so it would link to main shopping cart page? (I know there is a separate link providing this functionality but i would like it to be in the cart preview, giving the option of viewing the full cart page or going to checkout)
I've searched the forum but havent found anything besides one other post exactly like mine which hasn't been answered.
open: catalog/language/english/english.php
Find:
replace with:
open: catalog/controller/checkout/cart.php
find 2nd occurrence of:
replace with:
find 2nd occurrence of:
replace with:
open: catalog/view/theme/default/template/common/cart.tpl
find:
replace with:
vQmod file attached:
Find:
Code: Select all
$_['button_checkout'] = 'Checkout';
Code: Select all
$_['button_checkout'] = 'Checkout';
$_['button_viewcart'] = 'View Cart';
find 2nd occurrence of:
Code: Select all
$this->data['button_checkout'] = $this->language->get('button_checkout');
Code: Select all
$this->data['button_viewcart'] = $this->language->get('button_viewcart');
$this->data['button_checkout'] = $this->language->get('button_checkout');
Code: Select all
$this->data['checkout'] = $this->url->link('checkout/checkout', '', 'SSL');
Code: Select all
$this->data['checkout'] = $this->url->link('checkout/checkout', '', 'SSL');
$this->data['cart'] = $this->url->link('checkout/cart', '');
find:
Code: Select all
<div class="checkout"><a href="<?php echo $checkout; ?>" class="button"><span><?php echo $button_checkout; ?></span></a></div>
Code: Select all
<div class="checkout"><a href="<?php echo $cart; ?>" class="button"><span><?php echo $button_viewcart; ?></span></a> <a href="<?php echo $checkout; ?>" class="button"><span><?php echo $button_checkout; ?></span></a></div>
I did everything as instructed(checked 3 times) however its not quite working.
There is a button thats appeared in the dropdown but with in it it gives the following error:
There is a button thats appeared in the dropdown but with in it it gives the following error:
Code: Select all
Notice: Undefined variable: button_viewcart in /Applications/MAMP/htdocs/SHOP/catalog/view/theme/default/template/common/cart.tpl on line 37
Did you do it manually or did you use the vQmod file?
If you manually edited the files, please post the contents of your catalog/controller/checkout/cart.php file
My reason for asking is that the manual instructions clearly define 'button_viewcart'
$this->data['button_viewcart'] = $this->language->get('button_viewcart');
---
$this->data['button_checkout'] = $this->language->get('button_checkout');
is in the above file twice, as per the instructions, it is the 2nd occurrence of this line you need to edit.
If you manually edited the files, please post the contents of your catalog/controller/checkout/cart.php file
My reason for asking is that the manual instructions clearly define 'button_viewcart'
$this->data['button_viewcart'] = $this->language->get('button_viewcart');
---
$this->data['button_checkout'] = $this->language->get('button_checkout');
is in the above file twice, as per the instructions, it is the 2nd occurrence of this line you need to edit.
I did it manually.uksitebuilder wrote:Did you do it manually or did you use the vQmod file?
If you manually edited the files, please post the contents of your catalog/controller/checkout/cart.php file
Although i've just tried it via the xml script and it works beautifully! (however i would still preffer to not use vqmod)
Here is mycatalog/controller/checkout/cart.php (part1)
Code: Select all
<?php
class ControllerCheckoutCart extends Controller {
public function index() {
$this->language->load('checkout/cart');
if ($this->request->server['REQUEST_METHOD'] == 'POST') {
if (isset($this->request->post['quantity'])) {
if (!is_array($this->request->post['quantity'])) {
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);
} else {
foreach ($this->request->post['quantity'] as $key => $value) {
$this->cart->update($key, $value);
}
}
}
if (isset($this->request->post['remove'])) {
foreach ($this->request->post['remove'] as $key) {
$this->cart->remove($key);
}
}
if (isset($this->request->post['voucher']) && $this->request->post['voucher']) {
foreach ($this->request->post['voucher'] as $key) {
if (isset($this->session->data['vouchers'][$key])) {
unset($this->session->data['vouchers'][$key]);
}
}
}
if (isset($this->request->post['redirect'])) {
$this->session->data['redirect'] = $this->request->post['redirect'];
}
if (isset($this->request->post['quantity']) || isset($this->request->post['remove']) || isset($this->request->post['voucher'])) {
unset($this->session->data['shipping_methods']);
unset($this->session->data['shipping_method']);
unset($this->session->data['payment_methods']);
unset($this->session->data['payment_method']);
unset($this->session->data['reward']);
$this->redirect($this->url->link('checkout/cart'));
}
}
$this->document->setTitle($this->language->get('heading_title'));
$this->data['breadcrumbs'] = array();
$this->data['breadcrumbs'][] = array(
'href' => $this->url->link('common/home'),
'text' => $this->language->get('text_home'),
'separator' => false
);
$this->data['breadcrumbs'][] = array(
'href' => $this->url->link('checkout/cart'),
'text' => $this->language->get('heading_title'),
'separator' => $this->language->get('text_separator')
);
if ($this->cart->hasProducts() || (isset($this->session->data['vouchers']) && $this->session->data['vouchers'])) {
$this->data['heading_title'] = $this->language->get('heading_title');
$this->data['text_select'] = $this->language->get('text_select');
$this->data['text_weight'] = $this->language->get('text_weight');
$this->data['column_remove'] = $this->language->get('column_remove');
$this->data['column_image'] = $this->language->get('column_image');
$this->data['column_name'] = $this->language->get('column_name');
$this->data['column_model'] = $this->language->get('column_model');
$this->data['column_quantity'] = $this->language->get('column_quantity');
$this->data['column_price'] = $this->language->get('column_price');
$this->data['column_total'] = $this->language->get('column_total');
$this->data['button_update'] = $this->language->get('button_update');
$this->data['button_shopping'] = $this->language->get('button_shopping');
$this->data['button_viewcart'] = $this->language->get('button_viewcart');
$this->data['button_checkout'] = $this->language->get('button_checkout');
if ($this->config->get('config_customer_price') && !$this->customer->isLogged()) {
$this->data['attention'] = sprintf($this->language->get('text_login'), $this->url->link('account/login'), $this->url->link('account/register'));
} else {
$this->data['attention'] = '';
}
if (!$this->cart->hasStock() && (!$this->config->get('config_stock_checkout') || $this->config->get('config_stock_warning'))) {
$this->data['error_warning'] = $this->language->get('error_stock');
} elseif (isset($this->session->data['error'])) {
$this->data['error_warning'] = $this->session->data['error'];
unset($this->session->data['error']);
} else {
$this->data['error_warning'] = '';
}
if (isset($this->session->data['success'])) {
$this->data['success'] = $this->session->data['success'];
unset($this->session->data['success']);
} else {
$this->data['success'] = '';
}
$this->data['action'] = $this->url->link('checkout/cart');
if ($this->config->get('config_cart_weight')) {
$this->data['weight'] = $this->weight->format($this->cart->getWeight(), $this->config->get('config_weight_class_id'), $this->language->get('decimal_point'), $this->language->get('thousand_point'));
} else {
$this->data['weight'] = false;
}
$this->load->model('tool/image');
$this->data['products'] = array();
foreach ($this->cart->getProducts() as $result) {
if ($result['image']) {
$image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_cart_width'), $this->config->get('config_image_cart_height'));
} else {
$image = '';
}
$option_data = array();
foreach ($result['option'] as $option) {
if ($option['type'] != 'file') {
$option_data[] = array(
'name' => $option['name'],
'value' => (strlen($option['option_value']) > 20 ? substr($option['option_value'], 0, 20) . '..' : $option['option_value'])
);
} else {
$this->load->library('encryption');
$encryption = new Encryption($this->config->get('config_encryption'));
$file = substr($encryption->decrypt($option['option_value']), 0, strrpos($encryption->decrypt($option['option_value']), '.'));
$option_data[] = array(
'name' => $option['name'],
'value' => (strlen($file) > 20 ? substr($file, 0, 20) . '..' : $file)
);
}
}
if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
$price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')));
} else {
$price = false;
}
if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
$total = $this->currency->format($this->tax->calculate($result['total'], $result['tax_class_id'], $this->config->get('config_tax')));
} else {
$total = false;
}
$this->data['products'][] = array(
'key' => $result['key'],
'thumb' => $image,
'name' => $result['name'],
'model' => $result['model'],
'option' => $option_data,
'quantity' => $result['quantity'],
'stock' => $result['stock'],
'points' => ($result['points'] ? sprintf($this->language->get('text_points'), $result['points']) : ''),
'price' => $price,
'total' => $total,
'href' => $this->url->link('product/product', 'product_id=' . $result['product_id'])
);
}
// Gift Voucher
$this->data['vouchers'] = array();
if (isset($this->session->data['vouchers']) && $this->session->data['vouchers']) {
foreach ($this->session->data['vouchers'] as $key => $voucher) {
$this->data['vouchers'][] = array(
'key' => $key,
'description' => $voucher['description'],
'amount' => $this->currency->format($voucher['amount'])
);
}
}
$total_data = array();
$total = 0;
$taxes = $this->cart->getTaxes();
if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
$this->load->model('setting/extension');
$sort_order = array();
$results = $this->model_setting_extension->getExtensions('total');
foreach ($results as $key => $value) {
$sort_order[$key] = $this->config->get($value['code'] . '_sort_order');
}
array_multisort($sort_order, SORT_ASC, $results);
foreach ($results as $result) {
if ($this->config->get($result['code'] . '_status')) {
$this->load->model('total/' . $result['code']);
$this->{'model_total_' . $result['code']}->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;
// Modules
$this->data['modules'] = array();
if (isset($results)) {
foreach ($results as $result) {
if ($this->config->get($result['code'] . '_status') && file_exists(DIR_APPLICATION . 'controller/total/' . $result['code'] . '.php')) {
$this->data['modules'][] = $this->getChild('total/' . $result['code']);
}
}
}
if (isset($this->session->data['redirect'])) {
$this->data['continue'] = $this->session->data['redirect'];
unset($this->session->data['redirect']);
} else {
$this->data['continue'] = $this->url->link('common/home');
}
$this->data['checkout'] = $this->url->link('checkout/checkout', '', 'SSL');
$this->data['cart'] = $this->url->link('checkout/cart', '');
if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/checkout/cart.tpl')) {
$this->template = $this->config->get('config_template') . '/template/checkout/cart.tpl';
} else {
$this->template = 'default/template/checkout/cart.tpl';
}
$this->children = array(
'common/column_left',
'common/column_right',
'common/content_top',
'common/content_bottom',
'common/footer',
'common/header'
);
$this->response->setOutput($this->render());
} else {
$this->data['heading_title'] = $this->language->get('heading_title');
$this->data['text_error'] = $this->language->get('text_empty');
$this->data['button_continue'] = $this->language->get('button_continue');
$this->data['continue'] = $this->url->link('common/home');
if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/error/not_found.tpl')) {
$this->template = $this->config->get('config_template') . '/template/error/not_found.tpl';
} else {
$this->template = 'default/template/error/not_found.tpl';
}
$this->children = array(
'common/column_left',
'common/column_right',
'common/content_top',
'common/content_bottom',
'common/footer',
'common/header'
);
$this->response->setOutput($this->render());
}
}
public function update() {
$this->language->load('checkout/cart');
$json = array();
if (isset($this->request->post['product_id'])) {
$this->load->model('catalog/product');
$product_info = $this->model_catalog_product->getProduct($this->request->post['product_id']);
if ($product_info) {
// Minimum quantity validation
if (isset($this->request->post['quantity'])) {
$quantity = $this->request->post['quantity'];
} else {
$quantity = 1;
}
$product_total = 0;
foreach ($this->session->data['cart'] as $key => $value) {
$product = explode(':', $key);
if ($product[0] == $this->request->post['product_id']) {
$product_total += $value;
}
}
if ($product_info['minimum'] > ($product_total + $quantity)) {
$json['error']['warning'] = sprintf($this->language->get('error_minimum'), $product_info['name'], $product_info['minimum']);
}

(Part 2)
Code: Select all
// Option validation
if (isset($this->request->post['option'])) {
$option = array_filter($this->request->post['option']);
} else {
$option = array();
}
$product_options = $this->model_catalog_product->getProductOptions($this->request->post['product_id']);
foreach ($product_options as $product_option) {
if ($product_option['required'] && (!isset($this->request->post['option'][$product_option['product_option_id']]) || !$this->request->post['option'][$product_option['product_option_id']])) {
$json['error'][$product_option['product_option_id']] = sprintf($this->language->get('error_required'), $product_option['name']);
}
}
}
if (!isset($json['error'])) {
$this->cart->add($this->request->post['product_id'], $quantity, $option);
$json['success'] = sprintf($this->language->get('text_success'), $this->url->link('product/product', 'product_id=' . $this->request->post['product_id']), $product_info['name'], $this->url->link('checkout/cart'));
unset($this->session->data['shipping_methods']);
unset($this->session->data['shipping_method']);
unset($this->session->data['payment_methods']);
unset($this->session->data['payment_method']);
} else {
$json['redirect'] = str_replace('&', '&', $this->url->link('product/product', 'product_id=' . $this->request->post['product_id']));
}
}
if (isset($this->request->post['remove'])) {
$this->cart->remove($this->request->post['remove']);
}
if (isset($this->request->post['voucher'])) {
if ($this->session->data['vouchers'][$this->request->post['voucher']]) {
unset($this->session->data['vouchers'][$this->request->post['voucher']]);
}
}
$this->load->model('tool/image');
$this->data['text_empty'] = $this->language->get('text_empty');
$this->data['button_checkout'] = $this->language->get('button_checkout');
$this->data['button_remove'] = $this->language->get('button_remove');
$this->data['products'] = array();
foreach ($this->cart->getProducts() as $result) {
if ($result['image']) {
$image = $this->model_tool_image->resize($result['image'], 40, 40);
} else {
$image = '';
}
$option_data = array();
foreach ($result['option'] as $option) {
if ($option['type'] != 'file') {
$option_data[] = array(
'name' => $option['name'],
'value' => (strlen($option['option_value']) > 20 ? substr($option['option_value'], 0, 20) . '..' : $option['option_value'])
);
} else {
$this->load->library('encryption');
$encryption = new Encryption($this->config->get('config_encryption'));
$file = substr($encryption->decrypt($option['option_value']), 0, strrpos($encryption->decrypt($option['option_value']), '.'));
$option_data[] = array(
'name' => $option['name'],
'value' => (strlen($file) > 20 ? substr($file, 0, 20) . '..' : $file)
);
}
}
if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
$price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')));
} else {
$price = false;
}
if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
$total = $this->currency->format($this->tax->calculate($result['total'], $result['tax_class_id'], $this->config->get('config_tax')));
} else {
$total = false;
}
$this->data['products'][] = array(
'key' => $result['key'],
'thumb' => $image,
'name' => $result['name'],
'model' => $result['model'],
'option' => $option_data,
'quantity' => $result['quantity'],
'stock' => $result['stock'],
'price' => $price,
'total' => $total,
'href' => $this->url->link('product/product', 'product_id=' . $result['product_id'])
);
}
// Gift Voucher
$this->data['vouchers'] = array();
if (isset($this->session->data['vouchers']) && $this->session->data['vouchers']) {
foreach ($this->session->data['vouchers'] as $key => $voucher) {
$this->data['vouchers'][] = array(
'key' => $key,
'description' => $voucher['description'],
'amount' => $this->currency->format($voucher['amount'])
);
}
}
// Calculate Totals
$total_data = array();
$total = 0;
$taxes = $this->cart->getTaxes();
if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
$this->load->model('setting/extension');
$sort_order = array();
$results = $this->model_setting_extension->getExtensions('total');
foreach ($results as $key => $value) {
$sort_order[$key] = $this->config->get($value['code'] . '_sort_order');
}
array_multisort($sort_order, SORT_ASC, $results);
foreach ($results as $result) {
if ($this->config->get($result['code'] . '_status')) {
$this->load->model('total/' . $result['code']);
$this->{'model_total_' . $result['code']}->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);
}
$json['total'] = sprintf($this->language->get('text_items'), $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0), $this->currency->format($total));
$this->data['totals'] = $total_data;
$this->data['checkout'] = $this->url->link('checkout/checkout', '', 'SSL');
if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/common/cart.tpl')) {
$this->template = $this->config->get('config_template') . '/template/common/cart.tpl';
} else {
$this->template = 'default/template/common/cart.tpl';
}
$json['output'] = $this->render();
$this->load->library('json');
$this->response->setOutput(Json::encode($json));
}
}
?>
You had changed the 1st occurrences on both changes, not the 2nd occurrences.
Fixed file and attached.
Fixed file and attached.
Attachments
Who is online
Users browsing this forum: No registered users and 22 guests