Add Google Rich Snippets to your Prestashop store

Adding Google Rich Snippets to your Prestashop store can definitely enhance your visibility in the SERP, and substantially increase your traffic over time. Want to stand out from the crowd? Read on.

  • Version Used: Prestashop 1.5.2

Google Rich Snippets: an Introduction

Since this article is about how to integrate Google Rich Snippets into Prestashop, I will not dive deep into what they are or how they are structured, but in case you don’t have even the vaguest idea on what Rich Snippets are, take a look a the following picture:

Google rich snippets

Google rich snippets in SERP


 

See that nifty image in Google’s search results? See the reviews, and the info about the author? That result sure looks better than others, and stands out from the crowd. That’s what Rich Snippets are: richer content about the page linked in the search results. It can display all sort of stuff, increasing over time. At the moment, it’s images, song titles and duration, reviews, author bio and a couple of other things I’ll leave to you to uncover, here: More information about Google Rich Snippets

Adding Google Rich Snippets to Prestashop

Now that you know what Rich Snippets are, can you see their power? Think of your products, and think of how attractive they are in the search results at the moment: you might have added a nifty Meta title, and an intriguing Meta Description. But that’s all there is to it, isn’t it? It’s like many other results. Now think on what they can be with rich snippets! Let’s get started.

First things first: Google only accepts rich snippets for pages which have a single product (for some reason I still have to discover, I didn’t know it before they directly contacted me about my own product list: “Product markup on listing pages is not supported”). Thus, we will be adding them for the product.tpl file only. Then, since you’re probably selling different products than the demo ones, I’ll try to keep it as generic as possible. Feel free to reference yourself at the official Schema for more infomation abouut the type of products you’re selling.

PLEASE NOTE that the syntax highlighter plugin automatically adds ‘=””‘ to the itemscope property. Whenever you find it, just add ‘itemscope’ without the empty value!

 

Author information

Even though the Product item type actually supports images, they’re not supported by the search results page in Google. Thus, to overcome this, it’s possible to show the author’s logo for each result, provided that you have a Google plus page to link. Open up the header.tpl file of your theme, and add the following snippet inside the <head> tag:

	<link rel="author" href="https://plus.google.com/118067945609961636215/posts">

Of course, you will have to use your own Google plus profile for the href property.

 

The overall container

Open up product.tpl, located in your theme’s folder. regardless of the template you use, you should be able to locate the following code:

	<div id="primary_block" class="clearfix">

It may have other stuff attached, depending on the theme you use. If you can’t find it, be sure to locate the product data main container within the file. Now, let’s tell Google that we are dealing with a product. Add the following code to that div.

	<div id="primary_block" class="clearfix" itemscope itemtype="http://schema.org/Product">

 

Adding the product name, image and description

Now, Google knows that everything we put inside that block will be related to that single product. But still, it needs a name, right? Locate the product name. You can find it at about line 222 in the default template for prestashop 1.5.2. In any case, it should be wrapped in an h1 tag, like this:

	<h1>{$product->name|escape:'htmlall':'UTF-8'}</h1>	

Wrap the name is a span tag the following way:

	<h1><span itemprop="name">{$product->name|escape:'htmlall':'UTF-8'}</span></h1>

Right after the product name, if you’re using the default template, you will notice the “short description” block. I suggest you use that for the snippets description: locate <div id=”short_description_content” class=”rte align_justify”>{$product->description_short}</div><, and add itemprop=”description”

	<div id="short_description_content" class="rte align_justify" itemprop="description">{$product->description_short}</div>

Ok, our product has a name and description now. Let’s give our snippets some taste by adding the product image! This might a bit tricky for the non savvy: locate <div id=”image-block”>, at about line 176 in the default product.tpl. It should look like this:

	<div id="image-block">
		{if $have_image}
			<span id="view_full_size">
				<img src="{$link->getImageLink($product->link_rewrite, $cover.id_image, 'large_default')}" {if $jqZoomEnabled}class="jqzoom" alt="{$link->getImageLink($product->link_rewrite, $cover.id_image, 'thickbox_default')}"{else} title="{$product->name|escape:'htmlall':'UTF-8'}" alt="{$product->name|escape:'htmlall':'UTF-8'}" {/if} id="bigpic" width="{$largeSize.width}" height="{$largeSize.height}" />
				<span class="span_link">{l s='View full size'}</span>
			</span>
		{else}
			<span id="view_full_size">
				<img src="{$img_prod_dir}{$lang_iso}-default-large_default.jpg" id="bigpic" alt="" title="{$product->name|escape:'htmlall':'UTF-8'}" width="{$largeSize.width}" height="{$largeSize.height}" />
				<span class="span_link">{l s='View full size'}</span>
			</span>
		{/if}
	</div>

See that first img tag? Add the following property to it: itemprop=”image”, so that it looks this way

		<img itemprop="image" src="{$link->getImageLink($product->link_rewrite, $cover.id_image, 'large_default')}" {if $jqZoomEnabled}class="jqzoom" alt="{$link->getImageLink($product->link_rewrite, $cover.id_image, 'thickbox_default')}"{else} title="{$product->name|escape:'htmlall':'UTF-8'}" alt="{$product->name|escape:'htmlall':'UTF-8'}" {/if} id="bigpic" width="{$largeSize.width}" height="{$largeSize.height}" />

 

Brand and identifier

This is where problems begin. You might have your product’s Brand set as a feature, or manufacturer, or supplier; or none of these. Google strongly recommends that you add brand and identifier information for your product snippets, therefore we have to find a way out of it.

Case 1: manufacturer or supplier

Since Prestashop won’t add manufacturer and supplier information in the product page, we have to add it ourselves. Locate a suitable place for it; if you use the default theme, I’d suggest right after the product name. For manufactuters, add the following code:

	{l s="by"}<span itemprop="brand" itemscope itemtype="http://schema.org/Organization"> <span itemprop="name">{$product->manufacturer_name}</span></span>

For suppliers:

	{l s="by"}<span itemprop="brand" itemscope itemtype="http://schema.org/Organization"> <span itemprop="name">{$product->supplier_name}</span></span>

You may leave the “by” part out if you don’t want it, of course. You might also need to adjust the h1’s bottom margin, depending on your theme. Note that Google wants you to add a new itemscope (Organization) if you add the brand. Keep it in mind!

Case 2: feature

If, on the other hand, you decided to use a feature to add your product’s brand, things are a bit tricky. Depending on where you’re displaying it, you might need some extra code. if you’re just printing it out alone in some place, you can simply wrap it in a span and add the itemprop=”brand”. If this is not the case, and you’re displaying it in the “data sheet” tab, locate the tab’s position in the product.tpl file (about line 514 in the default template) and change it this way.

	{foreach from=$features item=feature}
        {if isset($feature.value)}
        	{if $feature.name == 'Brand'}
		  		<li><span>{$feature.name|escape:'htmlall':'UTF-8'}</span> <span itemprop="brand" itemscope itemtype="http://schema.org/Organization"><span itemprop="name">{$feature.value|escape:'htmlall':'UTF-8'}</span></span></li>
		  	{else}
		  		<li><span>{$feature.name|escape:'htmlall':'UTF-8'}</span> {$feature.value|escape:'htmlall':'UTF-8'}</li>
		  	{/if}
        {/if}
	{/foreach}

Please notice that you will need to change that “Brand” in “$feature.name == ‘Brand'” to the name of your brand feature. Now that the brand is settled, we can take care of the identifier.

Depending on what you sell, you might want to use different product properties for this one. The product “reference” should be okay in most cases, so let’s add it as identifier. Luckily, Prestashop already displays the product reference in the page, at about line 317 of the default template. Change it the following way:

	<span class="editable" itemprop="sku">{$product->reference|escape:'htmlall':'UTF-8'}</span>

 

Price and Currency

This is perhaps the most important part, because Google may decide not to add rich snippets for your site, if something is wrongly setup here (as I discovered with my own errors!).
Prices fall under the Offer itemscope, therefore we need to add a new schema reference. Locate the product’s main price, at about line 380 of the default template. It’s a bit messy, but this is what we are looking for:

	<p class="our_price_display">
	{if $priceDisplay >= 0 && $priceDisplay <= 2}
		<span id="our_price_display">{convertPrice price=$productPrice}</span>
		<!--{if $tax_enabled  && ((isset($display_tax_label) && $display_tax_label == 1) OR !isset($display_tax_label))}
			{if $priceDisplay == 1}{l s='tax excl.'}{else}{l s='tax incl.'}{/if}
		{/if}-->
	{/if}
	</p>

And here comes the trouble too. Prestashop currently displays the price as number and currency. This is bad for Google Rich Snippets. We need them split in order to add them to the snippet, both price and currency. Let’s start off by wrapping that item with the itemscope and itemprop:

	<p class="our_price_display" itemprop="offers" itemscope itemtype="http://schema.org/Offer">
	{if $priceDisplay >= 0 && $priceDisplay <= 2}
		<span id="our_price_display">{convertPrice price=$productPrice}</span>
		<!--{if $tax_enabled  && ((isset($display_tax_label) && $display_tax_label == 1) OR !isset($display_tax_label))}
			{if $priceDisplay == 1}{l s='tax excl.'}{else}{l s='tax incl.'}{/if}
		{/if}-->
	{/if}
	</p>

Now, Google knows it’s dealing with an offer (price). But it doesn’t exactly know where the price is yet. We have to use a bit of a trick. Change the previous code as follows:

	<p class="our_price_display" itemprop="offers" itemscope itemtype="http://schema.org/Offer">

	{$rightPrice = {convertPrice price=$productPrice}}

	{if $priceDisplay >= 0 && $priceDisplay <= 2}
		{if $currencyFormat == 1 || $currencyFormat == 3}
			{$currencySign} <span id="our_price_display">{$rightPrice|regex_replace:"/[\\{$currencySign}]/":""}</span>
		{else}
			<span id="our_price_display">{$rightPrice|regex_replace:"/[\\{$currencySign}]/":""}</span> {$currencySign}
		{/if}	
		<!--{if $tax_enabled  && ((isset($display_tax_label) && $display_tax_label == 1) OR !isset($display_tax_label))}
			{if $priceDisplay == 1}{l s='tax excl.'}{else}{l s='tax incl.'}{/if}
		{/if}-->
	{/if}
	</p>

Explanation: This probably left you more confused than ever. First off, since we need the whole formatted price with currency we assign it to a new variable. Then, the only way to have the price alone is to actually remove the currency using a regular expression (Learn more about Regular Expressions in Smarty), and we achieve it with this function:

	{$rightPrice|regex_replace:"/[\\{$currencySign}]/":""}

We are basically telling Smarty: Hey, if you find the currency character in that price, replace it with and empty string. Then, we have to deal with the way Prestashop formats currency. If you check the displayPrice method of the Tools class, you will see Prestashop can handle 5 types of currency formats: 2 with the sign before the price, 3 with the sign after it. We have to deal with this of course. Now, we tell Smarty to check the currency format code, if it’s 1 or 3, it means the format is “currency sign before the price”, else, it’s after.

		{if $currencyFormat == 1 || $currencyFormat == 3}
			{$currencySign} <span id="our_price_display">{$rightPrice|regex_replace:"/[\\{$currencySign}]/":""}</span>
		{else}
			<span id="our_price_display">{$rightPrice|regex_replace:"/[\\{$currencySign}]/":""}</span> {$currencySign}
		{/if}		

Lastly, let’s tell Google where the relevant information is:

	<p class="our_price_display" itemprop="offers" itemscope itemtype="http://schema.org/Offer">
	{if $priceDisplay >= 0 && $priceDisplay <= 2}
		{if $currencyFormat == 1 || $currencyFormat == 3}
			<meta itemprop="priceCurrency" content="{$currency->iso_code}" /> {$currencySign} <span id="our_price_display" itemprop="price">{$rightPrice|regex_replace:"/[\\{$currencySign}]/":""}</span>
		{else}
			<span id="our_price_display" itemprop="price">{$rightPrice|regex_replace:"/[\\{$currencySign}]/":""}</span> <meta itemprop="priceCurrency" content="{$currency->iso_code}" /> {$currencySign}
		{/if}	
		<!--{if $tax_enabled  && ((isset($display_tax_label) && $display_tax_label == 1) OR !isset($display_tax_label))}
			{if $priceDisplay == 1}{l s='tax excl.'}{else}{l s='tax incl.'}{/if}
		{/if}-->
	{/if}
	</p>

This way, we finally told big G which part is the price, and which the currency. And I thought this was okay…but! Then, I noticed that I was not getting the proper content for the price itemprop. I was still getting the currency! Why is that? It’s because Prestashop uses a pretty dumb way to replace prices with combination prices: thus, if you have attributes setup for the currenct product, the attribute combination price will be set with Javascript. Not so smart, we have to deal with it!
Open up product.js, which you can find in the /js/ folder of your theme. Locate the following code, at about line 400 on the default template:

	$('#our_price_display').text(our_price);

This little brat is causing our currency to appear again. Just before this snippet, add the following:

	var re = new RegExp("\\"+currencySign, "g");
	var signRemoved = our_price.replace(re, "");

Again, we are dealing with price formatting, but this time with javascript. First, we create a regExp object to use our currencySign variable as a pattern for the regular expression, then we remove it from the actual price. In the end, let’s replace the our_price variable with our new, priceless one, so that we get this:

	var re = new RegExp("\\"+currencySign, "g");
	var signRemoved = our_price.replace(re, "");

	$('#our_price_display').text(signRemoved);

If you refresh the page now, you should still get one currency, instead of having it two times. Everything should look as before, but if you check the page source, you’ll notice our tags have been added.

Google Microdata Added

Google Microdata Added

Conclusion

There is still much left with Google Rich Snippets, and the Product item type. I decided to leave things like “condition” and “lowPrice” behind, because they would have required major (and probably confusing) changes in the template. Think of this tutorial as a starting point to add more and more snippet stuff to your shop. And don’t forget the Product item type also supports Reviews. If you’re using the comments module, or any other module, be sure you add that microformat to your site, too!

In any case, here is the tutorial result on a demo shop, tested with the Rich Snippet Tool.

Google Structured Data Testing Tool

Google Structured Data Testing Tool

Note that i didn’t add the author information in the link, simply because I didn’t link my google profile to the page. Here is how it looks with the authorship information correctly added:

Nemo's Post Scriptum Store's Rich Snippet

Nemo’s Post Scriptum Store’s Rich Snippet

 

Additional Resources

You like the tuts and want to say "thank you"? Well, you can always feel free to donate:

  • Juraj22

    Just an idea…

    How about implementing breadcrumb to categories/subcategories?

    Breadcrumb snippet cannot be placed on product page (product snippet is better here). As far, as google reads the very first type it recognizes, breadcrumb snippet can’t be used in breadcrumb.tpl (as far as it would override e.g. product snippet). In my opinion, category.tpl is fine place, but I’m not experienced enough to make it working…

  • http://www.gambrinus.com.ua Elena

    I have prestashop 1.53. I’m trying to install only the photo in google rich snippets. Dont care about the prices coz i dont have prices yet published.. but in rich snippet tool the picture of every producrt doesnt wanna apear. Only my google+ i see… Any help ? I did the part of your guide till the part of the change of image (until the brand part). What do i do wrong ?

    • http://nemops.com Nemo

      As mentioned in the article, Google doesn’t support Images for the Product data type at the moment :(

  • Maury Markowitz

    Found a potential problem…

    This is working great on my site when I have a basic product. But if I have a product that has Combinations, the currency sign re-appears in the JS side.

    I’m working it…

    • Maury Markowitz

      Got it!

      Instead of using the RegEx in the JS, you should use the trim methods in jQuery instead. Like this:

      var our_price = ”;
      if (productPrice > 0) {
      our_price = formatCurrency(productPrice, currencyFormat, currencySign, currencyBlank);
      } else {
      our_price = formatCurrency(0, currencyFormat, currencySign, currencyBlank);
      }
      var our_price_no_sign = our_price.replace(currencySign, ”).trim();

      Yet another example of why I avoid RegEx like the plague.

      p.s. No, there’s not a lot of plague in Toronto, so I’m not really avoiding it that much… :-)

      • http://cobracartech.co.uk/ Michael McNeillis

        Hi Maury,
        where exactly can the jQuery file be found and what is it’s exact name please?
        I’m not very programmer savvy and basically only done the snippets by copying and pasting!
        Thanks

  • Daniel

    Hi,

    it works for my Prestashop 1.5.3.1. Google get the right information but in the product detail view on my website it shows the price without decimal place. looks like $ 5 instead of $ 5.55.
    Can you help?
    The snippet tool get all information correct.

    • http://nemops.com Nemo

      Weird, check that you’re not rounding it up in the javascript (you can try turning javascript off for the tests, so that you at least know if the problem comes from there)

      • Antonio

        Hi Nemo, useful post, thanks a lot.
        I have an off topic question. I’m working to avoid duplicate content using and implementint the “rel canonical tag”, but i also need to paginate each title of pages.
        Ex. Title tag for a page Fashion wears, title tag Fashion wears page 2 for page 2, title tag Fashion wears page 3 for page 3, ans so on. Have you a solution to do it?

  • http://www.lancastrian-it.co.uk/ shoulders

    great info as usual.

    what would be great is if you had a copy of the product.tpl untouched and then one where all these changes have been made so i can use a text compare ans see them in context. (including PS version number)

    cheers

  • Maury Markowitz

    Good form to close those meta tags on the currency too :-)

  • Maury Markowitz

    A question…

    I found another way to implement this at this site:

    http://help.addshoppers.com/customer/portal/articles/688036-addshoppers-product-schema-codes-

    As you can see, it is a single block of code that you can add to the product page. This is much easier to maintain from a code maintenance point of view.

    However, I do know that Google sometimes “punishes” text that is hidden or otherwise not visible. Does anyone know if this is the case for schema.org content?

    • http://nemops.com Nemo

      Google will never show content that was intentionally hidden, taht article is completely wrong. Google is really clear about their politics: “We will not take in consideration any content that is not visible, except for some additional metadata”

      • Maury Markowitz

        “except for some additional metadata”

        Hmmm! Worthy of a post on their forums perhaps.

        • Juraj22

          No Maury, it is definitelly not worth of a post… Just follow Nemo’s link in this tutorial, and read about those exceptions…

          In general, google can see only displayed data. You can simply test it. Just type in command line of your web browser “cache:www.example.com” (change for your site), and on the right side click text-only version. This is what google can see. If your page is not indexed yet, use Lynx, ot other type of text-only browser.

          In general, rich snippets are about defining the library you use (itemscope=…) and tagging your variable (itemprop=…). Yes, you can have one block of code, but you must display data in block. If you want to keep the structure of your document (like in prestashop), it is necessary to do it Nemo’s way.

  • Maury Markowitz

    What a fantastic article! I can’t wait to give this a try.

    Except… I am a bit confused about themes and modifications.

    If I install a new theme, I have to do all of this again, right?

    When a new version of Presta comes out, do I have to change anything?

    I’m still wrapping my head around all of this.

    • http://nemops.com Nemo

      Hi,
      Thanks! And yes, you’ll have to re-do this if you change/update the theme (if you hardcoded it in the default one without copying it, for example)

      • Maury Markowitz

        Bah! It appears the developer of my theme removed all of the contents in question. For instance, there is no H1 anywhere in the product.tpl!

  • radus

    Seems that because of Prestashops architecture, Availability Status cannot be implemented [ to what I know so far ].

    This is sad, because the new Adwords Dynamic Search Ads [ aka. Adwords for Long Tail KeyWords ] would automatically stop ads for products without stock [ and save you some money + customers troubles ]

    mark-up: In stock

    Specifications Schema.org > http://schema.org/ItemAvailability

    – Discontinued
    – InStock
    – InStoreOnly
    – OnlineOnly
    – OutOfStock
    – PreOrder
    – BackOrder

    Prestashop 1.5.3


    quantity available_later && $allow_oosp) OR ($product->quantity > 0 && !$product->available_now) OR !$product->available_for_order OR $PS_CATALOG_MODE} style=”display: none;”{/if}>
    {l s=’Availability:’}
    quantity
    {if $product->quantity available_later}{else}{l s=’This product is no longer in stock’}{/if}{else}{$product->available_now}{/if}

    Sad but true -:(

    cheers,

    r

  • radus

    I got a warning and have no idea about it.

    Please help out.

    PS. Currency is “Lei”

    Many thanks,

    Warning: preg_replace(): Compilation failed: PCRE does not support \L, \l, \N, \U, or \u at offset 2 in /var/www/clients/client1/web1/web/tools/smarty/plugins/modifier.regex_replace.php on line 33

    {if $priceDisplay >= 0 && $priceDisplay <= 2}
    {if $currencyFormat == 1 || $currencyFormat == 3}
    iso_code}”> {$currencySign} {$productPrice|regex_replace:”/[\\{$currencySign}]/”:””}
    {else}
    {$productPrice|regex_replace:”/[\\{$currencySign}]/”:””} iso_code}”> {$currencySign}
    {/if}

    {/if}

    • radus

      I used a “quick& dirty” workaround by inserting a space in Back Office > Localization > Currencies > Edit > Symbol by inserting a space instead of “Lei” used ” Lei”.

      Could this be done adjusting the current regex rule ?

      I mean, if the “Lire” would be in circulation, situation would be similar to “Lei”.

      Thanks again,

      R

  • Juri

    Hi!
    After I made those operations on my site, products pages are not working anymore. Can you tell me if there is my mistake or something different? I can send you product.tpl file to check.

  • Stanislav

    You’re wrong about the splitting of price and currency.

    Google expects the price to be with currency. Here you can check the specification examples:
    http://schema.org/Offer

    • http://nemops.com Nemo

      They should crarify this in their heads then, since they wrote me about this, saying they were not adding Snippets for my store because the price MUST be a floating point number, without currency, which needs to be separated.

      • radus

        @Noe, YOU are right about the issue. schema.org is very relaxed about the price filed, but in a RDFa implementation on rich snippets [ compatible with schema.org ], price should [ not must ] be displayed as YOU implemented it.
        More rigurous and rewarding but more difficult.

        ++1.

        @Stanislav

        http://schema.org/PriceSpecification

        price Number or Text The offer price of a product, or of a price component when attached to PriceSpecification and its subtypes.
        priceCurrency Text The currency (in 3-letter ISO 4217 format) of the offer price or a price component, when attached to PriceSpecification and its subtypes.

        http://schema.org/docs/schema_org_rdfa.html

        price
        The offer price of a product, or of a price component when attached to PriceSpecification and its subtypes.
        Domain: Offer
        Domain: PriceSpecification
        Range: Number
        Range: Text
        priceCurrency
        The currency (in 3-letter ISO 4217 format) of the offer price or a price component, when attached to PriceSpecification and its subtypes.
        Domain: Offer
        Domain: PriceSpecification
        Range: Text

        Cheers to all,

        • Juraj22

          Speaking about currency, Nemo, inyour code:

          p class=”our_price_display” itemprop=”offers”

          Shouldn’t be itemprop “offer”?

          Anyway, in testing tool it seems to work both ways…

  • http://deli-cart.com/ Deli-Cart

    Thanks for the tutorial, it was extremely helpful. Wasn’t easy but it seems to be working. :) I used the “GoodRelations” module for the rich snippets but I wasn’t happy. This is much more practical, I’ve simply uninstalled the other module. Thanks again!

  • Utopia

    Hi,
    Thanks for this. However I was wondering whether you tested this with sites where multiple currencies were enabled. For example, in mine everything works fine for USD which is the default currency. However if I select a different currency, for items with multiple attribute combinations the currency appears twice.

    Again this does not happen to USD even if there are combinations; AND it does not happen to other currencies if there is only one item (ie not a combination).

    I am sure it is a minor issue and easy to fix. Any pointers would be appreciated. I am using Prestashop 1.5.3

    Regards

    • http://nemops.com Nemo

      Hi,
      yes, i tested it with multipèle currencies/combinations in 1.5.2, maybe something changed in 1.5.3.

      • Utopia

        If you have time please look in to it.

  • http://www.bicisurbanas.com mestallo

    Hi Nemo

    I tried it in PS 1.5.3
    First Page is ok but clicking in a product it gives me a 500 error saying: The website is Down or Under Maintenance

    Did you check it in 1.5.3?

    • http://www.estoic.net Noneleft

      Mine is 1.5.3 – default theme – and as I say it worked like a charm.
      Closed all your tags ?

    • Juraj22

      Yes, it works in 1.5.3.

      Check your “itemscope”, should be plain, not itemscope=””

  • http://www.estoic.net Noneleft

    This is great and worked a charm.
    How do you add in the star rating that is in the google example?

  • http://www.pcexperts.com.mx moy2010

    Hum, I did (I think) everything following this and the schema instructions, and now I’m getting this error :S:

    Fatal error: Uncaught exception ‘SmartyCompilerException’ with message ‘Syntax Error in template “/home/XXX/product.tpl” on line 694 “” unclosed {if} tag’ in /home/content/04/9297304/html/tools/smarty/sysplugins/smarty_internal_templatecompilerbase.php:627

    LoL, dunno where the error is xD

    • http://nemops.com Nemo

      It seems that you forgot to close one of the If tags, you should better take back your backup and do the whole process from scratch ;)

      • http://www.pcexperts.com.mx moy2010

        Got it :D. I was missing this in the price div:

        {$rightPrice|regex_replace:”/[\\{$currencySign}]/”:””} {$currencySign}
        {/if}

        • http://www.pcexperts.com.mx moy2010

          Hum, Now checking the URL with the Google Tools, I find that everything is ok except the price :S. The code lines for the price are these in product.tpl:

          {$rightPrice = {convertPrice price=$productPrice}}

          {if $priceDisplay >= 0 && $priceDisplay <= 2}
          {if $currencyFormat == 1 || $currencyFormat == 3}
          {$currencySign} {$rightPrice|regex_replace:”/[\\{$currencySign}]/”:””}
          {else}
          {$rightPrice|regex_replace:”/[\\{$currencySign}]/”:””} {$currencySign}
          {/if}

          {/if}

          In the Snippets tool it lists it as an item with the type “offer”, but the price and the pricecurrency are missing as seen in your example :S.

  • http://bostonrecycling.net fosg2000

    can you install it for me?, i’ll pay for of course !

    • http://nemops.com Nemo

      Hi,
      Can you please email me at nemo[at]nemops.com with the exact details?

  • webber55

    Your code for adding manufacturers and suppliers looks to be identical for both. Having the same keys.

    {l s=”by”} {$product->manufacturer_name}
    For suppliers:

    {l s=”by”} {$product->supplier_name}

  • radus

    SUPER !!!

    Could you plese add with mark-up for Availability Status , please ?

    thanks again,

    r

    • http://nemops.com Nemo

      It should be something like this:
      quantity < = 0} class="warning_inline"{/if}>
      {if $product->quantity < = 0}{if $allow_oosp}{$product->available_later}{else}{l s='This product is no longer in stock'}{/if}{else}{$product->available_now}{/if}

      At about line 339 of Product.tpl

      • radus

        thanks again !

      • Alex

        Hi! Could you please describe how exactly could I mark up the product availability status?

Store Top Sales

You like the tuts and want to say "thank you"? Well, you can always feel free to donate: