Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2014
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 40.31 KB | None | 0 0
  1. {include file="$tpl_dir./errors.tpl"}
  2.  
  3. {if (($hide_left_column || $hide_right_column) && ($hide_left_column !='true' || $hide_right_column !='true')) && !$content_only}
  4. {assign var="columns" value="2"}
  5. {elseif (($hide_left_column && $hide_right_column) && ($hide_left_column =='true' && $hide_right_column =='true')) && !$content_only}
  6. {assign var="columns" value="1"}
  7. {elseif $content_only}
  8. {assign var="columns" value="1"}
  9. {else}
  10. {assign var="columns" value="3"}
  11. {/if}
  12.  
  13. {if $errors|@count == 0}
  14. {if !isset($priceDisplayPrecision)}
  15. {assign var='priceDisplayPrecision' value=2}
  16. {/if}
  17. {if !$priceDisplay || $priceDisplay == 2}
  18. {assign var='productPrice' value=$product->getPrice(true, $smarty.const.NULL, $priceDisplayPrecision)}
  19. {assign var='productPriceWithoutReduction' value=$product->getPriceWithoutReduct(false, $smarty.const.NULL)}
  20. {elseif $priceDisplay == 1}
  21. {assign var='productPrice' value=$product->getPrice(false, $smarty.const.NULL, $priceDisplayPrecision)}
  22. {assign var='productPriceWithoutReduction' value=$product->getPriceWithoutReduct(true, $smarty.const.NULL)}
  23. {/if}
  24. <div class="primary_block row" itemscope itemtype="http://schema.org/Product">
  25. {if !$content_only}
  26. <div class="container">
  27. <div class="top-hr"></div>
  28. </div>
  29. {/if}
  30.  
  31. {if isset($adminActionDisplay) && $adminActionDisplay}
  32. <div id="admin-action">
  33. <p>{l s='This product is not visible to your customers.'}
  34. <input type="hidden" id="admin-action-product-id" value="{$product->id}" />
  35. <input type="submit" value="{l s='Publish'}" name="publish_button" class="exclusive" />
  36. <input type="submit" value="{l s='Back'}" name="lnk_view" class="exclusive" />
  37. </p>
  38. <p id="admin-action-result"></p>
  39. </div>
  40. {/if}
  41.  
  42. {if isset($confirmation) && $confirmation}
  43. <p class="confirmation">
  44. {$confirmation}
  45. </p>
  46. {/if}
  47. <!-- left infos-->
  48. <div class="pb-left-column col-xs-12 {if $columns == 2} col-sm-12 col-md-6 two-columns{elseif $columns == 3} col-md-12 three-columns{else} col-sm-4 col-md-5{/if}">
  49. <!-- product img-->
  50. <div id="image-block" class="clearfix">
  51. {if $product->new}
  52. <span class="new-box no-print">
  53. <span class="new-label">{l s='New'}</span>
  54. </span>
  55. {/if}
  56. {if $product->on_sale}
  57. <span class="sale-box no-print">
  58. <span class="sale-label">{l s='Sale!'}</span>
  59. </span>
  60. {elseif $product->specificPrice && $product->specificPrice.reduction && $productPriceWithoutReduction > $productPrice}
  61. <span class="discount">{l s='Reduced price!'}</span>
  62. {/if}
  63. {if $have_image}
  64. <span id="view_full_size">
  65. {if $jqZoomEnabled && $have_image && !$content_only}
  66. <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, 'tm_thickbox_default')|escape:'html':'UTF-8'}" itemprop="url">
  67. <img itemprop="image" src="{$link->getImageLink($product->link_rewrite, $cover.id_image, 'tm_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}"/>
  68. </a>
  69. {else}
  70. <img id="bigpic" itemprop="image" src="{$link->getImageLink($product->link_rewrite, $cover.id_image, 'tm_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}"/>
  71. {if !$content_only}
  72. <span class="span_link no-print">{l s='View larger'}</span>
  73. {/if}
  74. {/if}
  75. </span>
  76. {else}
  77. <span id="view_full_size">
  78. <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}"/>
  79. {if !$content_only}
  80. <span class="span_link">
  81. {l s='View larger'}
  82. </span>
  83. {/if}
  84. </span>
  85. {/if}
  86. </div> <!-- end image-block -->
  87.  
  88. {if isset($images) && count($images) > 0}
  89. <!-- thumbnails -->
  90. <div id="views_block" class="clearfix {if isset($images) && count($images) < 2}hidden{/if}">
  91. {if isset($images) && count($images) > 2}
  92. <span class="view_scroll_spacer">
  93. <a id="view_scroll_left" class="" title="{l s='Other views'}" href="javascript:{ldelim}{rdelim}">
  94. {l s='Previous'}
  95. </a>
  96. </span>
  97. {/if}
  98. <div id="thumbs_list">
  99. <ul id="thumbs_list_frame">
  100. {if isset($images)}
  101. {foreach from=$images item=image name=thumbnails}
  102. {assign var=imageIds value="`$product->id`-`$image.id_image`"}
  103. {if !empty($image.legend)}
  104. {assign var=imageTitle value=$image.legend|escape:'html':'UTF-8'}
  105. {else}
  106. {assign var=imageTitle value=$product->name|escape:'html':'UTF-8'}
  107. {/if}
  108. <li id="thumbnail_{$image.id_image}"{if $smarty.foreach.thumbnails.last} class="last"{/if}>
  109. <a
  110. {if $jqZoomEnabled && $have_image && !$content_only}
  111. href="javascript:void(0);"
  112. rel="{literal}{{/literal}gallery: 'gal1', smallimage: '{$link->getImageLink($product->link_rewrite, $imageIds, 'tm_large_default')|escape:'html':'UTF-8'}',largeimage: '{$link->getImageLink($product->link_rewrite, $imageIds, 'tm_thickbox_default')|escape:'html':'UTF-8'}'{literal}}{/literal}"
  113. {else}
  114. href="{$link->getImageLink($product->link_rewrite, $imageIds, 'tm_thickbox_default')|escape:'html':'UTF-8'}"
  115. data-fancybox-group="other-views"
  116. class="fancybox{if $image.id_image == $cover.id_image} shown{/if}"
  117. {/if}
  118. title="{$imageTitle}">
  119. <img class="img-responsive" id="thumb_{$image.id_image}" src="{$link->getImageLink($product->link_rewrite, $imageIds, 'tm_cart_default')|escape:'html':'UTF-8'}" alt="{$imageTitle}" title="{$imageTitle}" height="{$cartSize.height}" width="{$cartSize.width}" itemprop="image" />
  120. </a>
  121. </li>
  122. {/foreach}
  123. {/if}
  124. </ul>
  125. </div> <!-- end thumbs_list -->
  126. {if isset($images) && count($images) > 2}
  127. <a id="view_scroll_right" title="{l s='Other views'}" href="javascript:{ldelim}{rdelim}">
  128. {l s='Next'}
  129. </a>
  130. {/if}
  131. </div>
  132. <!-- end views-block -->
  133. <!-- end thumbnails -->
  134. {/if}
  135. {if isset($images) && count($images) > 1}
  136. <p class="resetimg clear no-print">
  137. <span id="wrapResetImages" style="display: none;">
  138. <a href="{$link->getProductLink($product)|escape:'html':'UTF-8'}" name="resetImages">
  139. <i class="icon-repeat"></i>
  140. {l s='Display all pictures'}
  141. </a>
  142. </span>
  143. </p>
  144. {/if}
  145. </div>
  146. <!-- end pb-left-column -->
  147. <!-- end left infos-->
  148.  
  149. <!-- center infos -->
  150. <div class="pb-center-column col-xs-12 {if $columns == 2} col-sm-12 col-md-6{elseif $columns == 3} col-sm-12{else} col-sm-4{/if}">
  151. {if $product->online_only}
  152. <p class="online_only">{l s='Online only'}</p>
  153. {/if}
  154.  
  155. <h1 itemprop="name">{$product->name|escape:'html':'UTF-8'}</h1>
  156. <p id="product_reference"{if empty($product->reference) || !$product->reference} style="display: none;"{/if}>
  157. <label>{l s='Model'} </label>
  158. <span class="editable" itemprop="sku">{if !isset($groups)}{$product->reference|escape:'html':'UTF-8'}{/if}</span>
  159. </p>
  160. {capture name=condition}
  161. {if $product->condition == 'new'}
  162. {l s='New'}
  163. {elseif $product->condition == 'used'}
  164. {l s='Used'}
  165. {elseif $product->condition == 'refurbished'}
  166. {l s='Refurbished'}
  167. {/if}
  168. {/capture}
  169. <p id="product_condition"{if !$product->condition} style="display: none;"{/if}>
  170. <label>{l s='Condition'} </label>
  171. <span class="editable" itemprop="condition">{$smarty.capture.condition}</span>
  172. </p>
  173. {if $product->description_short || $packItems|@count > 0}
  174. <div id="short_description_block">
  175. {if $product->description_short}
  176. <div id="short_description_content" class="rte align_justify" itemprop="description">{$product->description_short}</div>
  177. {/if}
  178.  
  179. {if $product->description}
  180. <p class="buttons_bottom_block">
  181. <a href="javascript:{ldelim}{rdelim}" class="button">
  182. {l s='More details'}
  183. </a>
  184. </p>
  185. {/if}
  186. <!--{if $packItems|@count > 0}
  187. <div class="short_description_pack">
  188. <h3>{l s='Pack content'}</h3>
  189. {foreach from=$packItems item=packItem}
  190.  
  191. <div class="pack_content">
  192. {$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>
  193. <p>{$packItem.description_short}</p>
  194. </div>
  195. {/foreach}
  196. </div>
  197. {/if}-->
  198. </div> <!-- end short_description_block -->
  199. {/if}
  200. {if ($display_qties == 1 && !$PS_CATALOG_MODE && $PS_STOCK_MANAGEMENT && $product->available_for_order)}
  201. <!-- number of item in stock -->
  202. <p id="pQuantityAvailable"{if $product->quantity <= 0} style="display: none;"{/if}>
  203. <span id="quantityAvailable">{$product->quantity|intval}</span>
  204. <span {if $product->quantity > 1} style="display: none;"{/if} id="quantityAvailableTxt">{l s='Item'}</span>
  205. <span {if $product->quantity == 1} style="display: none;"{/if} id="quantityAvailableTxtMultiple">{l s='Items'}</span>
  206. </p>
  207. {/if}
  208. {if $PS_STOCK_MANAGEMENT}
  209. <!-- availability -->
  210. <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}>
  211. {*<span id="availability_label">{l s='Availability:'}</span>*}
  212. <span id="availability_value"{if $product->quantity <= 0} class="warning_inline"{/if}>{if $product->quantity <= 0}{if $allow_oosp}{$product->available_later}{else}{l s='This product is no longer in stock'}{/if}{else}{$product->available_now}{/if}</span>
  213. </p>
  214. <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>
  215. {/if}
  216. <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}>
  217. <span id="availability_date_label">{l s='Availability date:'}</span>
  218. <span id="availability_date_value">{dateFormat date=$product->available_date full=false}</span>
  219. </p>
  220. <!-- Out of stock hook -->
  221. <div id="oosHook"{if $product->quantity > 0} style="display: none;"{/if}>
  222. {$HOOK_PRODUCT_OOS}
  223. </div>
  224. {if isset($HOOK_EXTRA_RIGHT) && $HOOK_EXTRA_RIGHT}{$HOOK_EXTRA_RIGHT}{/if}
  225. {if !$content_only}
  226. <!-- usefull links-->
  227. <ul id="usefull_link_block" class="clearfix no-print">
  228. {if $HOOK_EXTRA_LEFT}{$HOOK_EXTRA_LEFT}{/if}
  229. <li class="print">
  230. <a href="javascript:print();">
  231. {l s='Print'}
  232. </a>
  233. </li>
  234. {if $have_image && !$jqZoomEnabled}{/if}
  235. </ul>
  236. {/if}
  237. </div>
  238. <!-- end center infos-->
  239.  
  240. <!-- pb-right-column-->
  241. <div class="pb-right-column col-xs-12 {if $columns == 2} col-sm-12 col-md-12 two-colums{elseif $columns == 3} col-md-12 three-colums{else} col-sm-4 col-md-3{/if}">
  242. {if ($product->show_price && !isset($restricted_country_mode)) || isset($groups) || $product->reference || (isset($HOOK_PRODUCT_ACTIONS) && $HOOK_PRODUCT_ACTIONS)}
  243. <!-- add to cart form-->
  244. <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">
  245. <!-- hidden datas -->
  246. <p class="hidden">
  247. <input type="hidden" name="token" value="{$static_token}" />
  248. <input type="hidden" name="id_product" value="{$product->id|intval}" id="product_page_product_id" />
  249. <input type="hidden" name="add" value="1" />
  250. <input type="hidden" name="id_product_attribute" id="idCombination" value="" />
  251. </p>
  252. <div class="box-info-product">
  253. <div class="content_prices clearfix">
  254. {if $product->show_price && !isset($restricted_country_mode) && !$PS_CATALOG_MODE}
  255. <!-- prices -->
  256. <div class="price">
  257. <p class="our_price_display" itemprop="offers" itemscope itemtype="http://schema.org/Offer">
  258. {if $product->quantity > 0}<link itemprop="availability" href="http://schema.org/InStock"/>{/if}
  259. {if $priceDisplay >= 0 && $priceDisplay <= 2}
  260. <span id="our_price_display" itemprop="price">{convertPrice price=$productPrice}</span>
  261. <!--{if $tax_enabled && ((isset($display_tax_label) && $display_tax_label == 1) || !isset($display_tax_label))}
  262. {if $priceDisplay == 1}{l s='tax excl.'}{else}{l s='tax incl.'}{/if}
  263. {/if}-->
  264. <meta itemprop="priceCurrency" content="{$currency->iso_code}" />
  265. {/if}
  266. </p>
  267. <p id="reduction_percent" {if !$product->specificPrice || $product->specificPrice.reduction_type != 'percentage'} style="display:none;"{/if}>
  268. <span id="reduction_percent_display">
  269. {if $product->specificPrice && $product->specificPrice.reduction_type == 'percentage'}-{$product->specificPrice.reduction*100}%{/if}
  270. </span>
  271. </p>
  272. <p id="old_price"{if (!$product->specificPrice || !$product->specificPrice.reduction) && $group_reduction == 0} class="hidden"{/if}>
  273. {if $priceDisplay >= 0 && $priceDisplay <= 2}
  274. <span id="old_price_display">{if $productPriceWithoutReduction > $productPrice}{convertPrice price=$productPriceWithoutReduction}{/if}</span>
  275. <!-- {if $tax_enabled && $display_tax_label == 1}{if $priceDisplay == 1}{l s='tax excl.'}{else}{l s='tax incl.'}{/if}{/if} -->
  276. {/if}
  277. </p>
  278. {if $priceDisplay == 2}
  279. <br />
  280. <span id="pretaxe_price">
  281. <span id="pretaxe_price_display">{convertPrice price=$product->getPrice(false, $smarty.const.NULL)}</span>
  282. {l s='tax excl.'}
  283. </span>
  284. {/if}
  285. </div> <!-- end prices -->
  286. <p id="reduction_amount" {if !$product->specificPrice || $product->specificPrice.reduction_type != 'amount' || $product->specificPrice.reduction|floatval ==0} style="display:none"{/if}>
  287. <span id="reduction_amount_display">
  288. {if $product->specificPrice && $product->specificPrice.reduction_type == 'amount' && $product->specificPrice.reduction|intval !=0}
  289. -{convertPrice price=$productPriceWithoutReduction-$productPrice|floatval}
  290. {/if}
  291. </span>
  292. </p>
  293. {if $packItems|@count && $productPrice < $product->getNoPackPrice()}
  294. <p class="pack_price">
  295. {l s='Instead of'}
  296. <span style="text-decoration: line-through;">{convertPrice price=$product->getNoPackPrice()}</span>
  297. </p>
  298. {/if}
  299. {if $product->ecotax != 0}
  300. <p class="price-ecotax">
  301. {l s='Include'}
  302. <span id="ecotax_price_display">{if $priceDisplay == 2}{$ecotax_tax_exc|convertAndFormatPrice}{else}{$ecotax_tax_inc|convertAndFormatPrice}{/if}</span>
  303. {l s='For green tax'}
  304. {if $product->specificPrice && $product->specificPrice.reduction}
  305. <br />{l s='(not impacted by the discount)'}
  306. {/if}
  307. </p>
  308. {/if}
  309. {if !empty($product->unity) && $product->unit_price_ratio > 0.000000}
  310. {math equation="pprice / punit_price" pprice=$productPrice punit_price=$product->unit_price_ratio assign=unit_price}
  311. <p class="unit-price">
  312. <span id="unit_price_display">{convertPrice price=$unit_price}</span>
  313. {l s='per'} {$product->unity|escape:'html':'UTF-8'}
  314. </p>
  315. {/if}
  316. {/if}
  317. {*close if for show price*}
  318. <div class="clear"></div>
  319. </div> <!-- end content_prices -->
  320. <div class="product_attributes clearfix">
  321. <!-- quantity wanted -->
  322. {if !$PS_CATALOG_MODE}
  323. <p id="quantity_wanted_p"{if (!$allow_oosp && $product->quantity <= 0) || !$product->available_for_order || $PS_CATALOG_MODE} style="display: none;"{/if}>
  324. <label>{l s='Quantity:'}</label>
  325. <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}" />
  326. <a href="#" data-field-qty="qty" class="btn btn-default button-minus product_quantity_down">
  327. <span>
  328. <i class="icon-minus"></i>
  329. </span>
  330. </a>
  331. <a href="#" data-field-qty="qty" class="btn btn-default button-plus product_quantity_up ">
  332. <span>
  333. <i class="icon-plus"></i>
  334. </span>
  335. </a>
  336. <span class="clearfix"></span>
  337. </p>
  338. {/if}
  339. <!-- minimal quantity wanted -->
  340. <p id="minimal_quantity_wanted_p"{if $product->minimal_quantity <= 1 || !$product->available_for_order || $PS_CATALOG_MODE} style="display: none;"{/if}>
  341. {l s='This product is not sold individually. You must select at least'}
  342. <b id="minimal_quantity_label">{$product->minimal_quantity}</b>
  343. {l s='quantity for this product.'}
  344. </p>
  345. {if isset($groups)}
  346. <!-- attributes -->
  347. <div id="attributes">
  348. <div class="clearfix"></div>
  349. {foreach from=$groups key=id_attribute_group item=group}
  350. {if $group.attributes|@count}
  351. <fieldset class="attribute_fieldset">
  352. <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'} :&nbsp;</label>
  353. {assign var="groupName" value="group_$id_attribute_group"}
  354. <div class="attribute_list">
  355. {if ($group.group_type == 'select')}
  356. <select name="{$groupName}" id="group_{$id_attribute_group|intval}" class="form-control attribute_select no-print">
  357. {foreach from=$group.attributes key=id_attribute item=group_attribute}
  358. <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>
  359. {/foreach}
  360. </select>
  361. {elseif ($group.group_type == 'color')}
  362. <ul id="color_to_pick_list" class="clearfix">
  363. {assign var="default_colorpicker" value=""}
  364. {foreach from=$group.attributes key=id_attribute item=group_attribute}
  365. <li{if $group.default == $id_attribute} class="selected"{/if}>
  366. <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}" style="background: {$colors.$id_attribute.value|escape:'html':'UTF-8'};" title="{$colors.$id_attribute.name|escape:'html':'UTF-8'}">
  367. {if file_exists($col_img_dir|cat:$id_attribute|cat:'.jpg')}
  368. <img src="{$img_col_dir}{$id_attribute|intval}.jpg" alt="{$colors.$id_attribute.name|escape:'html':'UTF-8'}" width="20" height="20" />
  369. {/if}
  370. </a>
  371. </li>
  372. {if ($group.default == $id_attribute)}
  373. {$default_colorpicker = $id_attribute}
  374. {/if}
  375. {/foreach}
  376. </ul>
  377. <input type="hidden" class="color_pick_hidden" name="{$groupName|escape:'html':'UTF-8'}" value="{$default_colorpicker|intval}" />
  378. {elseif ($group.group_type == 'radio')}
  379. <ul>
  380. {foreach from=$group.attributes key=id_attribute item=group_attribute}
  381. <li>
  382. <input type="radio" class="attribute_radio" name="{$groupName|escape:'html':'UTF-8'}" value="{$id_attribute}" {if ($group.default == $id_attribute)} checked="checked"{/if} />
  383. <span>{$group_attribute|escape:'html':'UTF-8'}</span>
  384. </li>
  385. {/foreach}
  386. </ul>
  387. {/if}
  388. </div> <!-- end attribute_list -->
  389. </fieldset>
  390. {/if}
  391. {/foreach}
  392. </div> <!-- end attributes -->
  393. {/if}
  394. </div> <!-- end product_attributes -->
  395. <div class="box-cart-bottom">
  396. <div{if (!$allow_oosp && $product->quantity <= 0) || !$product->available_for_order || (isset($restricted_country_mode) && $restricted_country_mode) || $PS_CATALOG_MODE} class="unvisible"{/if}>
  397. <p id="add_to_cart" class="buttons_bottom_block no-print">
  398. <button type="submit" name="Submit" class="exclusive btn button ajax_add_to_cart_button">
  399. <span>{l s='Add to cart'}</span>
  400. </button>
  401. </p>
  402. </div>
  403. {if isset($HOOK_PRODUCT_ACTIONS) && $HOOK_PRODUCT_ACTIONS}{$HOOK_PRODUCT_ACTIONS}{/if}<strong></strong>
  404. </div> <!-- end box-cart-bottom -->
  405. </div> <!-- end box-info-product -->
  406. </form>
  407. {/if}
  408. </div>
  409. <!-- end pb-right-column-->
  410. </div> <!-- end primary_block -->
  411. {if !$content_only}
  412.  
  413. {if (isset($quantity_discounts) && count($quantity_discounts) > 0)}
  414. <!-- quantity discount -->
  415. <section class="page-product-box">
  416. <h3 class="page-product-heading">{l s='Volume discounts'}</h3>
  417. <div id="quantityDiscount">
  418. <table class="std table-product-discounts">
  419. <thead>
  420. <tr>
  421. <th>{l s='Quantity'}</th>
  422. <th>{if $display_discount_price}{l s='Price'}{else}{l s='Discount'}{/if}</th>
  423. <th>{l s='You Save'}</th>
  424. </tr>
  425. </thead>
  426. <tbody>
  427. {foreach from=$quantity_discounts item='quantity_discount' name='quantity_discounts'}
  428. <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}">
  429. <td>
  430. {$quantity_discount.quantity|intval}
  431. </td>
  432. <td>
  433. {if $quantity_discount.price >= 0 || $quantity_discount.reduction_type == 'amount'}
  434. {if $display_discount_price}
  435. {convertPrice price=$productPrice-$quantity_discount.real_value|floatval}
  436. {else}
  437. {convertPrice price=$quantity_discount.real_value|floatval}
  438. {/if}
  439. {else}
  440. {if $display_discount_price}
  441. {convertPrice price = $productPrice-($productPrice*$quantity_discount.reduction)|floatval}
  442. {else}
  443. {$quantity_discount.real_value|floatval}%
  444. {/if}
  445. {/if}
  446. </td>
  447. <td>
  448. <span>{l s='Up to'}</span>
  449. {if $quantity_discount.price >= 0 || $quantity_discount.reduction_type == 'amount'}
  450. {$discountPrice=$productPrice-$quantity_discount.real_value|floatval}
  451. {else}
  452. {$discountPrice=$productPrice-($productPrice*$quantity_discount.reduction)|floatval}
  453. {/if}
  454. {$discountPrice=$discountPrice*$quantity_discount.quantity}
  455. {$qtyProductPrice = $productPrice*$quantity_discount.quantity}
  456. {convertPrice price=$qtyProductPrice-$discountPrice}
  457. </td>
  458. </tr>
  459. {/foreach}
  460. </tbody>
  461. </table>
  462. </div>
  463. </section>
  464. {/if}
  465.  
  466. {if isset($features) && $features}
  467. <!-- Data sheet -->
  468. <section class="page-product-box">
  469. <h3 class="page-product-heading">{l s='Data sheet'}</h3>
  470. <table class="table-data-sheet">
  471. {foreach from=$features item=feature}
  472. <tr class="{cycle values="odd,even"}">
  473. {if isset($feature.value)}
  474. <td>{$feature.name|escape:'html':'UTF-8'}</td>
  475. <td>{$feature.value|escape:'html':'UTF-8'}</td>
  476. {/if}
  477. </tr>
  478. {/foreach}
  479. </table>
  480. </section>
  481. <!--end Data sheet -->
  482. {/if}
  483. {if $product->description}
  484. <!-- More info -->
  485. <section class="page-product-box">
  486. <h3 class="page-product-heading">{l s='More info'}</h3>{/if}
  487. {if isset($product) && $product->description}
  488. <!-- full description -->
  489. <div class="rte">{$product->description}</div>
  490. </section>
  491. <!--end More info -->
  492. {/if}
  493.  
  494. <!--HOOK_PRODUCT_TAB -->
  495. <section class="page-product-box">
  496. {$HOOK_PRODUCT_TAB}
  497. {if isset($HOOK_PRODUCT_TAB_CONTENT) && $HOOK_PRODUCT_TAB_CONTENT}{$HOOK_PRODUCT_TAB_CONTENT}{/if}
  498. </section>
  499. <!--end HOOK_PRODUCT_TAB -->
  500.  
  501. {if isset($accessories) && $accessories}
  502. <!--Accessories -->
  503. <section class="page-product-box">
  504. <h3 class="page-product-heading">{l s='Accessories'}</h3>
  505. <div class="block products_block accessories-block clearfix">
  506. <div class="block_content">
  507. <ul id="bxslider" class="bxslider clearfix">
  508. {foreach from=$accessories item=accessory name=accessories_list}
  509. {if ($accessory.allow_oosp || $accessory.quantity_all_versions > 0 || $accessory.quantity > 0) && $accessory.available_for_order && !isset($restricted_country_mode)}
  510. {assign var='accessoryLink' value=$link->getProductLink($accessory.id_product, $accessory.link_rewrite, $accessory.category)}
  511. <li class="item product-box ajax_block_product{if $smarty.foreach.accessories_list.first} first_item{elseif $smarty.foreach.accessories_list.last} last_item{else} item{/if} product_accessories_description">
  512. <div class="product_desc">
  513. <a href="{$accessoryLink|escape:'html':'UTF-8'}" title="{$accessory.legend|escape:'html':'UTF-8'}" class="product-image product_image">
  514. <img class="lazyOwl" src="{$link->getImageLink($accessory.link_rewrite, $accessory.id_image, 'tm_home_default')|escape:'html':'UTF-8'}" alt="{$accessory.legend|escape:'html':'UTF-8'}" width="{$homeSize.width}" height="{$homeSize.height}"/>
  515. </a>
  516. <div class="block_description">
  517. <a href="{$accessoryLink|escape:'html':'UTF-8'}" title="{l s='More'}" class="product_description">
  518. {$accessory.description_short|strip_tags|truncate:25:'...'}
  519. </a>
  520. </div>
  521. </div>
  522. <div class="s_title_block">
  523. <h5 class="product-name">
  524. <a title="{$accessory.name|escape:'html':'UTF-8'}" href="{$accessoryLink|escape:'html':'UTF-8'}">
  525. {$accessory.name|truncate:20:'...':true|escape:'html':'UTF-8'}
  526. </a>
  527. </h5>
  528. {if $accessory.show_price && !isset($restricted_country_mode) && !$PS_CATALOG_MODE}
  529. <span class="price">
  530. {if $priceDisplay != 1}
  531. {displayWtPrice p=$accessory.price}{else}{displayWtPrice p=$accessory.price_tax_exc}
  532. {/if}
  533. </span>
  534. {/if}
  535. </div>
  536. <div class="clearfix" style="margin-top:5px">
  537. {if !$PS_CATALOG_MODE && ($accessory.allow_oosp || $accessory.quantity > 0)}
  538. <div class="no-print">
  539. <a class="exclusive btn btn-default button ajax_add_to_cart_button" href="{$link->getPageLink('cart', true, NULL, "qty=1&amp;id_product={$accessory.id_product|intval}&amp;token={$static_token}&amp;add")|escape:'html':'UTF-8'}" data-id-product="{$accessory.id_product|intval}" title="{l s='Add to cart'}">
  540. <span>{l s='Add to cart'}</span>
  541. </a>
  542. </div>
  543. {/if}
  544. </div>
  545. </li>
  546. {/if}
  547. {/foreach}
  548. </ul>
  549. </div>
  550. </div>
  551. </section>
  552. <!--end Accessories -->
  553. {/if}
  554.  
  555. {if isset($HOOK_PRODUCT_FOOTER) && $HOOK_PRODUCT_FOOTER}{$HOOK_PRODUCT_FOOTER}{/if}
  556.  
  557. <!-- description & features -->
  558. {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}
  559.  
  560. {if isset($attachments) && $attachments}
  561. <!--Download -->
  562. <section class="page-product-box">
  563. <h3 class="page-product-heading">{l s='Download'}</h3>
  564. {foreach from=$attachments item=attachment name=attachements}
  565. {if $smarty.foreach.attachements.iteration %3 == 1}<div class="row">{/if}
  566. <div class="col-lg-4">
  567. <h4>
  568. <a href="{$link->getPageLink('attachment', true, NULL, "id_attachment={$attachment.id_attachment}")|escape:'html':'UTF-8'}">{$attachment.name|escape:'html':'UTF-8'}</a>
  569. </h4>
  570. <p class="text-muted">{$attachment.description|escape:'html':'UTF-8'}</p>
  571. <a class="btn btn-default btn-block" href="{$link->getPageLink('attachment', true, NULL, "id_attachment={$attachment.id_attachment}")|escape:'html':'UTF-8'}">
  572. <i class="icon-download"></i>
  573. {l s="Download"} ({Tools::formatBytes($attachment.file_size, 2)})
  574. </a>
  575. <hr>
  576. </div>
  577. {if $smarty.foreach.attachements.iteration %3 == 0 || $smarty.foreach.attachements.last}</div>{/if}
  578. {/foreach}
  579. </section>
  580. <!--end Download -->
  581. {/if}
  582.  
  583. {if isset($product) && $product->customizable}
  584. <!--Customization -->
  585. <section class="page-product-box">
  586. <h3 class="page-product-heading">{l s='Product customization'}</h3>
  587. <!-- Customizable products -->
  588. <form method="post" action="{$customizationFormTarget}" enctype="multipart/form-data" id="customizationForm" class="clearfix">
  589. <p class="infoCustomizable">
  590. {l s='After saving your customized product, remember to add it to your cart.'}
  591. {if $product->uploadable_files}
  592. <br />
  593. {l s='Allowed file formats are: GIF, JPG, PNG'}{/if}
  594. </p>
  595. {if $product->uploadable_files|intval}
  596. <div class="customizableProductsFile">
  597. <h5 class="product-heading-h5">{l s='Pictures'}</h5>
  598. <ul id="uploadable_files" class="clearfix">
  599. {counter start=0 assign='customizationField'}
  600. {foreach from=$customizationFields item='field' name='customizationFields'}
  601. {if $field.type == 0}
  602. <li class="customizationUploadLine{if $field.required} required{/if}">{assign var='key' value='pictures_'|cat:$product->id|cat:'_'|cat:$field.id_customization_field}
  603. {if isset($pictures.$key)}
  604. <div class="customizationUploadBrowse">
  605. <img src="{$pic_dir}{$pictures.$key}_small" alt="" />
  606. <a href="{$link->getProductDeletePictureLink($product, $field.id_customization_field)|escape:'html':'UTF-8'}" title="{l s='Delete'}" >
  607. <img src="{$img_dir}icon/delete.gif" alt="{l s='Delete'}" class="customization_delete_icon" width="11" height="13" />
  608. </a>
  609. </div>
  610. {/if}
  611. <div class="customizationUploadBrowse form-group">
  612. <label class="customizationUploadBrowseDescription">
  613. {if !empty($field.name)}
  614. {$field.name}
  615. {else}
  616. {l s='Please select an image file from your computer'}
  617. {/if}
  618. {if $field.required}<sup>*</sup>{/if}
  619. </label>
  620. <input type="file" name="file{$field.id_customization_field}" id="img{$customizationField}" class="form-control customization_block_input {if isset($pictures.$key)}filled{/if}" />
  621. </div>
  622. </li>
  623. {counter}
  624. {/if}
  625. {/foreach}
  626. </ul>
  627. </div>
  628. {/if}
  629. {if $product->text_fields|intval}
  630. <div class="customizableProductsText">
  631. <h5 class="product-heading-h5">{l s='Text'}</h5>
  632. <ul id="text_fields">
  633. {counter start=0 assign='customizationField'}
  634. {foreach from=$customizationFields item='field' name='customizationFields'}
  635. {if $field.type == 1}
  636. <li class="customizationUploadLine{if $field.required} required{/if}">
  637. <label for ="textField{$customizationField}">
  638. {assign var='key' value='textFields_'|cat:$product->id|cat:'_'|cat:$field.id_customization_field}
  639. {if !empty($field.name)}
  640. {$field.name}
  641. {/if}
  642. {if $field.required}<sup>*</sup>{/if}
  643. </label>
  644. <textarea name="textField{$field.id_customization_field}" class="form-control customization_block_input" id="textField{$customizationField}" rows="3" cols="20">
  645. {strip}
  646. {if isset($textFields.$key)}
  647. {$textFields.$key|stripslashes}
  648. {/if}
  649. {/strip}
  650. </textarea>
  651. </li>
  652. {counter}
  653. {/if}
  654. {/foreach}
  655. </ul>
  656. </div>
  657. {/if}
  658. <p id="customizedDatas">
  659. <input type="hidden" name="quantityBackup" id="quantityBackup" value="" />
  660. <input type="hidden" name="submitCustomizedDatas" value="1" />
  661. <button class="button btn btn-default button button-small" name="saveCustomization">
  662. <span>{l s='Save'}</span>
  663. </button>
  664. <span id="ajax-loader" class="unvisible">
  665. <img src="{$img_ps_dir}loader.gif" alt="loader" />
  666. </span>
  667. </p>
  668. </form>
  669. <p class="clear required"><sup>*</sup> {l s='required fields'}</p>
  670. </section>
  671. <!--end Customization -->
  672. {/if}
  673. {/if}
  674.  
  675. {if isset($packItems) && $packItems|@count > 0}
  676. <section id="blockpack">
  677. <h3 class="page-product-heading">{l s='Pack content'}</h3>
  678.  
  679. {include file="$tpl_dir./product-list.tpl" products=$packItems}
  680.  
  681. </section>
  682. {/if}
  683. {/if}
  684.  
  685. {strip}
  686. {if isset($smarty.get.ad) && $smarty.get.ad}
  687. {addJsDefL name=ad}{$base_dir|cat:$smarty.get.ad|escape:'html':'UTF-8'}{/addJsDefL}
  688. {/if}
  689. {if isset($smarty.get.adtoken) && $smarty.get.adtoken}
  690. {addJsDefL name=adtoken}{$smarty.get.adtoken|escape:'html':'UTF-8'}{/addJsDefL}
  691. {/if}
  692. {addJsDef allowBuyWhenOutOfStock=$allow_oosp|boolval}
  693. {addJsDef availableNowValue=$product->available_now|escape:'quotes':'UTF-8'}
  694. {addJsDef availableLaterValue=$product->available_later|escape:'quotes':'UTF-8'}
  695. {addJsDef attribute_anchor_separator=$attribute_anchor_separator|addslashes}
  696. {addJsDef attributesCombinations=$attributesCombinations}
  697. {addJsDef currencySign=$currencySign|html_entity_decode:2:"UTF-8"}
  698. {addJsDef currencyRate=$currencyRate|floatval}
  699. {addJsDef currencyFormat=$currencyFormat|intval}
  700. {addJsDef currencyBlank=$currencyBlank|intval}
  701. {addJsDef currentDate=$smarty.now|date_format:'%Y-%m-%d %H:%M:%S'}
  702. {if isset($combinations) && $combinations}
  703. {addJsDef combinations=$combinations}
  704. {addJsDef combinationsFromController=$combinations}
  705. {addJsDef displayDiscountPrice=$display_discount_price}
  706. {addJsDefL name='upToTxt'}{l s='Up to' js=1}{/addJsDefL}
  707. {/if}
  708. {if isset($combinationImages) && $combinationImages}
  709. {addJsDef combinationImages=$combinationImages}
  710. {/if}
  711. {addJsDef customizationFields=$customizationFields}
  712. {addJsDef default_eco_tax=$product->ecotax|floatval}
  713. {addJsDef displayPrice=$priceDisplay|intval}
  714. {addJsDef ecotaxTax_rate=$ecotaxTax_rate|floatval}
  715. {addJsDef group_reduction=$group_reduction}
  716. {if isset($cover.id_image_only)}
  717. {addJsDef idDefaultImage=$cover.id_image_only|intval}
  718. {else}
  719. {addJsDef idDefaultImage=0}
  720. {/if}
  721. {addJsDef img_ps_dir=$img_ps_dir}
  722. {addJsDef img_prod_dir=$img_prod_dir}
  723. {addJsDef id_product=$product->id|intval}
  724. {addJsDef jqZoomEnabled=$jqZoomEnabled|boolval}
  725. {addJsDef maxQuantityToAllowDisplayOfLastQuantityMessage=$last_qties|intval}
  726. {addJsDef minimalQuantity=$product->minimal_quantity|intval}
  727. {addJsDef noTaxForThisProduct=$no_tax|boolval}
  728. {addJsDef oosHookJsCodeFunctions=Array()}
  729. {addJsDef productHasAttributes=isset($groups)|boolval}
  730. {addJsDef productPriceTaxExcluded=($product->getPriceWithoutReduct(true)|default:'null' - $product->ecotax)|floatval}
  731. {addJsDef productBasePriceTaxExcluded=($product->base_price - $product->ecotax)|floatval}
  732. {addJsDef productReference=$product->reference|escape:'html':'UTF-8'}
  733. {addJsDef productAvailableForOrder=$product->available_for_order|boolval}
  734. {addJsDef productPriceWithoutReduction=$productPriceWithoutReduction|floatval}
  735. {addJsDef productPrice=$productPrice|floatval}
  736. {addJsDef productUnitPriceRatio=$product->unit_price_ratio|floatval}
  737. {addJsDef productShowPrice=(!$PS_CATALOG_MODE && $product->show_price)|boolval}
  738. {addJsDef PS_CATALOG_MODE=$PS_CATALOG_MODE}
  739. {if $product->specificPrice && $product->specificPrice|@count}
  740. {addJsDef product_specific_price=$product->specificPrice}
  741. {else}
  742. {addJsDef product_specific_price=array()}
  743. {/if}
  744. {if $display_qties == 1 && $product->quantity}
  745. {addJsDef quantityAvailable=$product->quantity}
  746. {else}
  747. {addJsDef quantityAvailable=0}
  748. {/if}
  749. {addJsDef quantitiesDisplayAllowed=$display_qties|boolval}
  750. {if $product->specificPrice && $product->specificPrice.reduction && $product->specificPrice.reduction_type == 'percentage'}
  751. {addJsDef reduction_percent=$product->specificPrice.reduction*100|floatval}
  752. {else}
  753. {addJsDef reduction_percent=0}
  754. {/if}
  755. {if $product->specificPrice && $product->specificPrice.reduction && $product->specificPrice.reduction_type == 'amount'}
  756. {addJsDef reduction_price=$product->specificPrice.reduction|floatval}
  757. {else}
  758. {addJsDef reduction_price=0}
  759. {/if}
  760. {if $product->specificPrice && $product->specificPrice.price}
  761. {addJsDef specific_price=$product->specificPrice.price|floatval}
  762. {else}
  763. {addJsDef specific_price=0}
  764. {/if}
  765. {addJsDef specific_currency=($product->specificPrice && $product->specificPrice.id_currency)|boolval} {* TODO: remove if always false *}
  766. {addJsDef stock_management=$stock_management|intval}
  767. {addJsDef taxRate=$tax_rate|floatval}
  768. {addJsDefL name=doesntExist}{l s='This combination does not exist for this product. Please select another combination.' js=1}{/addJsDefL}
  769. {addJsDefL name=doesntExistNoMore}{l s='This product is no longer in stock' js=1}{/addJsDefL}
  770. {addJsDefL name=doesntExistNoMoreBut}{l s='with those attributes but is available with others.' js=1}{/addJsDefL}
  771. {addJsDefL name=fieldRequired}{l s='Please fill in all the required fields before saving your customization.' js=1}{/addJsDefL}
  772. {addJsDefL name=uploading_in_progress}{l s='Uploading in progress, please be patient.' js=1}{/addJsDefL}
  773. {addJsDef productColumns=$columns}
  774. {/strip}
  775. {/if}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement