Jump to content

[TUTORIAL] Product tabs like in 1.5


Recommended Posts

Tutorial: product tabs in 1.6


As you probably noticed - in prestashop 1.6 tabs on product page are displayed as a wide horizontal bars. These sections don't look like real tabs (like it was in prestashop 1.5 and in other old releases of prestashop). In this guide i want to show you how to change the way of how these tabs are displayed.


 


 


 


prestashop-page-tabs-modification-presta


 


 


full step by step guide you can find here: product tabs in 1.6


  • Like 11
Link to comment
Share on other sites

well, for us it's obvious :)

but you can find here a lot of merchants who don't know how to deal with these styles

so it's worth to write detailed information about solution

 

community will be impressed ;)

  • Like 1
Link to comment
Share on other sites

Thanks for the tutorial Milosz

 

My need is different tho. I'd like to add more tabs on the Product page (and obviously being able to add the content of each tab in my back-office" )

 

I saw on your website that you sell a module called "Product page content blocks". If I understand correctly, thats what it does?

 

I would like to modify the css as well

 

here's 2 screenshots of what I have in mind, dont bother with the design ;)n6gj.jpg

 

 

w06o.jpg

Link to comment
Share on other sites

  • 2 weeks later...

Can you help me?

I need to put the yotpo module only on the "Avaliações" tab.

Here's what happening and how is the code in yotpo, the section I think have to change.

public function hookProductTab()
	{
		if ($this->parseProductId() != null && Configuration::get('yotpo_widget_location') == 'tab') {
			if (version_compare(_PS_VERSION_, '1.6') >= 0) {
				return '<li><a href="#idTab5" class="idTabHrefShort page-product-heading">'.Configuration::get('yotpo_widget_tab_name').'</a></li>';	
			}
			return '<li><a href="#idTab5">'.Configuration::get('yotpo_widget_tab_name').'</a></li>';
		}
		return null;
	}

	public function hookProductTabContent()
	{
		$product = $this->getPageProduct(null);
		if ($product != null && Configuration::get('yotpo_widget_location') == 'tab')
			return '<div id="idTab-yotpo">'.$this->showWidget($product).'</div>';
	}

I've already made the modification you say in the tutorial.

 

Any help is good.

post-310373-0-60101300-1402969513_thumb.jpg

Link to comment
Share on other sites

  • 1 month later...
  • 1 month later...

Hi,

Excellent modification, but it has cleared the content styles of each tab. ie data sheet now has no style, accessories has no style.

Have I missed something?

 

Thanks so much.

Find idTab2 in product.tpl and change code to this:

 

 
<ul id="idTab2" class="bullet">


 <table class="table-data-sheet">          
                    {foreach from=$features item=feature}
                    <tr class="{cycle values="odd,even"}">
                        {if isset($feature.value)}              
                        <td>{$feature.name|escape:'html':'UTF-8'}</td>
                        <td>{$feature.value|escape:'html':'UTF-8'}</td>
                        {/if}
                    </tr>
                    {/foreach}
                </table>
        </ul>
Ir brings back style for data sheet.
Edited by cikcak (see edit history)
Link to comment
Share on other sites

  • 4 weeks later...
  • 3 weeks later...

Great Mod, just what i was looking for. Many thanks

 

Is there a way of including the "Volume Discounts" section into the tabs (that is the catalog price rules section)

Link to comment
Share on other sites

  • 4 weeks later...

Great Mod, just what i was looking for. Many thanks

 

Is there a way of including the "Volume Discounts" section into the tabs (that is the catalog price rules section)

Any ideas?

Link to comment
Share on other sites

  • 2 weeks later...

Hi from Greece

 

A week ago I test your modification at bootstrap theme and it worked perfect, but when I change my theme and try again your modifications the result was a blank screen.

 

So I change back the product.tlp and my product pages work again. Please inform how can I modify the product.tlp so I have products tubs like prestashop 1.5

 

You can visit my eshop http://eshop.easywatch.gr

 

Here you can find my product.tlp and global.css https://www.dropbox.com/sh/8alx6b8336nmen5/AADXDrd9NYtTfWqQ2KFMHSnFa?dl=0

Link to comment
Share on other sites

Hi from Greece

 

A week ago I test your modification at bootstrap theme and it worked perfect, but when I change my theme and try again your modifications the result was a blank screen.

 

So I change back the product.tlp and my product pages work again. Please inform how can I modify the product.tlp so I have products tubs like prestashop 1.5

 

You can visit my eshop http://eshop.easywatch.gr

 

Here you can find my product.tlp and global.css https://www.dropbox.com/sh/8alx6b8336nmen5/AADXDrd9NYtTfWqQ2KFMHSnFa?dl=0

 

white page = errors.

apply changes and turn on error reporting

you will see error report what is wrong with modification you applied. 

paste it here.

  • Like 1
Link to comment
Share on other sites

Thanks vekia for your quick respond

 

I applied changes (by adding your code to the product.tlp) and I enabled the error reporting (I edit the defines.inc.php -> define('_PS_MODE_DEV_', true); ) and I don’t get any error message but a white page !  :o

 

eshop -> http://eshop.easywatch.gr/

 

product -> http://eshop.easywatch.gr/el/cctv/2-ds-2ae7154-a.html

Link to comment
Share on other sites

Hi from France!

 

I have just a question: how did you manage to display Tabs for products? I'm using PS 1.6.0.9 with the default-bootstrap theme, and I can't see anything to use ou activate them.

I would be very glad to use it, because my products description are sooo loooong…

 

Thank you very much for your help.

Link to comment
Share on other sites

Hi from France!

 

I have just a question: how did you manage to display Tabs for products? I'm using PS 1.6.0.9 with the default-bootstrap theme, and I can't see anything to use ou activate them.

I would be very glad to use it, because my products description are sooo loooong…

 

Thank you very much for your help.

There is a link on the first message in this thread that takes you to a blog that shows you how to do it

 

http://www.prestashop.com/forums/topic/333165-tutorial-product-tabs-like-in-15/

Link to comment
Share on other sites

Thanks vekia for your quick respond

 

I applied changes (by adding your code to the product.tlp) and I enabled the error reporting (I edit the defines.inc.php -> define('_PS_MODE_DEV_', true); ) and I don’t get any error message but a white page !  :o

 

eshop -> http://eshop.easywatch.gr/

 

product -> http://eshop.easywatch.gr/el/cctv/2-ds-2ae7154-a.html

 

 

done

 

it was a case of file encoding

i bet that you changed file with simple text editor like notepad

file coding was set to ANSI instead of UTF-8 without bom

 

i resaved file with notepad++ (changed encoding to utf-8) and everything started to work.

 

 

while you edit prestashop files, edit them with some tool like notepad++ or other php/html/js/css files editor. you will avoid problems related to wrong file encoding.

  • Like 1
Link to comment
Share on other sites

There is a link on the first message in this thread that takes you to a blog that shows you how to do it

 

http://www.prestashop.com/forums/topic/333165-tutorial-product-tabs-like-in-15/

Sure, I have read it of course, but it means that products tabs are already present, by default, in default-bootstrap theme : "in prestashop 1.6 tabs on product page are displayed as a wide horizontal bars." It does say how to do that like in PS 1.5, and when I read this sentence, I understand that product tabs do exist by default.

But if you say that products tabs are not included in bootstrap-default, then OK, I'll hack the code as explain.

Link to comment
Share on other sites

yea that's right

prestashop 1.6 default bootstrap template has got "tabs" feature, but these tabs appear like wide horizontal bars (not real tabs)

this guide shows hot to change these wide horizontal tabs to real tabs like it was in ps 1.5 default theme.

  • Like 1
Link to comment
Share on other sites

  • 3 weeks later...

Hi Vekia,

 

I changed everything from your description but my site mixing the original 1.6 tab style and a "new" old 1.5 tab style! (Look at the pictures below)

What is the problem?

 

Here is my some print screen and some comments to the page2.jpg file (Is this a hungarian language site)

 

First row "Egyéb infó" in english "Other info"

Second row "Kellékek" in english "Accessories"

Third row "Vélemények" in english "Review"

Fourth row "Data Sheet" same like "Data sheet" (is this an extra modul)

 

Thank You for your kindly help!


 

 

post-883272-0-21233900-1418155329_thumb.jpg

post-883272-0-10960900-1418155339_thumb.jpg

Link to comment
Share on other sites

Sorry, but it`s only working with default theme. Not with mine, which I bought for new eshop, this is product.tpl, could u help me?:

{*
* 2007-2014 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to [email protected] so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author PrestaShop SA <[email protected]>
*  @copyright  2007-2014 PrestaShop SA
*  @license    http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
*  International Registered Trademark & Property of PrestaShop SA
*}
{include file="$tpl_dir./errors.tpl"}
{if $errors|@count == 0}
{if !isset($priceDisplayPrecision)}
{assign var='priceDisplayPrecision' value=2}
{/if}
{if !$priceDisplay || $priceDisplay == 2}
{assign var='productPrice' value=$product->getPrice(true, $smarty.const.NULL, $priceDisplayPrecision)}
{assign var='productPriceWithoutReduction' value=$product->getPriceWithoutReduct(false, $smarty.const.NULL)}
{elseif $priceDisplay == 1}
{assign var='productPrice' value=$product->getPrice(false, $smarty.const.NULL, $priceDisplayPrecision)}
{assign var='productPriceWithoutReduction' value=$product->getPriceWithoutReduct(true, $smarty.const.NULL)}
{/if}
<div itemscope itemtype="http://schema.org/Product">
<div class="primary_block row">
{if !$content_only}
<div class="container">
<div class="top-hr"></div>
</div>
{/if}
{if isset($adminActionDisplay) && $adminActionDisplay}
<div id="admin-action">
<p>{l s='This product is not visible to your customers.'}
<input type="hidden" id="admin-action-product-id" value="{$product->id}" />
<input type="submit" value="{l s='Publish'}" name="publish_button" class="exclusive" />
<input type="submit" value="{l s='Back'}" name="lnk_view" class="exclusive" />
</p>
<p id="admin-action-result"></p>
</div>
{/if}
{if isset($confirmation) && $confirmation}
<p class="confirmation">
{$confirmation}
</p>
{/if}
<!-- left infos-->  
<div class="pb-left-column col-xs-12 col-sm-4 col-md-6">
<!-- product img-->        
<div id="image-block" class="clearfix">
{if $product->new}
<span class="new-box">
<span class="new-label">{l s='New'}</span>
</span>
{/if}
{if $product->on_sale}
<span class="sale-box no-print">
<span class="sale-label">{l s='Sale!'}</span>
</span>
{elseif $product->specificPrice && $product->specificPrice.reduction && $productPriceWithoutReduction > $productPrice}
<span class="discount">{l s='Reduced price!'}</span>
{/if}
{if $have_image}
<span id="view_full_size">
{if $jqZoomEnabled && $have_image && !$content_only}
<a class="jqzoom" title="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}" rel="gal1" href="{$link->getImageLink($product->link_rewrite, $cover.id_image, 'thickbox_default')|escape:'html':'UTF-8'}" itemprop="url">
<img itemprop="image" src="{$link->getImageLink($product->link_rewrite, $cover.id_image, 'large_default')|escape:'html':'UTF-8'}" title="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}" alt="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}"/>
</a>
{else}
<img id="bigpic" itemprop="image" src="{$link->getImageLink($product->link_rewrite, $cover.id_image, 'large_default')|escape:'html':'UTF-8'}" title="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}" alt="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}" width="{$largeSize.width}" height="{$largeSize.height}"/>
{if !$content_only}
<span class="span_link no-print">{l s='View larger'}</span>
{/if}
{/if}
</span>
{else}
<span id="view_full_size">
<img itemprop="image" src="{$img_prod_dir}{$lang_iso}-default-large_default.jpg" id="bigpic" alt="" title="{$product->name|escape:'html':'UTF-8'}" width="{$largeSize.width}" height="{$largeSize.height}"/>
{if !$content_only}
<span class="span_link">
{l s='View larger'}
</span>
{/if}
</span>
{/if}
</div> <!-- end image-block -->
{if isset($images) && count($images) > 0}
<!-- thumbnails -->
<div id="views_block" class="clearfix {if isset($images) && count($images) < 2}hidden{/if}">
 
{if isset($images) && count($images) > 3}
<span class="view_scroll_spacer">
<a id="view_scroll_left" class="" title="{l s='Other views'}" href="javascript:{ldelim}{rdelim}">
{l s='Previous'}
</a>
</span>
{/if}
 
<div id="thumbs_list">
<ul id="thumbs_list_frame">
{if isset($images)}
{foreach from=$images item=image name=thumbnails}
{assign var=imageIds value="`$product->id`-`$image.id_image`"}
{if !empty($image.legend)}
{assign var=imageTitle value=$image.legend|escape:'html':'UTF-8'}
{else}
{assign var=imageTitle value=$product->name|escape:'html':'UTF-8'}
{/if}
<li id="thumbnail_{$image.id_image}"{if $smarty.foreach.thumbnails.last} class="last"{/if}>
<a{if $jqZoomEnabled && $have_image && !$content_only} href="javascript:void(0);" rel="{literal}[spam-filter]/literal}gallery: 'gal1', smallimage: '{$link->getImageLink($product->link_rewrite, $imageIds, 'large_default')|escape:'html':'UTF-8'}',largeimage: '{$link->getImageLink($product->link_rewrite, $imageIds, 'thickbox_default')|escape:'html':'UTF-8'}'{literal[spam-filter]{/literal}"{else} href="{$link->getImageLink($product->link_rewrite, $imageIds, 'thickbox_default')|escape:'html':'UTF-8'}" data-fancybox-group="other-views" class="fancybox{if $image.id_image == $cover.id_image} shown{/if}"{/if} title="{$imageTitle}">
 
<img class="img-responsive" id="thumb_{$image.id_image}" src="{$link->getImageLink($product->link_rewrite, $imageIds, 'cart_default')|escape:'html':'UTF-8'}" alt="{$imageTitle}" title="{$imageTitle}" height="{$cartSize.height}" width="{$cartSize.width}" itemprop="image" />
</a>
</li>
{/foreach}
{/if}
</ul>
</div> <!-- end thumbs_list -->
 
{if isset($images) && count($images) > 3}
<a id="view_scroll_right" title="{l s='Other views'}" href="javascript:{ldelim}{rdelim}">
{l s='Next'}
</a>
{/if}
 
</div> <!-- end views-block -->
<!-- end thumbnails -->
{/if}
{if isset($images) && count($images) > 1}
<p class="resetimg clear no-print">
<span id="wrapResetImages" style="display: none;">
<a href="{$link->getProductLink($product)|escape:'html':'UTF-8'}" name="resetImages">
<i class="icon-repeat"></i>
{l s='Display all pictures'}
</a>
</span>
</p>
{/if}
 
</div> <!-- end pb-left-column -->
<!-- end left infos--> 
<!-- center infos -->
<div class="pb-center-column col-xs-12 col-sm-6">
 
<h1 itemprop="name">{$product->name|escape:'html':'UTF-8'}</h1>
<p id="product_reference"{if empty($product->reference) || !$product->reference} style="display: none;"{/if}>
<label>{l s='Model'} </label>
<span class="editable" itemprop="sku">{if !isset($groups)}{$product->reference|escape:'html':'UTF-8'}{/if}</span>
</p>
{if $product->condition}
<p id="product_condition">
<label>{l s='Condition'} </label>
{if $product->condition == 'new'}
<link itemprop="itemCondition" href="http://schema.org/NewCondition"/>
<span class="editable">{l s='New'}</span>
{elseif $product->condition == 'used'}
<link itemprop="itemCondition" href="http://schema.org/UsedCondition"/>
<span class="editable">{l s='Used'}</span>
{elseif $product->condition == 'refurbished'}
<link itemprop="itemCondition" href="http://schema.org/RefurbishedCondition"/>
<span class="editable">{l s='Refurbished'}</span>
{/if}
</p>
{/if}
{if $product->description_short || $packItems|@count > 0}
<div id="short_description_block">
{if $product->description_short}
<div id="short_description_content" class="rte align_justify" itemprop="description">{$product->description_short}</div>
{/if}
 
{if $product->description}
<p class="buttons_bottom_block">
<a href="javascript:{ldelim}{rdelim}" class="button">
{l s='More details'}
</a>
</p>
{/if}
 
{if $product->online_only}
<p class="online_only">{l s='Online only'}</p>
{/if}
<!--{if $packItems|@count > 0}
<div class="short_description_pack">
<h3>{l s='Pack content'}</h3>
{foreach from=$packItems item=packItem}
 
<div class="pack_content">
{$packItem.pack_quantity} x <a href="{$link->getProductLink($packItem.id_product, $packItem.link_rewrite, $packItem.category)|escape:'html':'UTF-8'}">{$packItem.name|escape:'html':'UTF-8'}</a>
<p>{$packItem.description_short}</p>
</div>
{/foreach}
</div>
{/if}-->
</div> <!-- end short_description_block -->
{/if}
 
<!-- pb-right-column-->
<div class="pb-right-column">
{if ($product->show_price && !isset($restricted_country_mode)) || isset($groups) || $product->reference || (isset($HOOK_PRODUCT_ACTIONS) && $HOOK_PRODUCT_ACTIONS)}
<!-- add to cart form-->
<form id="buy_block"{if $PS_CATALOG_MODE && !isset($groups) && $product->quantity > 0} class="hidden"{/if} action="{$link->getPageLink('cart')|escape:'html':'UTF-8'}" method="post">
<!-- hidden datas -->
<p class="hidden">
<input type="hidden" name="token" value="{$static_token}" />
<input type="hidden" name="id_product" value="{$product->id|intval}" id="product_page_product_id" />
<input type="hidden" name="add" value="1" />
<input type="hidden" name="id_product_attribute" id="idCombination" value="" />
</p>
<div class="box-info-product">
<div class="content_prices clearfix">
{if $product->show_price && !isset($restricted_country_mode) && !$PS_CATALOG_MODE}
<!-- prices -->
<div class="price">
<p class="our_price_display" itemprop="offers" itemscope itemtype="http://schema.org/Offer">
{if $product->quantity > 0}<link itemprop="availability" href="http://schema.org/InStock"/>{/if}
{if $priceDisplay >= 0 && $priceDisplay <= 2}
<span id="our_price_display" itemprop="price">{convertPrice price=$productPrice}</span>
<!--{if $tax_enabled  && ((isset($display_tax_label) && $display_tax_label == 1) || !isset($display_tax_label))}
{if $priceDisplay == 1}{l s='tax excl.'}{else}{l s='tax incl.'}{/if}
{/if}-->
<meta itemprop="priceCurrency" content="{$currency->iso_code}" />
{hook h="displayProductPriceBlock" product=$product type="price"}
{/if}
</p>
<p id="reduction_percent" {if !$product->specificPrice || $product->specificPrice.reduction_type != 'percentage'} style="display:none;"{/if}>
<span id="reduction_percent_display">
{if $product->specificPrice && $product->specificPrice.reduction_type == 'percentage'}-{$product->specificPrice.reduction*100}%{/if}
</span>
</p>
<p id="reduction_amount" {if !$product->specificPrice || $product->specificPrice.reduction_type != 'amount' || $product->specificPrice.reduction|floatval ==0} style="display:none"{/if}>
<span id="reduction_amount_display">
{if $product->specificPrice && $product->specificPrice.reduction_type == 'amount' && $product->specificPrice.reduction|floatval !=0}
-{convertPrice price=$productPriceWithoutReduction-$productPrice|floatval}
{/if}
</span>
</p>
<p id="old_price"{if (!$product->specificPrice || !$product->specificPrice.reduction) && $group_reduction == 0} class="hidden"{/if}>
{if $priceDisplay >= 0 && $priceDisplay <= 2}
{hook h="displayProductPriceBlock" product=$product type="old_price"}
<span id="old_price_display">{if $productPriceWithoutReduction > $productPrice}{convertPrice price=$productPriceWithoutReduction}{/if}</span>
<!-- {if $tax_enabled && $display_tax_label == 1}{if $priceDisplay == 1}{l s='tax excl.'}{else}{l s='tax incl.'}{/if}{/if} -->
{/if}
</p>
{if $priceDisplay == 2}
<br />
<span id="pretaxe_price">
<span id="pretaxe_price_display">{convertPrice price=$product->getPrice(false, $smarty.const.NULL)}</span>
{l s='tax excl.'}
</span>
{/if}
</div> <!-- end prices -->
 
{if $packItems|@count && $productPrice < $product->getNoPackPrice()}
<p class="pack_price">{l s='Instead of'} <span style="text-decoration: line-through;">{convertPrice price=$product->getNoPackPrice()}</span></p>
{/if}
{if $product->ecotax != 0}
<p class="price-ecotax">{l s='Including'} <span id="ecotax_price_display">{if $priceDisplay == 2}{$ecotax_tax_exc|convertAndFormatPrice}{else}{$ecotax_tax_inc|convertAndFormatPrice}{/if}</span> {l s='for ecotax'}
{if $product->specificPrice && $product->specificPrice.reduction}
<br />{l s='(not impacted by the discount)'}
{/if}
</p>
{/if}
{if !empty($product->unity) && $product->unit_price_ratio > 0.000000}
{math equation="pprice / punit_price"  pprice=$productPrice  punit_price=$product->unit_price_ratio assign=unit_price}
<p class="unit-price"><span id="unit_price_display">{convertPrice price=$unit_price}</span> {l s='per'} {$product->unity|escape:'html':'UTF-8'}</p>
{hook h="displayProductPriceBlock" product=$product type="unit_price"}
{/if}
{/if} {*close if for show price*}
{hook h="displayProductPriceBlock" product=$product type="weight"}
<div class="clear"></div>
</div> <!-- end content_prices -->
<div class="product_attributes clearfix">
<!-- quantity wanted -->
{if !$PS_CATALOG_MODE}
<p id="quantity_wanted_p"{if (!$allow_oosp && $product->quantity <= 0) || !$product->available_for_order || $PS_CATALOG_MODE} style="display: none;"{/if}>
<label>{l s='Quantity'}</label>
<input type="text" name="qty" id="quantity_wanted" class="text" value="{if isset($quantityBackup)}{$quantityBackup|intval}{else}{if $product->minimal_quantity > 1}{$product->minimal_quantity}{else}1{/if}{/if}" />
<a href="#" data-field-qty="qty" class="btn btn-default button-minus product_quantity_down">
<span><i class="icon-minus"></i></span>
</a>
<a href="#" data-field-qty="qty" class="btn btn-default button-plus product_quantity_up ">
<span><i class="icon-plus"></i></span>
</a>
<span class="clearfix"></span>
</p>
{/if}
<!-- minimal quantity wanted -->
<p id="minimal_quantity_wanted_p"{if $product->minimal_quantity <= 1 || !$product->available_for_order || $PS_CATALOG_MODE} style="display: none;"{/if}>
{l s='This product is not sold individually. You must select at least'} <b id="minimal_quantity_label">{$product->minimal_quantity}</b> {l s='quantity for this product.'}
</p>
{if isset($groups)}
<!-- attributes -->
<div id="attributes">
<div class="clearfix"></div>
{foreach from=$groups key=id_attribute_group item=group}
{if $group.attributes|@count}
<fieldset class="attribute_fieldset">
<label class="attribute_label" {if $group.group_type != 'color' && $group.group_type != 'radio'}for="group_{$id_attribute_group|intval}"{/if}>{$group.name|escape:'html':'UTF-8'} </label>
{assign var="groupName" value="group_$id_attribute_group"}
<div class="attribute_list">
{if ($group.group_type == 'select')}
<select name="{$groupName}" id="group_{$id_attribute_group|intval}" class="form-control attribute_select no-print">
{foreach from=$group.attributes key=id_attribute item=group_attribute}
<option value="{$id_attribute|intval}"{if (isset($smarty.get.$groupName) && $smarty.get.$groupName|intval == $id_attribute) || $group.default == $id_attribute} selected="selected"{/if} title="{$group_attribute|escape:'html':'UTF-8'}">{$group_attribute|escape:'html':'UTF-8'}</option>
{/foreach}
</select>
{elseif ($group.group_type == 'color')}
<ul id="color_to_pick_list" class="clearfix">
{assign var="default_colorpicker" value=""}
{foreach from=$group.attributes key=id_attribute item=group_attribute}
{assign var='img_color_exists' value=file_exists($col_img_dir|cat:$id_attribute|cat:'.jpg')}
<li{if $group.default == $id_attribute} class="selected"{/if}>
<a href="{$link->getProductLink($product)|escape:'html':'UTF-8'}" id="color_{$id_attribute|intval}" name="{$colors.$id_attribute.name|escape:'html':'UTF-8'}" class="color_pick{if ($group.default == $id_attribute)} selected{/if}"{if !$img_color_exists && isset($colors.$id_attribute.value) && $colors.$id_attribute.value} style="background:{$colors.$id_attribute.value|escape:'html':'UTF-8'};"{/if} title="{$colors.$id_attribute.name|escape:'html':'UTF-8'}">
{if $img_color_exists}
<img src="{$img_col_dir}{$id_attribute|intval}.jpg" alt="{$colors.$id_attribute.name|escape:'html':'UTF-8'}" title="{$colors.$id_attribute.name|escape:'html':'UTF-8'}" width="20" height="20" />
{/if}
</a>
</li>
{if ($group.default == $id_attribute)}
{$default_colorpicker = $id_attribute}
{/if}
{/foreach}
</ul>
<input type="hidden" class="color_pick_hidden" name="{$groupName|escape:'html':'UTF-8'}" value="{$default_colorpicker|intval}" />
{elseif ($group.group_type == 'radio')}
<ul>
{foreach from=$group.attributes key=id_attribute item=group_attribute}
<li>
<input type="radio" class="attribute_radio" name="{$groupName|escape:'html':'UTF-8'}" value="{$id_attribute}" {if ($group.default == $id_attribute)} checked="checked"{/if} />
<span>{$group_attribute|escape:'html':'UTF-8'}</span>
</li>
{/foreach}
</ul>
{/if}
</div> <!-- end attribute_list -->
</fieldset>
{/if}
{/foreach}
</div> <!-- end attributes -->
{/if}
</div> <!-- end product_attributes -->
<div class="box-cart-bottom">
<div{if (!$allow_oosp && $product->quantity <= 0) || !$product->available_for_order || (isset($restricted_country_mode) && $restricted_country_mode) || $PS_CATALOG_MODE} class="unvisible"{/if}>
<p id="add_to_cart" class="buttons_bottom_block no-print">
<button type="submit" name="Submit" class="exclusive">
<span>{if $content_only && (isset($product->customization_required) && $product->customization_required)}{l s='Customize'}{else}{l s='Add to cart'}{/if}</span>
</button>
</p>
</div>
{if isset($HOOK_PRODUCT_ACTIONS) && $HOOK_PRODUCT_ACTIONS}{$HOOK_PRODUCT_ACTIONS}{/if}<strong></strong>
</div> <!-- end box-cart-bottom -->
</div> <!-- end box-info-product -->
</form>
{/if}
</div> <!-- end pb-right-column-->
{if ($display_qties == 1 && !$PS_CATALOG_MODE && $PS_STOCK_MANAGEMENT && $product->available_for_order)}
<!-- number of item in stock -->
<p id="pQuantityAvailable"{if $product->quantity <= 0} style="display: none;"{/if}>
<span id="quantityAvailable">{$product->quantity|intval}</span>
<span {if $product->quantity > 1} style="display: none;"{/if} id="quantityAvailableTxt">{l s='Item'}</span>
<span {if $product->quantity == 1} style="display: none;"{/if} id="quantityAvailableTxtMultiple">{l s='Items'}</span>
</p>
{/if}
{if $PS_STOCK_MANAGEMENT}
<!-- availability -->
<p id="availability_statut"{if ($product->quantity <= 0 && !$product->available_later && $allow_oosp) || ($product->quantity > 0 && !$product->available_now) || !$product->available_for_order || $PS_CATALOG_MODE} style="display: none;"{/if}>
{*<span id="availability_label">{l s='Availability:'}</span>*}
<span id="availability_value"{if $product->quantity <= 0 && !$allow_oosp} 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}</span>
</p>
{hook h="displayProductDeliveryTime" product=$product}
<p class="warning_inline" id="last_quantities"{if ($product->quantity > $last_qties || $product->quantity <= 0) || $allow_oosp || !$product->available_for_order || $PS_CATALOG_MODE} style="display: none"{/if} >{l s='Warning: Last items in stock!'}</p>
{/if}
<p id="availability_date"{if ($product->quantity > 0) || !$product->available_for_order || $PS_CATALOG_MODE || !isset($product->available_date) || $product->available_date < $smarty.now|date_format:'%Y-%m-%d'} style="display: none;"{/if}>
<span id="availability_date_label">{l s='Availability date:'}</span>
<span id="availability_date_value">{dateFormat date=$product->available_date full=false}</span>
</p>
<!-- Out of stock hook -->
<div id="oosHook"{if $product->quantity > 0} style="display: none;"{/if}>
{$HOOK_PRODUCT_OOS}
</div>
{if isset($HOOK_EXTRA_RIGHT) && $HOOK_EXTRA_RIGHT}{$HOOK_EXTRA_RIGHT}{/if}
{if !$content_only}
<!-- usefull links-->
<ul id="usefull_link_block" class="clearfix no-print">
{if $HOOK_EXTRA_LEFT}{$HOOK_EXTRA_LEFT}{/if}
<li class="print">
<a href="javascript:print();">
{l s='Print'}
</a>
</li>
{if $have_image && !$jqZoomEnabled}{/if}
</ul>
{/if}
</div>
<!-- end center infos-->
</div> <!-- end primary_block -->
{if !$content_only}
{if (isset($quantity_discounts) && count($quantity_discounts) > 0)}
<!-- quantity discount -->
<section class="page-product-box">
<h3 class="page-product-heading">{l s='Volume discounts'}</h3>
<div id="quantityDiscount">
<table class="std table-product-discounts">
<thead>
<tr>
<th>{l s='Quantity'}</th>
<th>{if $display_discount_price}{l s='Price'}{else}{l s='Discount'}{/if}</th>
<th>{l s='You Save'}</th>
</tr>
</thead>
<tbody>
{foreach from=$quantity_discounts item='quantity_discount' name='quantity_discounts'}
<tr id="quantityDiscount_{$quantity_discount.id_product_attribute}" class="quantityDiscount_{$quantity_discount.id_product_attribute}" data-discount-type="{$quantity_discount.reduction_type}" data-discount="{$quantity_discount.real_value|floatval}" data-discount-quantity="{$quantity_discount.quantity|intval}">
<td>
{$quantity_discount.quantity|intval}
</td>
<td>
{if $quantity_discount.price >= 0 || $quantity_discount.reduction_type == 'amount'}
{if $display_discount_price}
{convertPrice price=$productPrice-$quantity_discount.real_value|floatval}
{else}
{convertPrice price=$quantity_discount.real_value|floatval}
{/if}
{else}
{if $display_discount_price}
{convertPrice price = $productPrice-($productPrice*$quantity_discount.reduction)|floatval}
{else}
{$quantity_discount.real_value|floatval}%
{/if}
{/if}
</td>
<td>
<span>{l s='Up to'}</span>
{if $quantity_discount.price >= 0 || $quantity_discount.reduction_type == 'amount'}
{$discountPrice=$productPrice-$quantity_discount.real_value|floatval}
{else}
{$discountPrice=$productPrice-($productPrice*$quantity_discount.reduction)|floatval}
{/if}
{$discountPrice=$discountPrice*$quantity_discount.quantity}
{$qtyProductPrice = $productPrice*$quantity_discount.quantity}
{convertPrice price=$qtyProductPrice-$discountPrice}
</td>
</tr>
{/foreach}
</tbody>
</table>
</div>
</section>
{/if}
 
<!-- Megnor start : TAB-->
{if (isset($product) && $product->description) || (isset($features) && $features) || (isset($accessories) && $accessories) || (isset($HOOK_PRODUCT_TAB) && $HOOK_PRODUCT_TAB) || (isset($attachments) && $attachments) || isset($product) && $product->customizable}
<section class="tm-tabcontent">
<ul id="productpage_tab" class="nav nav-tabs clearfix">
{if $product->description}
<li class="active"><a data-toggle="tab" href="#moreinfo" class="moreinfo">{l s='More info'}</a></li>
{/if}
{if isset($features) && $features}
<li><a class="datasheet" href="#datasheet" data-toggle="tab">{l s='Data sheet'}</a></li>
{/if}
{if isset($attachments) && $attachments}
<li><a class="tmdownlaod" href="#tmdownlaod" data-toggle="tab">{l s='Download'}</a></li>
{/if}
{if isset($product) && $product->customizable}
<li><a class="tmcustomization" href="#tmcustomization" data-toggle="tab">{l s='Product customization'}</a></li>
{/if}
</ul>
 
<div class="tab-content">
<!-- More Info -->
{if isset($product) && $product->description}
<ul id="moreinfo" class="tm_productinner tab-pane active">
{$product->description}
</ul>
{/if}<!-- End More Info -->
 
<!-- Data sheet -->
{if isset($features) && $features}
<ul id="datasheet" class="tm_productinner tab-pane">
<table class="table-data-sheet">
{foreach from=$features item=feature}
<tr class="{cycle values="odd,even"}">
{if isset($feature.value)}    
<td>{$feature.name|escape:'html':'UTF-8'}</td>
<td>{$feature.value|escape:'html':'UTF-8'}</td>
{/if}
</tr>
{/foreach}
</table>
</ul>
{/if} <!--end Data sheet -->
 
<!--Download -->
{if isset($features) && $features}
<ul id="tmdownlaod" class="tm_productinner tab-pane">
{foreach from=$attachments item=attachment name=attachements}
{if $smarty.foreach.attachements.iteration %3 == 1}<div class="row">{/if}
<div class="col-lg-4">
<h4><a href="{$link->getPageLink('attachment', true, NULL, "id_attachment={$attachment.id_attachment}")|escape:'html':'UTF-8'}">{$attachment.name|escape:'html':'UTF-8'}</a></h4>
<p class="text-muted">{$attachment.description|escape:'html':'UTF-8'}</p>
<a class="btn btn-default btn-block" href="{$link->getPageLink('attachment', true, NULL, "id_attachment={$attachment.id_attachment}")|escape:'html':'UTF-8'}">
<i class="icon-download"></i>
{l s="Download"} ({Tools::formatBytes($attachment.file_size, 2)})
</a>
<hr>
</div>
{if $smarty.foreach.attachements.iteration %3 == 0 || $smarty.foreach.attachements.last}</div>{/if}
{/foreach}
</ul>
{/if} <!--end Download -->
 
<!-- Customizable products -->
{if isset($features) && $features}
 
<ul id="tmcustomization" class="tm_productinner tab-pane">
<form method="post" action="{$customizationFormTarget}" enctype="multipart/form-data" id="customizationForm" class="clearfix">
<p class="infoCustomizable">
{l s='After saving your customized product, remember to add it to your cart.'}
{if $product->uploadable_files}
<br />
{l s='Allowed file formats are: GIF, JPG, PNG'}{/if}
</p>
{if $product->uploadable_files|intval}
<div class="customizableProductsFile">
<h5 class="product-heading-h5">{l s='Pictures'}</h5>
<ul id="uploadable_files" class="clearfix">
{counter start=0 assign='customizationField'}
{foreach from=$customizationFields item='field' name='customizationFields'}
{if $field.type == 0}
<li class="customizationUploadLine{if $field.required} required{/if}">{assign var='key' value='pictures_'|cat:$product->id|cat:'_'|cat:$field.id_customization_field}
{if isset($pictures.$key)}
<div class="customizationUploadBrowse">
<img src="{$pic_dir}{$pictures.$key}_small" alt="" />
<a href="{$link->getProductDeletePictureLink($product, $field.id_customization_field)|escape:'html':'UTF-8'}" title="{l s='Delete'}" >
<img src="{$img_dir}icon/delete.gif" alt="{l s='Delete'}" class="customization_delete_icon" width="11" height="13" />
</a>
</div>
{/if}
<div class="customizationUploadBrowse form-group">
<label class="customizationUploadBrowseDescription">
{if !empty($field.name)}
{$field.name}
{else}
{l s='Please select an image file from your computer'}
{/if}
{if $field.required}<sup>*</sup>{/if}
</label>
<input type="file" name="file{$field.id_customization_field}" id="img{$customizationField}" class="form-control customization_block_input {if isset($pictures.$key)}filled{/if}" />
</div>
</li>
{counter}
{/if}
{/foreach}
</ul>
</div>
{/if}
{if $product->text_fields|intval}
<div class="customizableProductsText">
<h5 class="product-heading-h5">{l s='Text'}</h5>
<ul id="text_fields">
{counter start=0 assign='customizationField'}
{foreach from=$customizationFields item='field' name='customizationFields'}
{if $field.type == 1}
<li class="customizationUploadLine{if $field.required} required{/if}">
<label for ="textField{$customizationField}">
{assign var='key' value='textFields_'|cat:$product->id|cat:'_'|cat:$field.id_customization_field}
{if !empty($field.name)}
{$field.name}
{/if}
{if $field.required}<sup>*</sup>{/if}
</label>
<textarea name="textField{$field.id_customization_field}" class="form-control customization_block_input" id="textField{$customizationField}" rows="3" cols="20">{strip}
{if isset($textFields.$key)}
{$textFields.$key|stripslashes}
{/if}
{/strip}</textarea>
</li>
{counter}
{/if}
{/foreach}
</ul>
</div>
{/if}
<p id="customizedDatas">
<input type="hidden" name="quantityBackup" id="quantityBackup" value="" />
<input type="hidden" name="submitCustomizedDatas" value="1" />
<button class="button btn btn-default button button-small" name="saveCustomization">
<span>{l s='Save'}</span>
</button>
<span id="ajax-loader" class="unvisible">
<img src="{$img_ps_dir}loader.gif" alt="loader" />
</span>
</p>
</form>
<p class="clear required"><sup>*</sup> {l s='required fields'}</p>
</ul>
{/if} <!--end Customizable products -->
 
</div>
 
</section>
{/if}
<!-- Megnor End :TAB -->
 
<!--HOOK_PRODUCT_TAB -->
<section class="page-product-box">
{$HOOK_PRODUCT_TAB}
{if isset($HOOK_PRODUCT_TAB_CONTENT) && $HOOK_PRODUCT_TAB_CONTENT}{$HOOK_PRODUCT_TAB_CONTENT}{/if}
</section>
<!--end HOOK_PRODUCT_TAB -->
 
{if isset($accessories) && $accessories}
<!--Accessories -->
<section class="page-product-box accessories-product">
<h3 class="page-product-heading">{l s='Accessories'}</h3>
<div class="block products_block accessories-block clearfix">
<div class="block_content">
 
<!-- Megnor start -->
{assign var='sliderFor' value=4} <!-- Define Number of product for SLIDER -->
{assign var='productCount' value=count($accessories)}
{if $productCount >= $sliderFor}
<div class="customNavigation">
<a class="btn prev accessories_prev"><i class="icon-chevron-sign-left"></i></a>
<a class="btn next accessories_next"><i class="icon-chevron-sign-right"></i></a>
</div>
{/if}
<!-- Megnor End -->
<ul id="{if $productCount >= $sliderFor}accessories-carousel{else}accessories-grid{/if}" class="{if $productCount >= $sliderFor}tm-carousel{else}product_list grid row{/if} clearfix">
{foreach from=$accessories item=accessory name=accessories_list}
{if ($accessory.allow_oosp || $accessory.quantity_all_versions > 0 || $accessory.quantity > 0) && $accessory.available_for_order && !isset($restricted_country_mode)}
{assign var='accessoryLink' value=$link->getProductLink($accessory.id_product, $accessory.link_rewrite, $accessory.category)}
<li class="{if $productCount >= $sliderFor}item{else} ajax_block_product col-xs-12 col-sm-4 col-md-3 {/if} product-box {if $smarty.foreach.accessories_list.first} first_item {/if} {if $smarty.foreach.accessories_list.last} last_item {/if} ">
<div class="product-container">
<div class="product_desc">
<a href="{$accessoryLink|escape:'html':'UTF-8'}" title="{$accessory.legend|escape:'html':'UTF-8'}" class="product-image product_image">
<img class="lazyOwl" src="{$link->getImageLink($accessory.link_rewrite, $accessory.id_image, 'home_default')|escape:'html':'UTF-8'}" alt="{$accessory.legend|escape:'html':'UTF-8'}" width="{$homeSize.width}" height="{$homeSize.height}"/>
</a>
<div class="block_description">
<a href="{$accessoryLink|escape:'html':'UTF-8'}" title="{l s='More'}" class="product_description">
{$accessory.description_short|strip_tags|truncate:20:'...'}
</a>
</div>
</div>
<div class="s_title_block">
<h5 class="product-name">
<a href="{$accessoryLink|escape:'html':'UTF-8'}">
{$accessory.name|truncate:15:'...':true|escape:'html':'UTF-8'}
</a>
</h5>
{if $accessory.show_price && !isset($restricted_country_mode) && !$PS_CATALOG_MODE}
<span class="price product-price">
{if $priceDisplay != 1}
{displayWtPrice p=$accessory.price}{else}{displayWtPrice p=$accessory.price_tax_exc}
{/if}
</span>
{/if}
</div>
<div class="clearfix" style="margin-top:5px">
{if !$PS_CATALOG_MODE && ($accessory.allow_oosp || $accessory.quantity > 0)}
<div class="no-print">
<a class="exclusive button ajax_add_to_cart_button" href="{$link->getPageLink('cart', true, NULL, "qty=1&id_product={$accessory.id_product|intval}&token={$static_token}&add")|escape:'html':'UTF-8'}" data-id-product="{$accessory.id_product|intval}" title="{l s='Add to cart'}">
<span>{l s='Add to cart'}</span>
</a>
</div>
{/if}
</div>
</div>
</li>
{/if}
{/foreach}
</ul>
</div>
</div>
</section>
<!--end Accessories -->
{/if}
{if isset($HOOK_PRODUCT_FOOTER) && $HOOK_PRODUCT_FOOTER}{$HOOK_PRODUCT_FOOTER}{/if}
 
{if isset($packItems) && $packItems|@count > 0}
<section id="blockpack">
<h3 class="page-product-heading">{l s='Pack content'}</h3>
{include file="$tpl_dir./product-list.tpl" products=$packItems}
</section>
{/if}
{/if}
</div> <!-- itemscope product wrapper -->
{strip}
{if isset($smarty.get.ad) && $smarty.get.ad}
{addJsDefL name=ad}{$base_dir|cat:$smarty.get.ad|escape:'html':'UTF-8'}{/addJsDefL}
{/if}
{if isset($smarty.get.adtoken) && $smarty.get.adtoken}
{addJsDefL name=adtoken}{$smarty.get.adtoken|escape:'html':'UTF-8'}{/addJsDefL}
{/if}
{addJsDef allowBuyWhenOutOfStock=$allow_oosp|boolval}
{addJsDef availableNowValue=$product->available_now|escape:'quotes':'UTF-8'}
{addJsDef availableLaterValue=$product->available_later|escape:'quotes':'UTF-8'}
{addJsDef attribute_anchor_separator=$attribute_anchor_separator|escape:'quotes':'UTF-8'}
{addJsDef attributesCombinations=$attributesCombinations}
{addJsDef currencySign=$currencySign|html_entity_decode:2:"UTF-8"}
{addJsDef currencyRate=$currencyRate|floatval}
{addJsDef currencyFormat=$currencyFormat|intval}
{addJsDef currencyBlank=$currencyBlank|intval}
{addJsDef currentDate=$smarty.now|date_format:'%Y-%m-%d %H:%M:%S'}
{if isset($combinations) && $combinations}
{addJsDef combinations=$combinations}
{addJsDef combinationsFromController=$combinations}
{addJsDef displayDiscountPrice=$display_discount_price}
{addJsDefL name='upToTxt'}{l s='Up to' js=1}{/addJsDefL}
{/if}
{if isset($combinationImages) && $combinationImages}
{addJsDef combinationImages=$combinationImages}
{/if}
{addJsDef customizationFields=$customizationFields}
{addJsDef default_eco_tax=$product->ecotax|floatval}
{addJsDef displayPrice=$priceDisplay|intval}
{addJsDef ecotaxTax_rate=$ecotaxTax_rate|floatval}
{addJsDef group_reduction=$group_reduction}
{if isset($cover.id_image_only)}
{addJsDef idDefaultImage=$cover.id_image_only|intval}
{else}
{addJsDef idDefaultImage=0}
{/if}
{addJsDef img_ps_dir=$img_ps_dir}
{addJsDef img_prod_dir=$img_prod_dir}
{addJsDef id_product=$product->id|intval}
{addJsDef jqZoomEnabled=$jqZoomEnabled|boolval}
{addJsDef maxQuantityToAllowDisplayOfLastQuantityMessage=$last_qties|intval}
{addJsDef minimalQuantity=$product->minimal_quantity|intval}
{addJsDef noTaxForThisProduct=$no_tax|boolval}
{addJsDef customerGroupWithoutTax=$customer_group_without_tax|boolval}
{addJsDef oosHookJsCodeFunctions=Array()}
{addJsDef productHasAttributes=isset($groups)|boolval}
{addJsDef productPriceTaxExcluded=($product->getPriceWithoutReduct(true)|default:'null' - $product->ecotax)|floatval}
{addJsDef productBasePriceTaxExcluded=($product->base_price - $product->ecotax)|floatval}
{addJsDef productBasePriceTaxExcl=($product->base_price|floatval)}
{addJsDef productReference=$product->reference|escape:'html':'UTF-8'}
{addJsDef productAvailableForOrder=$product->available_for_order|boolval}
{addJsDef productPriceWithoutReduction=$productPriceWithoutReduction|floatval}
{addJsDef productPrice=$productPrice|floatval}
{addJsDef productUnitPriceRatio=$product->unit_price_ratio|floatval}
{addJsDef productShowPrice=(!$PS_CATALOG_MODE && $product->show_price)|boolval}
{addJsDef PS_CATALOG_MODE=$PS_CATALOG_MODE}
{if $product->specificPrice && $product->specificPrice|@count}
{addJsDef product_specific_price=$product->specificPrice}
{else}
{addJsDef product_specific_price=array()}
{/if}
{if $display_qties == 1 && $product->quantity}
{addJsDef quantityAvailable=$product->quantity}
{else}
{addJsDef quantityAvailable=0}
{/if}
{addJsDef quantitiesDisplayAllowed=$display_qties|boolval}
{if $product->specificPrice && $product->specificPrice.reduction && $product->specificPrice.reduction_type == 'percentage'}
{addJsDef reduction_percent=$product->specificPrice.reduction*100|floatval}
{else}
{addJsDef reduction_percent=0}
{/if}
{if $product->specificPrice && $product->specificPrice.reduction && $product->specificPrice.reduction_type == 'amount'}
{addJsDef reduction_price=$product->specificPrice.reduction|floatval}
{else}
{addJsDef reduction_price=0}
{/if}
{if $product->specificPrice && $product->specificPrice.price}
{addJsDef specific_price=$product->specificPrice.price|floatval}
{else}
{addJsDef specific_price=0}
{/if}
{addJsDef specific_currency=($product->specificPrice && $product->specificPrice.id_currency)|boolval} {* TODO: remove if always false *}
{addJsDef stock_management=$stock_management|intval}
{addJsDef taxRate=$tax_rate|floatval}
{addJsDefL name=doesntExist}{l s='This combination does not exist for this product. Please select another combination.' js=1}{/addJsDefL}
{addJsDefL name=doesntExistNoMore}{l s='This product is no longer in stock' js=1}{/addJsDefL}
{addJsDefL name=doesntExistNoMoreBut}{l s='with those attributes but is available with others.' js=1}{/addJsDefL}
{addJsDefL name=fieldRequired}{l s='Please fill in all the required fields before saving your customization.' js=1}{/addJsDefL}
{addJsDefL name=uploading_in_progress}{l s='Uploading in progress, please be patient.' js=1}{/addJsDefL}
{addJsDefL name='product_fileDefaultHtml'}{l s='No file selected' js=1}{/addJsDefL}
{addJsDefL name='product_fileButtonHtml'}{l s='Choose File' js=1}{/addJsDefL}
{/strip}
{/if}
Link to comment
Share on other sites

Hi again from Greece,

 

After the changes that made to the products.tlp i have the follow problems

 

1. Quanity tab and price out of the box (attachment1)

 

2. Accessories tab dont' working 

 

3. My extended product tab (module) appears only if you click the last tab.

 

http://eshop.easywatch.gr/en/cctv/7-ds-2ce56d5t-it3.html

 

 

 

 

 

 

 

 

 

 

post-877536-0-25478500-1418292616_thumb.jpg

Link to comment
Share on other sites

it will be much easier if you will share url to product page where you have this module


 

Sorry, but it`s only working with default theme. Not with mine, which I bought for new eshop, this is product.tpl, could u help me?:

{*
* 2007-2014 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to [email protected] so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author PrestaShop SA <[email protected]>
*  @copyright  2007-2014 PrestaShop SA
*  @license    http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
*  International Registered Trademark & Property of PrestaShop SA
*}
{include file="$tpl_dir./errors.tpl"}
{if $errors|@count == 0}
{if !isset($priceDisplayPrecision)}
{assign var='priceDisplayPrecision' value=2}
{/if}
{if !$priceDisplay || $priceDisplay == 2}
{assign var='productPrice' value=$product->getPrice(true, $smarty.const.NULL, $priceDisplayPrecision)}
{assign var='productPriceWithoutReduction' value=$product->getPriceWithoutReduct(false, $smarty.const.NULL)}
{elseif $priceDisplay == 1}
{assign var='productPrice' value=$product->getPrice(false, $smarty.const.NULL, $priceDisplayPrecision)}
{assign var='productPriceWithoutReduction' value=$product->getPriceWithoutReduct(true, $smarty.const.NULL)}
{/if}
<div itemscope itemtype="http://schema.org/Product">
<div class="primary_block row">
{if !$content_only}
<div class="container">
<div class="top-hr"></div>
</div>
{/if}
{if isset($adminActionDisplay) && $adminActionDisplay}
<div id="admin-action">
<p>{l s='This product is not visible to your customers.'}
<input type="hidden" id="admin-action-product-id" value="{$product->id}" />
<input type="submit" value="{l s='Publish'}" name="publish_button" class="exclusive" />
<input type="submit" value="{l s='Back'}" name="lnk_view" class="exclusive" />
</p>
<p id="admin-action-result"></p>
</div>
{/if}
{if isset($confirmation) && $confirmation}
<p class="confirmation">
{$confirmation}
</p>
{/if}
<!-- left infos-->  
<div class="pb-left-column col-xs-12 col-sm-4 col-md-6">
<!-- product img-->        
<div id="image-block" class="clearfix">
{if $product->new}
<span class="new-box">
<span class="new-label">{l s='New'}</span>
</span>
{/if}
{if $product->on_sale}
<span class="sale-box no-print">
<span class="sale-label">{l s='Sale!'}</span>
</span>
{elseif $product->specificPrice && $product->specificPrice.reduction && $productPriceWithoutReduction > $productPrice}
<span class="discount">{l s='Reduced price!'}</span>
{/if}
{if $have_image}
<span id="view_full_size">
{if $jqZoomEnabled && $have_image && !$content_only}
<a class="jqzoom" title="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}" rel="gal1" href="{$link->getImageLink($product->link_rewrite, $cover.id_image, 'thickbox_default')|escape:'html':'UTF-8'}" itemprop="url">
<img itemprop="image" src="{$link->getImageLink($product->link_rewrite, $cover.id_image, 'large_default')|escape:'html':'UTF-8'}" title="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}" alt="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}"/>
</a>
{else}
<img id="bigpic" itemprop="image" src="{$link->getImageLink($product->link_rewrite, $cover.id_image, 'large_default')|escape:'html':'UTF-8'}" title="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}" alt="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}" width="{$largeSize.width}" height="{$largeSize.height}"/>
{if !$content_only}
<span class="span_link no-print">{l s='View larger'}</span>
{/if}
{/if}
</span>
{else}
<span id="view_full_size">
<img itemprop="image" src="{$img_prod_dir}{$lang_iso}-default-large_default.jpg" id="bigpic" alt="" title="{$product->name|escape:'html':'UTF-8'}" width="{$largeSize.width}" height="{$largeSize.height}"/>
{if !$content_only}
<span class="span_link">
{l s='View larger'}
</span>
{/if}
</span>
{/if}
</div> <!-- end image-block -->
{if isset($images) && count($images) > 0}
<!-- thumbnails -->
<div id="views_block" class="clearfix {if isset($images) && count($images) < 2}hidden{/if}">
 
{if isset($images) && count($images) > 3}
<span class="view_scroll_spacer">
<a id="view_scroll_left" class="" title="{l s='Other views'}" href="javascript:{ldelim}{rdelim}">
{l s='Previous'}
</a>
</span>
{/if}
 
<div id="thumbs_list">
<ul id="thumbs_list_frame">
{if isset($images)}
{foreach from=$images item=image name=thumbnails}
{assign var=imageIds value="`$product->id`-`$image.id_image`"}
{if !empty($image.legend)}
{assign var=imageTitle value=$image.legend|escape:'html':'UTF-8'}
{else}
{assign var=imageTitle value=$product->name|escape:'html':'UTF-8'}
{/if}
<li id="thumbnail_{$image.id_image}"{if $smarty.foreach.thumbnails.last} class="last"{/if}>
<a{if $jqZoomEnabled && $have_image && !$content_only} href="javascript:void(0);" rel="{literal}[spam-filter]/literal}gallery: 'gal1', smallimage: '{$link->getImageLink($product->link_rewrite, $imageIds, 'large_default')|escape:'html':'UTF-8'}',largeimage: '{$link->getImageLink($product->link_rewrite, $imageIds, 'thickbox_default')|escape:'html':'UTF-8'}'{literal[spam-filter]{/literal}"{else} href="{$link->getImageLink($product->link_rewrite, $imageIds, 'thickbox_default')|escape:'html':'UTF-8'}" data-fancybox-group="other-views" class="fancybox{if $image.id_image == $cover.id_image} shown{/if}"{/if} title="{$imageTitle}">
 
<img class="img-responsive" id="thumb_{$image.id_image}" src="{$link->getImageLink($product->link_rewrite, $imageIds, 'cart_default')|escape:'html':'UTF-8'}" alt="{$imageTitle}" title="{$imageTitle}" height="{$cartSize.height}" width="{$cartSize.width}" itemprop="image" />
</a>
</li>
{/foreach}
{/if}
</ul>
</div> <!-- end thumbs_list -->
 
{if isset($images) && count($images) > 3}
<a id="view_scroll_right" title="{l s='Other views'}" href="javascript:{ldelim}{rdelim}">
{l s='Next'}
</a>
{/if}
 
</div> <!-- end views-block -->
<!-- end thumbnails -->
{/if}
{if isset($images) && count($images) > 1}
<p class="resetimg clear no-print">
<span id="wrapResetImages" style="display: none;">
<a href="{$link->getProductLink($product)|escape:'html':'UTF-8'}" name="resetImages">
<i class="icon-repeat"></i>
{l s='Display all pictures'}
</a>
</span>
</p>
{/if}
 
</div> <!-- end pb-left-column -->
<!-- end left infos--> 
<!-- center infos -->
<div class="pb-center-column col-xs-12 col-sm-6">
 
<h1 itemprop="name">{$product->name|escape:'html':'UTF-8'}</h1>
<p id="product_reference"{if empty($product->reference) || !$product->reference} style="display: none;"{/if}>
<label>{l s='Model'} </label>
<span class="editable" itemprop="sku">{if !isset($groups)}{$product->reference|escape:'html':'UTF-8'}{/if}</span>
</p>
{if $product->condition}
<p id="product_condition">
<label>{l s='Condition'} </label>
{if $product->condition == 'new'}
<link itemprop="itemCondition" href="http://schema.org/NewCondition"/>
<span class="editable">{l s='New'}</span>
{elseif $product->condition == 'used'}
<link itemprop="itemCondition" href="http://schema.org/UsedCondition"/>
<span class="editable">{l s='Used'}</span>
{elseif $product->condition == 'refurbished'}
<link itemprop="itemCondition" href="http://schema.org/RefurbishedCondition"/>
<span class="editable">{l s='Refurbished'}</span>
{/if}
</p>
{/if}
{if $product->description_short || $packItems|@count > 0}
<div id="short_description_block">
{if $product->description_short}
<div id="short_description_content" class="rte align_justify" itemprop="description">{$product->description_short}</div>
{/if}
 
{if $product->description}
<p class="buttons_bottom_block">
<a href="javascript:{ldelim}{rdelim}" class="button">
{l s='More details'}
</a>
</p>
{/if}
 
{if $product->online_only}
<p class="online_only">{l s='Online only'}</p>
{/if}
<!--{if $packItems|@count > 0}
<div class="short_description_pack">
<h3>{l s='Pack content'}</h3>
{foreach from=$packItems item=packItem}
 
<div class="pack_content">
{$packItem.pack_quantity} x <a href="{$link->getProductLink($packItem.id_product, $packItem.link_rewrite, $packItem.category)|escape:'html':'UTF-8'}">{$packItem.name|escape:'html':'UTF-8'}</a>
<p>{$packItem.description_short}</p>
</div>
{/foreach}
</div>
{/if}-->
</div> <!-- end short_description_block -->
{/if}
 
<!-- pb-right-column-->
<div class="pb-right-column">
{if ($product->show_price && !isset($restricted_country_mode)) || isset($groups) || $product->reference || (isset($HOOK_PRODUCT_ACTIONS) && $HOOK_PRODUCT_ACTIONS)}
<!-- add to cart form-->
<form id="buy_block"{if $PS_CATALOG_MODE && !isset($groups) && $product->quantity > 0} class="hidden"{/if} action="{$link->getPageLink('cart')|escape:'html':'UTF-8'}" method="post">
<!-- hidden datas -->
<p class="hidden">
<input type="hidden" name="token" value="{$static_token}" />
<input type="hidden" name="id_product" value="{$product->id|intval}" id="product_page_product_id" />
<input type="hidden" name="add" value="1" />
<input type="hidden" name="id_product_attribute" id="idCombination" value="" />
</p>
<div class="box-info-product">
<div class="content_prices clearfix">
{if $product->show_price && !isset($restricted_country_mode) && !$PS_CATALOG_MODE}
<!-- prices -->
<div class="price">
<p class="our_price_display" itemprop="offers" itemscope itemtype="http://schema.org/Offer">
{if $product->quantity > 0}<link itemprop="availability" href="http://schema.org/InStock"/>{/if}
{if $priceDisplay >= 0 && $priceDisplay <= 2}
<span id="our_price_display" itemprop="price">{convertPrice price=$productPrice}</span>
<!--{if $tax_enabled  && ((isset($display_tax_label) && $display_tax_label == 1) || !isset($display_tax_label))}
{if $priceDisplay == 1}{l s='tax excl.'}{else}{l s='tax incl.'}{/if}
{/if}-->
<meta itemprop="priceCurrency" content="{$currency->iso_code}" />
{hook h="displayProductPriceBlock" product=$product type="price"}
{/if}
</p>
<p id="reduction_percent" {if !$product->specificPrice || $product->specificPrice.reduction_type != 'percentage'} style="display:none;"{/if}>
<span id="reduction_percent_display">
{if $product->specificPrice && $product->specificPrice.reduction_type == 'percentage'}-{$product->specificPrice.reduction*100}%{/if}
</span>
</p>
<p id="reduction_amount" {if !$product->specificPrice || $product->specificPrice.reduction_type != 'amount' || $product->specificPrice.reduction|floatval ==0} style="display:none"{/if}>
<span id="reduction_amount_display">
{if $product->specificPrice && $product->specificPrice.reduction_type == 'amount' && $product->specificPrice.reduction|floatval !=0}
-{convertPrice price=$productPriceWithoutReduction-$productPrice|floatval}
{/if}
</span>
</p>
<p id="old_price"{if (!$product->specificPrice || !$product->specificPrice.reduction) && $group_reduction == 0} class="hidden"{/if}>
{if $priceDisplay >= 0 && $priceDisplay <= 2}
{hook h="displayProductPriceBlock" product=$product type="old_price"}
<span id="old_price_display">{if $productPriceWithoutReduction > $productPrice}{convertPrice price=$productPriceWithoutReduction}{/if}</span>
<!-- {if $tax_enabled && $display_tax_label == 1}{if $priceDisplay == 1}{l s='tax excl.'}{else}{l s='tax incl.'}{/if}{/if} -->
{/if}
</p>
{if $priceDisplay == 2}
<br />
<span id="pretaxe_price">
<span id="pretaxe_price_display">{convertPrice price=$product->getPrice(false, $smarty.const.NULL)}</span>
{l s='tax excl.'}
</span>
{/if}
</div> <!-- end prices -->
 
{if $packItems|@count && $productPrice < $product->getNoPackPrice()}
<p class="pack_price">{l s='Instead of'} <span style="text-decoration: line-through;">{convertPrice price=$product->getNoPackPrice()}</span></p>
{/if}
{if $product->ecotax != 0}
<p class="price-ecotax">{l s='Including'} <span id="ecotax_price_display">{if $priceDisplay == 2}{$ecotax_tax_exc|convertAndFormatPrice}{else}{$ecotax_tax_inc|convertAndFormatPrice}{/if}</span> {l s='for ecotax'}
{if $product->specificPrice && $product->specificPrice.reduction}
<br />{l s='(not impacted by the discount)'}
{/if}
</p>
{/if}
{if !empty($product->unity) && $product->unit_price_ratio > 0.000000}
{math equation="pprice / punit_price"  pprice=$productPrice  punit_price=$product->unit_price_ratio assign=unit_price}
<p class="unit-price"><span id="unit_price_display">{convertPrice price=$unit_price}</span> {l s='per'} {$product->unity|escape:'html':'UTF-8'}</p>
{hook h="displayProductPriceBlock" product=$product type="unit_price"}
{/if}
{/if} {*close if for show price*}
{hook h="displayProductPriceBlock" product=$product type="weight"}
<div class="clear"></div>
</div> <!-- end content_prices -->
<div class="product_attributes clearfix">
<!-- quantity wanted -->
{if !$PS_CATALOG_MODE}
<p id="quantity_wanted_p"{if (!$allow_oosp && $product->quantity <= 0) || !$product->available_for_order || $PS_CATALOG_MODE} style="display: none;"{/if}>
<label>{l s='Quantity'}</label>
<input type="text" name="qty" id="quantity_wanted" class="text" value="{if isset($quantityBackup)}{$quantityBackup|intval}{else}{if $product->minimal_quantity > 1}{$product->minimal_quantity}{else}1{/if}{/if}" />
<a href="#" data-field-qty="qty" class="btn btn-default button-minus product_quantity_down">
<span><i class="icon-minus"></i></span>
</a>
<a href="#" data-field-qty="qty" class="btn btn-default button-plus product_quantity_up ">
<span><i class="icon-plus"></i></span>
</a>
<span class="clearfix"></span>
</p>
{/if}
<!-- minimal quantity wanted -->
<p id="minimal_quantity_wanted_p"{if $product->minimal_quantity <= 1 || !$product->available_for_order || $PS_CATALOG_MODE} style="display: none;"{/if}>
{l s='This product is not sold individually. You must select at least'} <b id="minimal_quantity_label">{$product->minimal_quantity}</b> {l s='quantity for this product.'}
</p>
{if isset($groups)}
<!-- attributes -->
<div id="attributes">
<div class="clearfix"></div>
{foreach from=$groups key=id_attribute_group item=group}
{if $group.attributes|@count}
<fieldset class="attribute_fieldset">
<label class="attribute_label" {if $group.group_type != 'color' && $group.group_type != 'radio'}for="group_{$id_attribute_group|intval}"{/if}>{$group.name|escape:'html':'UTF-8'} </label>
{assign var="groupName" value="group_$id_attribute_group"}
<div class="attribute_list">
{if ($group.group_type == 'select')}
<select name="{$groupName}" id="group_{$id_attribute_group|intval}" class="form-control attribute_select no-print">
{foreach from=$group.attributes key=id_attribute item=group_attribute}
<option value="{$id_attribute|intval}"{if (isset($smarty.get.$groupName) && $smarty.get.$groupName|intval == $id_attribute) || $group.default == $id_attribute} selected="selected"{/if} title="{$group_attribute|escape:'html':'UTF-8'}">{$group_attribute|escape:'html':'UTF-8'}</option>
{/foreach}
</select>
{elseif ($group.group_type == 'color')}
<ul id="color_to_pick_list" class="clearfix">
{assign var="default_colorpicker" value=""}
{foreach from=$group.attributes key=id_attribute item=group_attribute}
{assign var='img_color_exists' value=file_exists($col_img_dir|cat:$id_attribute|cat:'.jpg')}
<li{if $group.default == $id_attribute} class="selected"{/if}>
<a href="{$link->getProductLink($product)|escape:'html':'UTF-8'}" id="color_{$id_attribute|intval}" name="{$colors.$id_attribute.name|escape:'html':'UTF-8'}" class="color_pick{if ($group.default == $id_attribute)} selected{/if}"{if !$img_color_exists && isset($colors.$id_attribute.value) && $colors.$id_attribute.value} style="background:{$colors.$id_attribute.value|escape:'html':'UTF-8'};"{/if} title="{$colors.$id_attribute.name|escape:'html':'UTF-8'}">
{if $img_color_exists}
<img src="{$img_col_dir}{$id_attribute|intval}.jpg" alt="{$colors.$id_attribute.name|escape:'html':'UTF-8'}" title="{$colors.$id_attribute.name|escape:'html':'UTF-8'}" width="20" height="20" />
{/if}
</a>
</li>
{if ($group.default == $id_attribute)}
{$default_colorpicker = $id_attribute}
{/if}
{/foreach}
</ul>
<input type="hidden" class="color_pick_hidden" name="{$groupName|escape:'html':'UTF-8'}" value="{$default_colorpicker|intval}" />
{elseif ($group.group_type == 'radio')}
<ul>
{foreach from=$group.attributes key=id_attribute item=group_attribute}
<li>
<input type="radio" class="attribute_radio" name="{$groupName|escape:'html':'UTF-8'}" value="{$id_attribute}" {if ($group.default == $id_attribute)} checked="checked"{/if} />
<span>{$group_attribute|escape:'html':'UTF-8'}</span>
</li>
{/foreach}
</ul>
{/if}
</div> <!-- end attribute_list -->
</fieldset>
{/if}
{/foreach}
</div> <!-- end attributes -->
{/if}
</div> <!-- end product_attributes -->
<div class="box-cart-bottom">
<div{if (!$allow_oosp && $product->quantity <= 0) || !$product->available_for_order || (isset($restricted_country_mode) && $restricted_country_mode) || $PS_CATALOG_MODE} class="unvisible"{/if}>
<p id="add_to_cart" class="buttons_bottom_block no-print">
<button type="submit" name="Submit" class="exclusive">
<span>{if $content_only && (isset($product->customization_required) && $product->customization_required)}{l s='Customize'}{else}{l s='Add to cart'}{/if}</span>
</button>
</p>
</div>
{if isset($HOOK_PRODUCT_ACTIONS) && $HOOK_PRODUCT_ACTIONS}{$HOOK_PRODUCT_ACTIONS}{/if}<strong></strong>
</div> <!-- end box-cart-bottom -->
</div> <!-- end box-info-product -->
</form>
{/if}
</div> <!-- end pb-right-column-->
{if ($display_qties == 1 && !$PS_CATALOG_MODE && $PS_STOCK_MANAGEMENT && $product->available_for_order)}
<!-- number of item in stock -->
<p id="pQuantityAvailable"{if $product->quantity <= 0} style="display: none;"{/if}>
<span id="quantityAvailable">{$product->quantity|intval}</span>
<span {if $product->quantity > 1} style="display: none;"{/if} id="quantityAvailableTxt">{l s='Item'}</span>
<span {if $product->quantity == 1} style="display: none;"{/if} id="quantityAvailableTxtMultiple">{l s='Items'}</span>
</p>
{/if}
{if $PS_STOCK_MANAGEMENT}
<!-- availability -->
<p id="availability_statut"{if ($product->quantity <= 0 && !$product->available_later && $allow_oosp) || ($product->quantity > 0 && !$product->available_now) || !$product->available_for_order || $PS_CATALOG_MODE} style="display: none;"{/if}>
{*<span id="availability_label">{l s='Availability:'}</span>*}
<span id="availability_value"{if $product->quantity <= 0 && !$allow_oosp} 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}</span>
</p>
{hook h="displayProductDeliveryTime" product=$product}
<p class="warning_inline" id="last_quantities"{if ($product->quantity > $last_qties || $product->quantity <= 0) || $allow_oosp || !$product->available_for_order || $PS_CATALOG_MODE} style="display: none"{/if} >{l s='Warning: Last items in stock!'}</p>
{/if}
<p id="availability_date"{if ($product->quantity > 0) || !$product->available_for_order || $PS_CATALOG_MODE || !isset($product->available_date) || $product->available_date < $smarty.now|date_format:'%Y-%m-%d'} style="display: none;"{/if}>
<span id="availability_date_label">{l s='Availability date:'}</span>
<span id="availability_date_value">{dateFormat date=$product->available_date full=false}</span>
</p>
<!-- Out of stock hook -->
<div id="oosHook"{if $product->quantity > 0} style="display: none;"{/if}>
{$HOOK_PRODUCT_OOS}
</div>
{if isset($HOOK_EXTRA_RIGHT) && $HOOK_EXTRA_RIGHT}{$HOOK_EXTRA_RIGHT}{/if}
{if !$content_only}
<!-- usefull links-->
<ul id="usefull_link_block" class="clearfix no-print">
{if $HOOK_EXTRA_LEFT}{$HOOK_EXTRA_LEFT}{/if}
<li class="print">
<a href="javascript:print();">
{l s='Print'}
</a>
</li>
{if $have_image && !$jqZoomEnabled}{/if}
</ul>
{/if}
</div>
<!-- end center infos-->
</div> <!-- end primary_block -->
{if !$content_only}
{if (isset($quantity_discounts) && count($quantity_discounts) > 0)}
<!-- quantity discount -->
<section class="page-product-box">
<h3 class="page-product-heading">{l s='Volume discounts'}</h3>
<div id="quantityDiscount">
<table class="std table-product-discounts">
<thead>
<tr>
<th>{l s='Quantity'}</th>
<th>{if $display_discount_price}{l s='Price'}{else}{l s='Discount'}{/if}</th>
<th>{l s='You Save'}</th>
</tr>
</thead>
<tbody>
{foreach from=$quantity_discounts item='quantity_discount' name='quantity_discounts'}
<tr id="quantityDiscount_{$quantity_discount.id_product_attribute}" class="quantityDiscount_{$quantity_discount.id_product_attribute}" data-discount-type="{$quantity_discount.reduction_type}" data-discount="{$quantity_discount.real_value|floatval}" data-discount-quantity="{$quantity_discount.quantity|intval}">
<td>
{$quantity_discount.quantity|intval}
</td>
<td>
{if $quantity_discount.price >= 0 || $quantity_discount.reduction_type == 'amount'}
{if $display_discount_price}
{convertPrice price=$productPrice-$quantity_discount.real_value|floatval}
{else}
{convertPrice price=$quantity_discount.real_value|floatval}
{/if}
{else}
{if $display_discount_price}
{convertPrice price = $productPrice-($productPrice*$quantity_discount.reduction)|floatval}
{else}
{$quantity_discount.real_value|floatval}%
{/if}
{/if}
</td>
<td>
<span>{l s='Up to'}</span>
{if $quantity_discount.price >= 0 || $quantity_discount.reduction_type == 'amount'}
{$discountPrice=$productPrice-$quantity_discount.real_value|floatval}
{else}
{$discountPrice=$productPrice-($productPrice*$quantity_discount.reduction)|floatval}
{/if}
{$discountPrice=$discountPrice*$quantity_discount.quantity}
{$qtyProductPrice = $productPrice*$quantity_discount.quantity}
{convertPrice price=$qtyProductPrice-$discountPrice}
</td>
</tr>
{/foreach}
</tbody>
</table>
</div>
</section>
{/if}
 
<!-- Megnor start : TAB-->
{if (isset($product) && $product->description) || (isset($features) && $features) || (isset($accessories) && $accessories) || (isset($HOOK_PRODUCT_TAB) && $HOOK_PRODUCT_TAB) || (isset($attachments) && $attachments) || isset($product) && $product->customizable}
<section class="tm-tabcontent">
<ul id="productpage_tab" class="nav nav-tabs clearfix">
{if $product->description}
<li class="active"><a data-toggle="tab" href="#moreinfo" class="moreinfo">{l s='More info'}</a></li>
{/if}
{if isset($features) && $features}
<li><a class="datasheet" href="#datasheet" data-toggle="tab">{l s='Data sheet'}</a></li>
{/if}
{if isset($attachments) && $attachments}
<li><a class="tmdownlaod" href="#tmdownlaod" data-toggle="tab">{l s='Download'}</a></li>
{/if}
{if isset($product) && $product->customizable}
<li><a class="tmcustomization" href="#tmcustomization" data-toggle="tab">{l s='Product customization'}</a></li>
{/if}
</ul>
 
<div class="tab-content">
<!-- More Info -->
{if isset($product) && $product->description}
<ul id="moreinfo" class="tm_productinner tab-pane active">
{$product->description}
</ul>
{/if}<!-- End More Info -->
 
<!-- Data sheet -->
{if isset($features) && $features}
<ul id="datasheet" class="tm_productinner tab-pane">
<table class="table-data-sheet">
{foreach from=$features item=feature}
<tr class="{cycle values="odd,even"}">
{if isset($feature.value)}    
<td>{$feature.name|escape:'html':'UTF-8'}</td>
<td>{$feature.value|escape:'html':'UTF-8'}</td>
{/if}
</tr>
{/foreach}
</table>
</ul>
{/if} <!--end Data sheet -->
 
<!--Download -->
{if isset($features) && $features}
<ul id="tmdownlaod" class="tm_productinner tab-pane">
{foreach from=$attachments item=attachment name=attachements}
{if $smarty.foreach.attachements.iteration %3 == 1}<div class="row">{/if}
<div class="col-lg-4">
<h4><a href="{$link->getPageLink('attachment', true, NULL, "id_attachment={$attachment.id_attachment}")|escape:'html':'UTF-8'}">{$attachment.name|escape:'html':'UTF-8'}</a></h4>
<p class="text-muted">{$attachment.description|escape:'html':'UTF-8'}</p>
<a class="btn btn-default btn-block" href="{$link->getPageLink('attachment', true, NULL, "id_attachment={$attachment.id_attachment}")|escape:'html':'UTF-8'}">
<i class="icon-download"></i>
{l s="Download"} ({Tools::formatBytes($attachment.file_size, 2)})
</a>
<hr>
</div>
{if $smarty.foreach.attachements.iteration %3 == 0 || $smarty.foreach.attachements.last}</div>{/if}
{/foreach}
</ul>
{/if} <!--end Download -->
 
<!-- Customizable products -->
{if isset($features) && $features}
 
<ul id="tmcustomization" class="tm_productinner tab-pane">
<form method="post" action="{$customizationFormTarget}" enctype="multipart/form-data" id="customizationForm" class="clearfix">
<p class="infoCustomizable">
{l s='After saving your customized product, remember to add it to your cart.'}
{if $product->uploadable_files}
<br />
{l s='Allowed file formats are: GIF, JPG, PNG'}{/if}
</p>
{if $product->uploadable_files|intval}
<div class="customizableProductsFile">
<h5 class="product-heading-h5">{l s='Pictures'}</h5>
<ul id="uploadable_files" class="clearfix">
{counter start=0 assign='customizationField'}
{foreach from=$customizationFields item='field' name='customizationFields'}
{if $field.type == 0}
<li class="customizationUploadLine{if $field.required} required{/if}">{assign var='key' value='pictures_'|cat:$product->id|cat:'_'|cat:$field.id_customization_field}
{if isset($pictures.$key)}
<div class="customizationUploadBrowse">
<img src="{$pic_dir}{$pictures.$key}_small" alt="" />
<a href="{$link->getProductDeletePictureLink($product, $field.id_customization_field)|escape:'html':'UTF-8'}" title="{l s='Delete'}" >
<img src="{$img_dir}icon/delete.gif" alt="{l s='Delete'}" class="customization_delete_icon" width="11" height="13" />
</a>
</div>
{/if}
<div class="customizationUploadBrowse form-group">
<label class="customizationUploadBrowseDescription">
{if !empty($field.name)}
{$field.name}
{else}
{l s='Please select an image file from your computer'}
{/if}
{if $field.required}<sup>*</sup>{/if}
</label>
<input type="file" name="file{$field.id_customization_field}" id="img{$customizationField}" class="form-control customization_block_input {if isset($pictures.$key)}filled{/if}" />
</div>
</li>
{counter}
{/if}
{/foreach}
</ul>
</div>
{/if}
{if $product->text_fields|intval}
<div class="customizableProductsText">
<h5 class="product-heading-h5">{l s='Text'}</h5>
<ul id="text_fields">
{counter start=0 assign='customizationField'}
{foreach from=$customizationFields item='field' name='customizationFields'}
{if $field.type == 1}
<li class="customizationUploadLine{if $field.required} required{/if}">
<label for ="textField{$customizationField}">
{assign var='key' value='textFields_'|cat:$product->id|cat:'_'|cat:$field.id_customization_field}
{if !empty($field.name)}
{$field.name}
{/if}
{if $field.required}<sup>*</sup>{/if}
</label>
<textarea name="textField{$field.id_customization_field}" class="form-control customization_block_input" id="textField{$customizationField}" rows="3" cols="20">{strip}
{if isset($textFields.$key)}
{$textFields.$key|stripslashes}
{/if}
{/strip}</textarea>
</li>
{counter}
{/if}
{/foreach}
</ul>
</div>
{/if}
<p id="customizedDatas">
<input type="hidden" name="quantityBackup" id="quantityBackup" value="" />
<input type="hidden" name="submitCustomizedDatas" value="1" />
<button class="button btn btn-default button button-small" name="saveCustomization">
<span>{l s='Save'}</span>
</button>
<span id="ajax-loader" class="unvisible">
<img src="{$img_ps_dir}loader.gif" alt="loader" />
</span>
</p>
</form>
<p class="clear required"><sup>*</sup> {l s='required fields'}</p>
</ul>
{/if} <!--end Customizable products -->
 
</div>
 
</section>
{/if}
<!-- Megnor End :TAB -->
 
<!--HOOK_PRODUCT_TAB -->
<section class="page-product-box">
{$HOOK_PRODUCT_TAB}
{if isset($HOOK_PRODUCT_TAB_CONTENT) && $HOOK_PRODUCT_TAB_CONTENT}{$HOOK_PRODUCT_TAB_CONTENT}{/if}
</section>
<!--end HOOK_PRODUCT_TAB -->
 
{if isset($accessories) && $accessories}
<!--Accessories -->
<section class="page-product-box accessories-product">
<h3 class="page-product-heading">{l s='Accessories'}</h3>
<div class="block products_block accessories-block clearfix">
<div class="block_content">
 
<!-- Megnor start -->
{assign var='sliderFor' value=4} <!-- Define Number of product for SLIDER -->
{assign var='productCount' value=count($accessories)}
{if $productCount >= $sliderFor}
<div class="customNavigation">
<a class="btn prev accessories_prev"><i class="icon-chevron-sign-left"></i></a>
<a class="btn next accessories_next"><i class="icon-chevron-sign-right"></i></a>
</div>
{/if}
<!-- Megnor End -->
<ul id="{if $productCount >= $sliderFor}accessories-carousel{else}accessories-grid{/if}" class="{if $productCount >= $sliderFor}tm-carousel{else}product_list grid row{/if} clearfix">
{foreach from=$accessories item=accessory name=accessories_list}
{if ($accessory.allow_oosp || $accessory.quantity_all_versions > 0 || $accessory.quantity > 0) && $accessory.available_for_order && !isset($restricted_country_mode)}
{assign var='accessoryLink' value=$link->getProductLink($accessory.id_product, $accessory.link_rewrite, $accessory.category)}
<li class="{if $productCount >= $sliderFor}item{else} ajax_block_product col-xs-12 col-sm-4 col-md-3 {/if} product-box {if $smarty.foreach.accessories_list.first} first_item {/if} {if $smarty.foreach.accessories_list.last} last_item {/if} ">
<div class="product-container">
<div class="product_desc">
<a href="{$accessoryLink|escape:'html':'UTF-8'}" title="{$accessory.legend|escape:'html':'UTF-8'}" class="product-image product_image">
<img class="lazyOwl" src="{$link->getImageLink($accessory.link_rewrite, $accessory.id_image, 'home_default')|escape:'html':'UTF-8'}" alt="{$accessory.legend|escape:'html':'UTF-8'}" width="{$homeSize.width}" height="{$homeSize.height}"/>
</a>
<div class="block_description">
<a href="{$accessoryLink|escape:'html':'UTF-8'}" title="{l s='More'}" class="product_description">
{$accessory.description_short|strip_tags|truncate:20:'...'}
</a>
</div>
</div>
<div class="s_title_block">
<h5 class="product-name">
<a href="{$accessoryLink|escape:'html':'UTF-8'}">
{$accessory.name|truncate:15:'...':true|escape:'html':'UTF-8'}
</a>
</h5>
{if $accessory.show_price && !isset($restricted_country_mode) && !$PS_CATALOG_MODE}
<span class="price product-price">
{if $priceDisplay != 1}
{displayWtPrice p=$accessory.price}{else}{displayWtPrice p=$accessory.price_tax_exc}
{/if}
</span>
{/if}
</div>
<div class="clearfix" style="margin-top:5px">
{if !$PS_CATALOG_MODE && ($accessory.allow_oosp || $accessory.quantity > 0)}
<div class="no-print">
<a class="exclusive button ajax_add_to_cart_button" href="{$link->getPageLink('cart', true, NULL, "qty=1&id_product={$accessory.id_product|intval}&token={$static_token}&add")|escape:'html':'UTF-8'}" data-id-product="{$accessory.id_product|intval}" title="{l s='Add to cart'}">
<span>{l s='Add to cart'}</span>
</a>
</div>
{/if}
</div>
</div>
</li>
{/if}
{/foreach}
</ul>
</div>
</div>
</section>
<!--end Accessories -->
{/if}
{if isset($HOOK_PRODUCT_FOOTER) && $HOOK_PRODUCT_FOOTER}{$HOOK_PRODUCT_FOOTER}{/if}
 
{if isset($packItems) && $packItems|@count > 0}
<section id="blockpack">
<h3 class="page-product-heading">{l s='Pack content'}</h3>
{include file="$tpl_dir./product-list.tpl" products=$packItems}
</section>
{/if}
{/if}
</div> <!-- itemscope product wrapper -->
{strip}
{if isset($smarty.get.ad) && $smarty.get.ad}
{addJsDefL name=ad}{$base_dir|cat:$smarty.get.ad|escape:'html':'UTF-8'}{/addJsDefL}
{/if}
{if isset($smarty.get.adtoken) && $smarty.get.adtoken}
{addJsDefL name=adtoken}{$smarty.get.adtoken|escape:'html':'UTF-8'}{/addJsDefL}
{/if}
{addJsDef allowBuyWhenOutOfStock=$allow_oosp|boolval}
{addJsDef availableNowValue=$product->available_now|escape:'quotes':'UTF-8'}
{addJsDef availableLaterValue=$product->available_later|escape:'quotes':'UTF-8'}
{addJsDef attribute_anchor_separator=$attribute_anchor_separator|escape:'quotes':'UTF-8'}
{addJsDef attributesCombinations=$attributesCombinations}
{addJsDef currencySign=$currencySign|html_entity_decode:2:"UTF-8"}
{addJsDef currencyRate=$currencyRate|floatval}
{addJsDef currencyFormat=$currencyFormat|intval}
{addJsDef currencyBlank=$currencyBlank|intval}
{addJsDef currentDate=$smarty.now|date_format:'%Y-%m-%d %H:%M:%S'}
{if isset($combinations) && $combinations}
{addJsDef combinations=$combinations}
{addJsDef combinationsFromController=$combinations}
{addJsDef displayDiscountPrice=$display_discount_price}
{addJsDefL name='upToTxt'}{l s='Up to' js=1}{/addJsDefL}
{/if}
{if isset($combinationImages) && $combinationImages}
{addJsDef combinationImages=$combinationImages}
{/if}
{addJsDef customizationFields=$customizationFields}
{addJsDef default_eco_tax=$product->ecotax|floatval}
{addJsDef displayPrice=$priceDisplay|intval}
{addJsDef ecotaxTax_rate=$ecotaxTax_rate|floatval}
{addJsDef group_reduction=$group_reduction}
{if isset($cover.id_image_only)}
{addJsDef idDefaultImage=$cover.id_image_only|intval}
{else}
{addJsDef idDefaultImage=0}
{/if}
{addJsDef img_ps_dir=$img_ps_dir}
{addJsDef img_prod_dir=$img_prod_dir}
{addJsDef id_product=$product->id|intval}
{addJsDef jqZoomEnabled=$jqZoomEnabled|boolval}
{addJsDef maxQuantityToAllowDisplayOfLastQuantityMessage=$last_qties|intval}
{addJsDef minimalQuantity=$product->minimal_quantity|intval}
{addJsDef noTaxForThisProduct=$no_tax|boolval}
{addJsDef customerGroupWithoutTax=$customer_group_without_tax|boolval}
{addJsDef oosHookJsCodeFunctions=Array()}
{addJsDef productHasAttributes=isset($groups)|boolval}
{addJsDef productPriceTaxExcluded=($product->getPriceWithoutReduct(true)|default:'null' - $product->ecotax)|floatval}
{addJsDef productBasePriceTaxExcluded=($product->base_price - $product->ecotax)|floatval}
{addJsDef productBasePriceTaxExcl=($product->base_price|floatval)}
{addJsDef productReference=$product->reference|escape:'html':'UTF-8'}
{addJsDef productAvailableForOrder=$product->available_for_order|boolval}
{addJsDef productPriceWithoutReduction=$productPriceWithoutReduction|floatval}
{addJsDef productPrice=$productPrice|floatval}
{addJsDef productUnitPriceRatio=$product->unit_price_ratio|floatval}
{addJsDef productShowPrice=(!$PS_CATALOG_MODE && $product->show_price)|boolval}
{addJsDef PS_CATALOG_MODE=$PS_CATALOG_MODE}
{if $product->specificPrice && $product->specificPrice|@count}
{addJsDef product_specific_price=$product->specificPrice}
{else}
{addJsDef product_specific_price=array()}
{/if}
{if $display_qties == 1 && $product->quantity}
{addJsDef quantityAvailable=$product->quantity}
{else}
{addJsDef quantityAvailable=0}
{/if}
{addJsDef quantitiesDisplayAllowed=$display_qties|boolval}
{if $product->specificPrice && $product->specificPrice.reduction && $product->specificPrice.reduction_type == 'percentage'}
{addJsDef reduction_percent=$product->specificPrice.reduction*100|floatval}
{else}
{addJsDef reduction_percent=0}
{/if}
{if $product->specificPrice && $product->specificPrice.reduction && $product->specificPrice.reduction_type == 'amount'}
{addJsDef reduction_price=$product->specificPrice.reduction|floatval}
{else}
{addJsDef reduction_price=0}
{/if}
{if $product->specificPrice && $product->specificPrice.price}
{addJsDef specific_price=$product->specificPrice.price|floatval}
{else}
{addJsDef specific_price=0}
{/if}
{addJsDef specific_currency=($product->specificPrice && $product->specificPrice.id_currency)|boolval} {* TODO: remove if always false *}
{addJsDef stock_management=$stock_management|intval}
{addJsDef taxRate=$tax_rate|floatval}
{addJsDefL name=doesntExist}{l s='This combination does not exist for this product. Please select another combination.' js=1}{/addJsDefL}
{addJsDefL name=doesntExistNoMore}{l s='This product is no longer in stock' js=1}{/addJsDefL}
{addJsDefL name=doesntExistNoMoreBut}{l s='with those attributes but is available with others.' js=1}{/addJsDefL}
{addJsDefL name=fieldRequired}{l s='Please fill in all the required fields before saving your customization.' js=1}{/addJsDefL}
{addJsDefL name=uploading_in_progress}{l s='Uploading in progress, please be patient.' js=1}{/addJsDefL}
{addJsDefL name='product_fileDefaultHtml'}{l s='No file selected' js=1}{/addJsDefL}
{addJsDefL name='product_fileButtonHtml'}{l s='Choose File' js=1}{/addJsDefL}
{/strip}
{/if}

 

it will be much easier if you will share url to product page where you have this module

Link to comment
Share on other sites

Hi again from Greece,

 

After the changes that made to the products.tlp i have the follow problems

 

1. Quanity tab and price out of the box (attachment1)

 

2. Accessories tab dont' working 

 

3. My extended product tab (module) appears only if you click the last tab.

 

http://eshop.easywatch.gr/en/cctv/7-ds-2ce56d5t-it3.html

 

 

any chance to see how it should look like?

Link to comment
Share on other sites

Hi vekia (or others),

 

below 2 screenshots from PS 1.6.0.9.
First pic is standard (pre-change), second pic is after code change.
 

As a result, tab with 'More Information' has vanished, distorted make up of tabs.

Can you please help? I followed your instructions by the letter, for several times and new installations.post-745460-0-06209200-1418492815_thumb.jpgpost-745460-0-18473800-1418492826_thumb.jpg

Edited by pandorrah (see edit history)
Link to comment
Share on other sites

Hi vekia (or others),

 

below 2 screenshots from PS 1.6.0.9.

First pic is standard (pre-change), second pic is after code change.

 

As a result, tab with 'More Information' has vanished, distorted make up of tabs.

 

Can you please help? I followed your instructions by the letter, for several times and new installations.attachicon.gifcodevoor.jpgattachicon.gifcodena.jpg

 

Hi pandorrah,

 

I've got the same version of Prestashop and the same problem, anyone can find a solution?

  • Like 1
Link to comment
Share on other sites

Hi pandorrah,

 

I know why we had the same problem, because we are not serious :).

 

In order to get the same results as Vekia, you have to read all of the tuto in mypresta.eu/en/art/prestashop-16/product-tabs.html, especially when it comes to the reviews.

 

Actually, if you read the last part of the tuto and you make the modification in productcomments > tab.tpl you will solve the problem.

  • Like 1
Link to comment
Share on other sites

any chance to see how it should look like

 

 

My extended product tab (module) appears only if you click the last tab.

problem2.png

 

Accessories tab dont' working 

problem3.jpg

 

 

Quanity tab and price out of the box

problem1.png

 

 

my eshop http://eshop.easywatch.gr

 

A product for test (in Greek - Ελληνικά) http://eshop.easywatch.gr/el/cctv/7-ds-2ce56d5t-it3.html

 

 

Thanks in advance,

also please tell me if there is any fee that i have to pay for your time

Edited by YorgosChrisikos (see edit history)
Link to comment
Share on other sites

My extended product tab (module) appears only if you click the last tab.

problem2.png

 

Accessories tab dont' working 

problem3.jpg

 

 

Quanity tab and price out of the box

problem1.png

 

 

my eshop http://eshop.easywatch.gr

 

A product for test (in Greek - Ελληνικά) http://eshop.easywatch.gr/el/cctv/7-ds-2ce56d5t-it3.html

 

 

Thanks in advance,

also please tell me if there is any fee that i have to pay for your time

Any response? 

Link to comment
Share on other sites

  • 1 month later...

I solved my Quanity tab and price out of the box problem, that was an css error

But still have 1 magor problems, that i repost

 

1. My extended product tab (module) appears only if you click the last tab.

problem2.png

 

2. Accessories tab dont' working 

problem3.jpg

 

my eshop http://eshop.easywatch.gr

 

A product for test (in Greek - Ελληνικά) http://eshop.easywatch.gr/el/cctv/7-ds-2ce56d5t-it3.html

 

Thanks in advance,

also please tell me if there is any fee that i have (and i am willing) to pay  for your time

Link to comment
Share on other sites

  • 3 weeks later...

I was looking to buy a 1.6 template that would include the real product tabs by default, yet strangely enough, absolutely no template with product tabs is available, not on the Prestashop marketplace, not on Template Monster, nowhere... why is that so? Most of the major e-commerce websites use tab to conveniently make shipping and warranty information or sizing available without clogging the screen.

 

So why did Prestashop get rid of them, and absolutely no template designer brings them back?

 

Too many code changes (i.e. related products module, etc...)?

Link to comment
Share on other sites

Check Warehouse. The best theme for PS and guess what - it have tabs :P

 

OOOOOHHHH, now that is good news! I am checking the template out right now, beautiful! Exactly what I was looking for! :-)

 

Two quick questions:

- do you offer any customization assistance / options to adapt the look (colors) to my needs? (I am not good at coding).

- are the extra-tabs included in the theme (like brand), like here: http://iqit-commerce.com/ps16/demo11/en/women/1-faded-short-sleeve-tshirts.html

 

Thanks in advance for the info!

 

All the best,

 

Dan

Link to comment
Share on other sites

  • 4 months later...
  • 1 month later...

Hi Vekia,  Thanks for the tutorial, got it working in 1.6.1.1 , but do have one issue. On product pages only, the top horizontal menu no longer drops down showing the menus etc on hover..?  I used the product.tpl from this link: http://pastebin.com/1msXe6KP

 

Has anyone else had this problem? Did you manage to fix?  Any help appreciated.  Thanks, Matt.

Link to comment
Share on other sites

How silly that the PS architects have   removed product tabs in 1.6.x !

Why was it not implemented as option to select Vertical or Horizontal tabs.... ho hum

 

Anyway, @ Vekia

I searched for the code in products.tpl  of 1.6.1.1 and it seems a bit different than 1.6.0.x so have not changed it.
I see that the Extra Products Tab addon is only sutable for v1.5.0.0 - v1.5.6.1

 

Can we assume that you are busy working on the Extra Products Tab Addon compatibility for v1.6.x.x ?

Good if we can just buy an addon to bring back the tabs, and add extra tabs.

 

Im finding PS needs a lot of addons to make it do simple things that are standard in most other carts.

The cost isnt the problem its the time I spend researching and fixing/adding that grinds my teeth down!

Cheers

Link to comment
Share on other sites

Hi Vekia,

 

Thanks for the modification.

I was able to achieve product tabs like 1.5.4 following your instruction for my site running 1.6.1.1 with default-bootstrap theme.

 

There is one issue in my case. Please refer to this page for better understanding http://www.kocamoca.com/en/mask-pack/361-modeling-take-out-cup-pack-8pcs.html#idTab5

Product page is displaying double for REVIEW section, 30 OTHER PRODUCTS IN THE SAME CATEGORY (Same category block), CUSTOMERS BOUGHT THIS PRODUCT ALSO BOUGHT(Crossselling block).

Is there a way to get rid of these double displaying blocks?

If I implement extra product tab module, will this issue go away?

 

Thank you for your help in advance.

Edited by cnpark70 (see edit history)
Link to comment
Share on other sites

Hi Vekia,

 

Thanks for the modification.

I was able to achieve product tabs like 1.5.4 following your instruction for my site running 1.6.1.1 with default-bootstrap theme.

 

There is one issue in my case. Please refer to this page for better understanding http://www.kocamoca.com/en/mask-pack/361-modeling-take-out-cup-pack-8pcs.html#idTab5

Product page is displaying double for REVIEW section, 30 OTHER PRODUCTS IN THE SAME CATEGORY (Same category block), CUSTOMERS BOUGHT THIS PRODUCT ALSO BOUGHT(Crossselling block).

Is there a way to get rid of these double displaying blocks?

If I implement extra product tab module, will this issue go away?

 

Thank you for your help in advance.

cnpark70, thanks for sharing that you've managed to get Product Tabs like 1.5 in 1.6.1.1  (using default-bootstrap theme)

 

That is GREAT to know that it is possible, so many of us having difficulty in getting it to work properly in 1.6.1.1 , would you mind sharing your product.tpl file?

 

Thanks in advance, Matt.

Link to comment
Share on other sites

  • 2 months later...

Hi, I'm new to prestashop and I'm not a developer. I'm just a designer who wants to make some changes for my friend's prestashop store. I have a problem with the product tabs on product's page.

 

Here's the link:

http://alecsandragrace.com/en/bracelets/2-bl011015.html

 

post-1142214-0-96137300-1448411063_thumb.png

 

I need the REVIEWS tab to be below the table, 'DATA SHEET' to be changed into PRODUCT DETAILS and become the title of the table. Apart from these problems, I also want to add another general tab for all product, regarding the delivery options.

Thank you, Alecsandra

Link to comment
Share on other sites

  • 1 month later...

Hi Milocz,

 

The transformation of Product Tabs from PS version 1.6 to Toggle Tabs version of PS 1.5 worked just fine.

Thanks a lot!

Unfortunately, pressing on the "Accessories" Tab opens up a short empty window which doesn't display the items selected in the "Associations" section of the back office Product configuration page.

However, all the items appear correctly in the "Accessories" window if the "Inspect element" function in Firefox or "Inspect" function in Google Chrome is used.

The items disappear again once the page is reloaded (refreshed).

Can you please advise on the possible reason and the solution of this problem.

Example pages:

http://www.filterdepot.ca/index.php?id_product=78&controller=product

http://www.filterdepot.ca/index.php?id_product=51&controller=product

 

Thank you,

Alex

Edited by akps1234 (see edit history)
Link to comment
Share on other sites

  • 2 weeks later...

The transformation of Tabs to PS 1.5 style went just fine.

However, the "Accessories" Tab window <div id="idTab4" class="page-product-box"> opens up empty with "0" height of the element.

Meanwhile, the "Accessories" items are correctly displayed when the function "inspect element" in Firefox or "inspect" in Google Chrome is used.

All the items disappear again once the page is Refreshed (reloaded).

The example of the pages with Accessories:

http://www.filterdepot.ca/index.php?id_product=78&controller=product

http://www.filterdepot.ca/index.php?id_product=51&controller=product

 

Would appreciate any help.

 

Alex

Link to comment
Share on other sites

Hi everyone,

 

I integrated the changes in this tutorial with my custom template, and ended up with great looking tabs, except that the Product Reviews tab displays on ALL the tabs.  I am sure there is a piece of code out of place, or duplicate code, or something, but I have been unable to find it.  I am really hoping someone out there can help.  Here's a link to show an example: https://windriverequine.com/breeches-jods-tights/5[spam-filter]microcord-kneepatch-breech.html

Link to comment
Share on other sites

Hi Milocz,

 

The transformation of Product Tabs from PS version 1.6 to Toggle Tabs version of PS 1.5 worked just fine.

Thanks a lot!

Unfortunately, pressing on the "Accessories" Tab opens up a short empty window which doesn't display the items selected in the "Associations" section of the back office Product configuration page.

However, all the items appear correctly in the "Accessories" window if the "Inspect element" function in Firefox or "Inspect" function in Google Chrome is used.

The items disappear again once the page is reloaded (refreshed).

Can you please advise on the possible reason and the solution of this problem.

Example pages:

http://www.filterdepot.ca/index.php?id_product=78&controller=product

http://www.filterdepot.ca/index.php?id_product=51&controller=product

 

Thank you,

Alex

 

Hi,

I have the same problem with the Accessories tab, I do not have the products that are displayed they are present on the page.

If I do not use tabs, the accessories are displayed correctly.

 

Thank you

Best regards

Link to comment
Share on other sites

Hi there,

 

I'm pretty sure, this is a systematic issue related to the interaction between the "IdTabs.js" javascript used to toggle the Tabs and open panes (migrated from PS 1.5 version) and the BxSlider javascript used to display the images of products (as slides) in the "Accessories" tab, as well as in the "Products in the same category" module (if activated in the Product configuration).

It looks that 'resize event' has to be triggered for the BxSlider (or its division <div class="bx-viewport">) each time the "Accessories" tab opens up in order to display the images (slides) correctly.

I think that triggering the 'resize event' for "Accessories" tab upon its opening could get the desired result.

Apparently, this is what "inspect element" function does - triggers the "resize event".

Too bad, the PrestaShop gurus seem don't want to step up and offer a help with solving this systematic problem.

 

Cheers,

Alex

Edited by akps1234 (see edit history)
Link to comment
Share on other sites

  • 1 month later...
  • 3 weeks later...

HI there

 

Thank you for the tutorial, it works really well on PS 1.6.1.4 and looks great. But I need a bit of help from you fantastic people!

 

I am having a couple of issue using the product tabs with the 'Related Products Free' module and 'Q & As Block in Product Page'.

 

1. The Q & A block and the related products block is appearing under the new tabs AND at the footer of the page, so these two modules are appearing twice on the product page.

 

I have looked at the code but cannot work out where it is going wrong.

 

2. I would like to create a third tab, next to 'More Info' and 'Data Sheet' called 'Ask a Question' and put the Q & A block there. At the moment this block is always visible no matter what tab you have selected.

 

post-1201935-0-63264100-1460106046_thumb.jpg

 

Many thanks in advance!

 

 

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...

I am using 1.6.1.5 and have the tabs working but my footer's background colour gets disabled only in desktop mode for some reason(appears fine in mobile). The footer still appears as usual on all other pages except the product page, so I think it's got something to do with product.tpl only.

 

I'm using the same one found here: https://mypresta.eu/content/uploads/2015/10/product.tpl

(I have also tried modifying it manually as stated in mypresta website but got the same result.)

 

Does anyone know how to fix this?

 

My website: https://www.radiantden.com

Link to comment
Share on other sites

Thanks for the reply, vekia!

 

I tried both ways: editing and replacing the file but got the same result. I'm currently using the replaced file.

 

EDIT: I replaced it after upgrading from 1.6.1.4 to 1.6.1.5 if that has anything to do with it.

Edited by Lyke (see edit history)
Link to comment
Share on other sites

  • 3 months later...

 

 

Hi! Many thanks for this tutorial!

It's works!

Tabs exist and works well!

 

But.... i have some issue with right column in product page after changing product.tpl.

Right column slides down after i added tabs.

 

Look at the screens.

 

 

Before add tabs 

before.png

 

After tabs:

 

after.png

 

 

Please help me forget about this issue ;)

Edited by Aromatik (see edit history)
Link to comment
Share on other sites

  • 1 month later...

Hi,

 

Thanks for this module...

 

I don't know what my problem is, perhaps incompatible version from my 1.6.1.7 version.

 

I do all instructions and the tab more information disapears and the only one that appears is tab reviews.

 

when i open the product all information is shown from more information (not the tab), if i click on reviews tab the reviews appear but if i want to go back i don't have the tab more information... but i think its there but not shown since tab reviews is a bit to the right.

 

Can someone please help me?

Edited by Outlet Store (see edit history)
Link to comment
Share on other sites

Hi! Many thanks for this tutorial!

It's works!

Tabs exist and works well!

 

But.... i have some issue with right column in product page after changing product.tpl.

Right column slides down after i added tabs.

 

Look at the screens.

 

 

Before add tabs 

before.png

 

After tabs:

 

after.png

 

 

Please help me forget about this issue ;)

 

Please, i need help with this!   (

Link to comment
Share on other sites

I have used this for 1.5 and 1.6 and worked fine.

Now im on 1.6.1 and using default bootstrap theme and there is something wrong with the code.

The background of the footer is now white... i have tested downloading the file you submit in your blog and now i just tested adding only the code but still the background color of the footer is white.

 

Link to comment
Share on other sites

I have used this for 1.5 and 1.6 and worked fine.

 

Now im on 1.6.1 and using default bootstrap theme and there is something wrong with the code.

 

The background of the footer is now white... i have tested downloading the file you submit in your blog and now i just tested adding only the code but still the background color of the footer is white.

 

 

OK i solved the white background.

 

it looked like the theme css files got mixed up with the globa.css file. 

 

im using theme6.css file, dont know if its only in  this css file it happends but the code that got messed up is

 

theme6.css

 

@media (min-width: 768px) {
  .footer-container {
    background: url(../img/footer-bg.png) repeat-x;
  }
}

in global.css that same snippet have a "#333"  after the "repeat-x"

 

So for anyone else using theme6.css just add this to the line 307 (or actually scratch that linenumber as i have made some custom stuff)

So just search for: 

@media (min-width: 768px) {
  .footer-container {

and change this code:

@media (min-width: 768px) {
  .footer-container {
    background: url(../img/footer-bg.png) repeat-x;
  }
}

To this code:

@media (min-width: 768px) {
  .footer-container {
    background: url(../img/footer-bg.png) repeat-x #333;
  }
}
Edited by rfourt (see edit history)
  • Like 1
Link to comment
Share on other sites

Hi,

 

Thanks for this module...

 

I don't know what my problem is, perhaps incompatible version from my 1.6.1.7 version.

 

I do all instructions and the tab more information disapears and the only one that appears is tab reviews.

 

when i open the product all information is shown from more information (not the tab), if i click on reviews tab the reviews appear but if i want to go back i don't have the tab more information... but i think its there but not shown since tab reviews is a bit to the right.

 

Can someone please help me?

Please help

Link to comment
Share on other sites

Hi "Outlet Store",   I feel your pain as I remember having a similar issue when adding the tabs like 1.5 . Now it was over a year ago... but it could be worth looking at the excellent tutorial by Vekia at MYPRESTA on creating the tabs like 1.5, and in particular the section towards the end on "Compability with other modules" :  https://mypresta.eu/en/art/prestashop-16/product-tabs.html

 

That did the trick for me. Hope it helps, and many thanks to Vekia for all his helpful work!

 

Cheers, Matt     http://www.bighedz.com

Link to comment
Share on other sites

Hi,

 

Thanks for this module...

 

I don't know what my problem is, perhaps incompatible version from my 1.6.1.7 version.

 

I do all instructions and the tab more information disapears and the only one that appears is tab reviews.

 

when i open the product all information is shown from more information (not the tab), if i click on reviews tab the reviews appear but if i want to go back i don't have the tab more information... but i think its there but not shown since tab reviews is a bit to the right.

 

Can someone please help me?

 

share the url to page please

Link to comment
Share on other sites

  • 2 weeks later...

Hi,

 

Thanks for this module...

 

I don't know what my problem is, perhaps incompatible version from my 1.6.1.7 version.

 

I do all instructions and the tab more information disapears and the only one that appears is tab reviews.

 

when i open the product all information is shown from more information (not the tab), if i click on reviews tab the reviews appear but if i want to go back i don't have the tab more information... but i think its there but not shown since tab reviews is a bit to the right.

 

Can someone please help me?

 

The module is great. Even i have the same version of prestashop. The script doesn't work. i cannot see any tabs. I just see the default look. 

Link to comment
Share on other sites

  • 4 weeks later...

Hi,

i have prestashop 1.6.1.7.

I have downloaded the product.tpl file and replace on /themes/default-bootstrap/ 

I have added at end of /themes/default-bootstrap/css/global.css the css report on page of your link.

 

I have cleaned cache.

Tabs don't work. I continue to see the default look of prestashop 1.6

 

Can you help me?

 

Thanks

Link to comment
Share on other sites

  • 4 months later...

Hi,

i have prestashop 1.6.1.7.

I have downloaded the product.tpl file and replace on /themes/default-bootstrap/ 

I have added at end of /themes/default-bootstrap/css/global.css the css report on page of your link.

 

I have cleaned cache.

Tabs don't work. I continue to see the default look of prestashop 1.6

 

Can you help me?

 

Thanks

this same with me :(

Link to comment
Share on other sites

  • 2 weeks later...
  • 5 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...