Post by Uberos » Fri Nov 09, 2012 5:39 pm

Hi, how can I load $text_items variable in footer.tpl?

i want to do something like this:

<?php if (substr($text_items,0)==0) {
echo "<img src=\"catalog/view/theme/default/image/emptycart.png\">";
}else{
echo "<img src=\"catalog/view/theme/default/image/cart.png\">";
}
?>

But $text_items is an undefined variable.

Thanks.

Newbie

Posts

Joined
Fri Nov 09, 2012 5:21 pm

Post by Uberos » Mon Nov 12, 2012 4:57 pm

Any ideas?

Newbie

Posts

Joined
Fri Nov 09, 2012 5:21 pm

Post by subdivide » Fri Nov 16, 2012 6:44 pm

Open your footer language file:

/catalog/language/english/common/footer.php

Add your variable like so:

Code: Select all

$_['your_text_variable'] = 'Text to appear in your footer';
Then open your footer controller:

/catalog/controller/common/footer.php

Add your variable to the data array of the controller:

Code: Select all

$this->data['text_variable'] = $this->language->get('your_text_variable');
Now your variable is available as $text_variable in your footer view.

Code: Select all

<?php echo $text_variable; ?>
You can also run tests against the raw text variable in the controller prior to setting the data variable.

Code: Select all

if (substr($this->language->get('your_text_variable'), 0) == 0):
	$this->data['your_image'] = '<img src="catalog/view/theme/default/image/emptycart.png">';
else:
	$this->data['your_image'] = '<img src="catalog/view/theme/default/image/cart.png">';
endif;
Then in the view just echo the image:

Code: Select all

<?php echo $your_image; ?>
Hope this helps.

-V

User avatar
New member

Posts

Joined
Sun Jan 01, 2012 9:47 am

Post by Uberos » Tue Nov 20, 2012 12:35 am

Thanks for your answer but i think that i haven't explained right.

$text_items variable is written (echoed) in catalog/view/theme/["mytemplate"]/template/module/cart.tpl

Code: Select all

<span id="cart-total"><?php echo $text_items; ?></span></a></div>
$text_items says the number of products you have inside the cart.

I need $text_items in footer.tpl but i don't know how load it.

Newbie

Posts

Joined
Fri Nov 09, 2012 5:21 pm

Post by subdivide » Tue Nov 20, 2012 2:13 am

Ah, I see.

You can get this information directly from the cart class which is available globally.

Open: /catalog/language/english/common/footer.php and add the following:

Code: Select all

$_['text_items']    = '%s item(s) - %s';
(copied from modules/cart.php)

Open: /catalog/controller/common/footer.php and add the following:

Code: Select all

// Totals
$this->load->model('setting/extension');

$total_data = array();					
$total = 0;
$taxes = $this->cart->getTaxes();

// Display prices
if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
	$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['text_items'] = sprintf($this->language->get('text_items'), $this->cart->countProducts() + (isset($this->session->data['vouchers']) ? count($this->session->data['vouchers']) : 0), $this->currency->format($total));
Open: catalog/view/theme/*/template/footer.tpl and add:

Code: Select all

<?php echo $text_items; ?>
Keep in mind this won't update with javascript when you add a new item, to do that you'll need to give the container an id and add that to the update section of the addToCart() method in your javascript controller.

Hope that helps.

-V

User avatar
New member

Posts

Joined
Sun Jan 01, 2012 9:47 am

Post by Uberos » Wed Nov 21, 2012 8:28 pm

Just missing a line to complete your instructions in "/catalog/controller/common/footer.php"
copied from modules/cart.php:

Code: Select all

$this->language->load('module/cart');
it works! Now I undestand a bit more the opencart code, thankyou very much! :-)
It would be interesting update with javascript when adding the cart but i don't know how to do it :-\

If you help me i'll be thanful

Newbie

Posts

Joined
Fri Nov 09, 2012 5:21 pm

Post by basevinyl » Sun Feb 15, 2015 6:15 am

Thanks for posting this I was looking for help on this for hours and you have ended my search with a step by step guide to the solution. Thanks! :)

User avatar
Newbie

Posts

Joined
Fri Aug 31, 2012 12:52 am

Post by subdivide » Mon Feb 16, 2015 1:43 pm

Glad it helped :)

User avatar
New member

Posts

Joined
Sun Jan 01, 2012 9:47 am

Post by basevinyl » Fri Feb 20, 2015 4:08 am

Hi Subdivide,

Thanks again!

I tried to duplicate this procedure to add some text to the product page and it didn't work. Could you help?

This is what I did:

Step 1: opened /catalog/language/english/product/product.php and added this: $_['your_text_variable'] = 'Text to appear in your product page';

Step 2: opened catalog/controller/product/product.php and added this: $this->data['text_variable'] = $this->language->get('your_text_variable');

Step 3: added <?php echo $text_variable; ?> to the catalog/view/template/product/product.tpl file where I wanted the text to appear.

I cleared my cache and loaded a page but no text appeared. Am I missing something or did I add the code to the wrong pages?

I was able to get it to work in the footer but not the product page.

Thanks if you could help!

Davidicus

User avatar
Newbie

Posts

Joined
Fri Aug 31, 2012 12:52 am

Post by subdivide » Fri Feb 20, 2015 4:17 am

The only thing I can think of is that perhaps your language file hasn't been loaded at the point where you placed your declaration.

Make sure you place your declaration:

Code: Select all

$this->data['text_variable'] = $this->language->get('your_text_variable');
After:

Code: Select all

$this->language->load('product/product');
Other than that, I can't explain why it wouldn't render.

User avatar
New member

Posts

Joined
Sun Jan 01, 2012 9:47 am
Who is online

Users browsing this forum: No registered users and 5 guests