feat(main): Add base theme: This is the falcon theme out of the box.

This commit is contained in:
2025-11-18 14:04:01 +01:00
parent 3a7f2db331
commit 85f9b038a7
604 changed files with 49818 additions and 0 deletions

View File

@ -0,0 +1,48 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{block name='breadcrumb'}
{if $breadcrumb.links|count > 1}
<nav aria-label="breadcrumb" data-depth="{$breadcrumb.count}">
{block name='breadcrumb_list'}
<ol class="breadcrumb">
{foreach from=$breadcrumb.links item=path name=breadcrumb}
{block name='breadcrumb_item'}
<li {if $smarty.foreach.breadcrumb.last}class="breadcrumb-item active" aria-current="page"{else}class="breadcrumb-item"{/if}>
{if !$smarty.foreach.breadcrumb.last}
<a href="{$path.url}">
{/if}
{$path.title}
{if !$smarty.foreach.breadcrumb.last}
</a>
{/if}
</li>
{/block}
{/foreach}
</ol>
{/block}
</nav>
{/if}
{/block}

View File

@ -0,0 +1,45 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
<div class="container">
<div class="row">
{block name='hook_footer_before'}
{hook h='displayFooterBefore'}
{/block}
</div>
</div>
<div class="footer-container">
<div class="container">
<div class="row">
{block name='hook_footer'}
{hook h='displayFooter'}
{/block}
</div>
<div class="row">
{block name='hook_footer_after'}
{hook h='displayFooterAfter'}
{/block}
</div>
</div>
</div>

View File

@ -0,0 +1,35 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{if $errors|count}
<div class="help-block mt-2">
{block name='form_errors'}
<ul>
{foreach $errors as $error}
<li class="alert alert-danger">{$error|nl2br nofilter}</li>
{/foreach}
</ul>
{/block}
</div>
{/if}

View File

@ -0,0 +1,221 @@
{**
* 2007-2017 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (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:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 <contact@prestashop.com>
* @copyright 2007-2017 PrestaShop SA
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
* International Registered Trademark & Property of PrestaShop SA
*}
{$autocomplete = [
'firstname' => 'given-name',
'lastname' => 'family-name',
'email'=>'email',
'password'=>'current-password',
'new_password'=>'new-password',
'postcode'=>'postal-code',
'birthday'=>'bday',
'address1'=>'street-address',
'address2'=>'address-line2',
'id_state'=>'address-level1',
'city'=>'address-level2',
'company'=>'organization'
]}
{if $field.type == 'hidden'}
{block name='form_field_item_hidden'}
<input type="hidden" name="{$field.name}" value="{$field.value|default}">
{/block}
{else}
{assign var=uniqId value=10|mt_rand:100000}
<div class="form-group js-input-column">
{if $field.type == 'checkbox' || $field.type == 'radio-buttons'}
{if $field.type == 'radio-buttons'}
<div class="form-label label mr-3">{$field.label}</div>
{/if}
{else}
<label class="form-label {if $field.required}required{/if}" for="f-{$field.name}_{$uniqId}">
{$field.label}
{block name='form_field_comment'}
{if (!$field.required && !in_array($field.type, ['radio-buttons', 'checkbox']))}
<small class="text-muted">({l s='Optional' d='Shop.Forms.Labels'})</small>
{/if}
{/block}
</label>
{/if}
{if $field.type === 'select'}
{block name='form_field_item_select'}
<select class="custom-select wide{if !empty($field.errors)} is-invalid{/if}" name="{$field.name}"
id="f-{$field.name}_{$uniqId}" {if $field.required} required{/if}>
<option value disabled selected>{l s='-- please choose --' d='Shop.Forms.Labels'}</option>
{foreach from=$field.availableValues item="label" key="value"}
<option value="{$value}" {if $value eq $field.value} selected {/if}>{$label}</option>
{/foreach}
</select>
{/block}
{elseif $field.type === 'countrySelect'}
{block name='form_field_item_country'}
<select class="custom-select js-country wide{if !empty($field.errors)} is-invalid{/if}" name="{$field.name}"
id="f-{$field.name}_{$uniqId}" {if $field.required}required{/if}>
<option value disabled selected>{l s='-- please choose --' d='Shop.Forms.Labels'}</option>
{foreach from=$field.availableValues item="label" key="value"}
<option value="{$value}" {if $value eq $field.value} selected {/if}>{$label}</option>
{/foreach}
</select>
{/block}
{elseif $field.type === 'radio-buttons'}
{block name='form_field_item_radio'}
{foreach from=$field.availableValues item="label" key="value" name="radiolist"}
<div class="custom-control custom-radio custom-control-inline">
<input name="{$field.name}" type="radio" value="{$value}"
class="custom-control-input {if !empty($field.errors)} is-invalid{/if}"
id="f-{$field.name}_{$uniqId}-{$smarty.foreach.radiolist.iteration}" {if $field.required}required{/if}
{if $value eq $field.value} checked {/if}>
<label class="custom-control-label"
for="f-{$field.name}_{$uniqId}-{$smarty.foreach.radiolist.iteration}">{$label}</label>
</div>
{/foreach}
{/block}
{elseif $field.type === 'checkbox'}
{block name='form_field_item_checkbox'}
<div class="custom-control custom-checkbox">
<input name="{$field.name}" type="checkbox" value="1" id="f-{$field.name}_{$uniqId}"
class="custom-control-input{if !empty($field.errors)} is-invalid{/if}" {if $field.value} checked="checked"
{/if}{if $field.required} required{/if}>
<label class="custom-control-label" for="f-{$field.name}_{$uniqId}">{$field.label|unescape:'html' nofilter}</label>
</div>
{/block}
{elseif $field.type === 'date'}
{block name='form_field_item_date'}
<input
name="{$field.name}"
class="form-control{if !empty($field.errors)} is-invalid{/if}"
type="date"
value="{$field.value|default}"
placeholder="{if isset($field.availableValues.placeholder)}{$field.availableValues.placeholder}{/if}"
id="f-{$field.name}_{$uniqId}" {if isset($autocomplete[$field.name])} autocomplete="{$autocomplete[$field.name]}"
{/if}>
{if isset($field.availableValues.comment)}
<span class="form-text text-muted">
{$field.availableValues.comment}
</span>
{/if}
{/block}
{elseif $field.type === 'birthday'}
{block name='form_field_item_birthday'}
<div class="js-parent-focus">
{html_select_date
field_order=DMY
time={$field.value}
field_array={$field.name}
prefix=false
reverse_years=true
field_separator='<br>'
day_extra='class="form-control form-control-select"'
month_extra='class="form-control form-control-select"'
year_extra='class="form-control form-control-select"'
day_empty={l s='-- day --' d='Shop.Forms.Labels'}
month_empty={l s='-- month --' d='Shop.Forms.Labels'}
year_empty={l s='-- year --' d='Shop.Forms.Labels'}
start_year={'Y'|date}-100 end_year={'Y'|date}
}
</div>
{/block}
{elseif $field.type === 'password'}
{block name='form_field_item_password'}
<div class="input-group js-parent-focus">
<input
class="form-control js-child-focus js-visible-password{if !empty($field.errors)} is-invalid{/if}"
name="{$field.name}"
id="f-{$field.name}_{$uniqId}"
type="password"
value=""
{if isset($configuration.password_policy.minimum_length)}data-minlength="{$configuration.password_policy.minimum_length}"{/if}
{if isset($configuration.password_policy.maximum_length)}data-maxlength="{$configuration.password_policy.maximum_length}"{/if}
{if isset($configuration.password_policy.minimum_score)}data-minscore="{$configuration.password_policy.minimum_score}"{/if}
pattern=".{literal}{{/literal}{$configuration.password_policy.minimum_length},{literal}}{/literal}"
{if isset($autocomplete[$field.name])}autocomplete="{$autocomplete[$field.name]}" {/if}
{if $field.required}required{/if}>
<span class="input-group-append">
<button class="btn btn-primary" type="button" data-action="show-password"
data-text-show="<span class='material-icons d-block'>visibility</span>" data-text-hide="<span class='material-icons d-block'>visibility_off</span>">
<span class="material-icons d-block">visibility</span>
</button>
</span>
</div>
{include file='_partials/form-errors.tpl' errors=$field.errors required=$field.required label=$field.label}
{/block}
{elseif $field.type === 'file'}
<div class="custom-file">
<input name="{$field.name}" type="file" class="custom-file-input{if !empty($field.errors)} is-invalid{/if}"
id="f-{$field.name}_{$uniqId}" {if $field.required} required{/if}>
<label class="custom-file-label" for="f-{$field.name}_{$uniqId}">{l s='Choose file' d='Shop.Theme.Actions'}</label>
</div>
{else}
{block name='form_field_item_other'}
<input
class="form-control{if !empty($field.errors)} is-invalid{/if}"
name="{$field.name}"
type="{if $field.name === "phone"}tel{else}{$field.type}{/if}"
value="{$field.value|default}"
id="f-{$field.name}_{$uniqId}"
{if isset($field.availableValues.placeholder)}placeholder="{$field.availableValues.placeholder}" {/if}
{if $field.maxLength}maxlength="{$field.maxLength}" {/if}
{if $field.required}required{/if}
{if isset($autocomplete[$field.name])} autocomplete="{$autocomplete[$field.name]}" {/if}
pattern="^[^\s]+(\s+[^\s]+)*$">
{if isset($field.availableValues.comment)}
<small class="form-text text-muted">
{$field.availableValues.comment}
</small>
{/if}
{/block}
{/if}
{block name='form_field_errors'}
{if $field.type !== 'password'}
{include file='_partials/form-errors.tpl' errors=$field.errors required=$field.required label=$field.label}
{/if}
{/block}
</div>
{/if}

View File

@ -0,0 +1,10 @@
{$themeDir = _PS_THEME_DIR_}
{$preloadFilePath = "`$themeDir`assets/preload.html"}
{$urlsWithCdn = $urls.img_ps_url|replace:'/img/':'/'}
{if file_exists($preloadFilePath)}
{capture name="preloadBlock"}{include file=$preloadFilePath}{/capture}
{$smarty.capture.preloadBlock|replace:'/themes/':"`$urlsWithCdn`themes/" nofilter}
{/if}

View File

@ -0,0 +1,84 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{block name='head_charset'}
<meta charset="utf-8">
{/block}
{block name='head_ie_compatibility'}
<meta http-equiv="x-ua-compatible" content="ie=edge">
{/block}
{block name='head_seo'}
<title>{block name='head_seo_title'}{$page.meta.title}{/block}</title>
{block name='hook_after_title_tag'}
{hook h='displayAfterTitleTag'}
{/block}
<meta name="description" content="{block name='head_seo_description'}{$page.meta.description}{/block}">
<meta name="keywords" content="{block name='head_seo_keywords'}{$page.meta.keywords}{/block}">
{if $page.meta.robots !== 'index'}
<meta name="robots" content="{$page.meta.robots}">
{/if}
{if $page.canonical}
<link rel="canonical" href="{$page.canonical}">
{/if}
{block name='head_hreflang'}
{foreach from=$urls.alternative_langs item=pageUrl key=code}
<link rel="alternate" href="{$pageUrl}" hreflang="{$code}">
{/foreach}
{/block}
{block name='head_pagination_seo'}
{include file="_partials/pagination-seo.tpl"}
{/block}
{/block}
{block name='head_viewport'}
<meta name="viewport" content="width=device-width, initial-scale=1">
{/block}
{block name='head_icons'}
<link rel="icon" type="image/vnd.microsoft.icon" href="{$shop.favicon}?{$shop.favicon_update_time}">
<link rel="shortcut icon" type="image/x-icon" href="{$shop.favicon}?{$shop.favicon_update_time}">
{/block}
{block name='hook_header'}
{$HOOK_HEADER nofilter}
{/block}
{block name='head_preload'}
{if $shop.logo}
<link rel="preload" as="image" href="{$shop.logo}">
{/if}
{include file="_partials/head-preload.tpl"}
{/block}
{block name='stylesheets'}
{include file="_partials/stylesheets.tpl" stylesheets=$stylesheets}
{/block}
{block name='javascript_head'}
{include file="_partials/javascript.tpl" javascript=$javascript.head vars=$js_custom_vars}
{/block}
{block name='hook_extra'}{/block}

View File

@ -0,0 +1,91 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{block name='header_banner'}
<div class="header-banner">
{hook h='displayBanner'}
</div>
{/block}
{block name='header_nav'}
<nav class="header-nav border-bottom bg-light py-1 d-none d-md-block">
<div class="container">
<div class="row align-items-center">
{hook h='displayNav1'}
{hook h='displayNav2'}
</div>
</div>
</nav>
{/block}
{block name='header_top'}
<div class="js-header-top-wrapper">
<div class="header-top js-header-top">
<div class="header-top__content pt-md-3 pb-md-0 py-2">
<div class="container">
<div class="row header-top__row">
<div class="col flex-grow-0 header-top__block header-top__block--menu-toggle d-block d-md-none">
<a
class="header-top__link"
rel="nofollow"
href="#"
data-toggle="modal"
data-target="#mobile_top_menu_wrapper"
>
<div class="header-top__icon-container">
<span class="header-top__icon material-icons">menu</span>
</div>
</a>
</div>
<div class="col-md-4 col header-top__block header-top__block--logo">
<a href="{$urls.pages.index}">
{images_block webpEnabled=$webpEnabled}
<img
{if !empty($shop.logo_details)}
src="{$shop.logo_details.src}"
width="{$shop.logo_details.width}"
height="{$shop.logo_details.height}"
{else}
src="{$shop.logo}"
{/if}
class="logo img-fluid"
alt="{$shop.name} {l s='logo' d='Shop.Theme.Global'}">
{/images_block}
</a>
</div>
{hook h='displayTop'}
</div>
</div>
</div>
</div>
</div>
{hook h='displayNavFullWidth'}
{/block}

View File

@ -0,0 +1,48 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{$jsAssetHash = Configuration::get('PS_CCCJS_VERSION')|md5}
{foreach $javascript.external as $js}
<script
type="text/javascript"
src="{appendParamToUrl url=$js.uri key=v value=$jsAssetHash}"
{$js.attribute}></script>
{/foreach}
{foreach $javascript.inline as $js}
<script type="text/javascript">
{$js.content nofilter}
</script>
{/foreach}
{if isset($vars) && $vars|@count}
<script type="text/javascript">
{foreach from=$vars key=var_name item=var_value}
var {$var_name} = {$var_value|json_encode nofilter};
{/foreach}
</script>
{/if}

View File

@ -0,0 +1,6 @@
{include file="_partials/modal-search.tpl"}
{include file="_partials/modal-menu.tpl"}
{include file="_partials/modal-filters.tpl"}

View File

@ -0,0 +1,19 @@
{extends file='components/modal.tpl'}
{block name='modal_extra_attribues'}id="mobile_filters" data-modal-hide-mobile{/block}
{block name='modal_extra_class'}fixed-right{/block}
{block name='modal_dialog_extra_class'}modal-dialog-aside{/block}
{block name='modal_title'}{l s='Filters' d='Shop.Theme.Catalog'}{/block}
{block name='modal_body_extra_class'}p-0{/block}
{block name='modal_body'}
<div id="_mobile_filters"></div>
{/block}
{block name='modal_footer'}
<button type="button" class="btn btn-block btn-primary" data-dismiss="modal" aria-label="Close">
{l s='Show results' d='Shop.Istheme'}
</button>
{/block}

View File

@ -0,0 +1,16 @@
{extends file='components/modal.tpl'}
{block name='modal_extra_attribues'}id="mobile_top_menu_wrapper" data-modal-hide-mobile{/block}
{block name='modal_extra_class'}fixed-left{/block}
{block name='modal_dialog_extra_class'}modal-dialog-aside{/block}
{block name='modal_title'}{l s='Menu' d='Shop.Theme.Catalog'}{/block}
{block name='modal_body'}
<div class="js-top-menu mobile" id="_mobile_top_menu"></div>
<div class="js-top-menu-bottom">
<div id="_mobile_currency_selector" class="mb-2"></div>
<div id="_mobile_language_selector" class="mb-2"></div>
<div id="_mobile_contact_link" class="mb-2"></div>
</div>
</div>
{/block}

View File

@ -0,0 +1,12 @@
{extends file='components/modal.tpl'}
{block name='modal_extra_attribues'}id="saerchModal" data-modal-hide-mobile{/block}
{block name='modal_extra_class'}modal-fullscreen search-modal{/block}
{block name='modal_header'}{/block}
{block name='modal_body'}
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<div id="_mobile_search_from">
</div>
{/block}

View File

@ -0,0 +1,78 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{if isset($notifications)}
<aside id="notifications">
<div class="container">
{if $notifications.error}
{block name='notifications_error'}
<article class="alert alert-danger" role="alert" data-alert="danger">
<ul class="mb-0">
{foreach $notifications.error as $notif}
<li>{$notif nofilter}</li>
{/foreach}
</ul>
</article>
{/block}
{/if}
{if $notifications.warning}
{block name='notifications_warning'}
<article class="alert alert-warning" role="alert" data-alert="warning">
<ul class="mb-0">
{foreach $notifications.warning as $notif}
<li>{$notif nofilter}</li>
{/foreach}
</ul>
</article>
{/block}
{/if}
{if $notifications.success}
{block name='notifications_success'}
<article class="alert alert-success" role="alert" data-alert="success">
<ul class="mb-0">
{foreach $notifications.success as $notif}
<li>{$notif nofilter}</li>
{/foreach}
</ul>
</article>
{/block}
{/if}
{if $notifications.info}
{block name='notifications_info'}
<article class="alert alert-info" role="alert" data-alert="info">
<ul class="mb-0">
{foreach $notifications.info as $notif}
<li>{$notif nofilter}</li>
{/foreach}
</ul>
</article>
{/block}
{/if}
</div>
</aside>
{/if}

View File

@ -0,0 +1,3 @@
<div class="page-loader">
<div class="spinner-border text-primary" role="status"><span class="sr-only">{l s='Loading...' d='Shop.Theme.Global'}</span></div>
</div>

View File

@ -0,0 +1,47 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{if isset($listing.pagination) && $listing.pagination.should_be_displayed}
{$page_nb = 1}
{if isset($smarty.get.page)}
{$page_nb = $smarty.get.page|intval|default:1}
{/if}
{$queryPage = '?page='|cat:$page_nb}
{$page.canonical = $page.canonical|replace:$queryPage:''}
{$prev = false}
{$next = false}
{if ($page_nb - 1) == 1}
{$prev = $page.canonical}
{elseif $page_nb > 2}
{$prev = ($page['canonical']|cat:'?page='|cat:($page_nb - 1))}
{/if}
{if $listing.pagination.total_items > $listing.pagination.items_shown_to}
{$next = ($page['canonical']|cat:'?page='|cat:($page_nb + 1))}
{/if}
{if $prev}<link rel="prev" href="{$prev}">{/if}
{if $next}<link rel="next" href="{$next}">{/if}
{/if}

View File

@ -0,0 +1,63 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{block name='pagination_page_list'}
{if $pagination.should_be_displayed}
<nav>
<ul class="pagination justify-content-center mt-4 mb-2">
{foreach from=$pagination.pages item="page"}
<li class="page-item{if $page.current} active{/if} {if $page.type === 'spacer'}disabled{/if}">
{if $page.type === 'spacer'}
<span
rel="{if $page.type === 'previous'}prev{elseif $page.type === 'next'}next{else}nofollow{/if}"
href="#"
class="page-link"
>
&hellip;
</span>
{else}
<a
rel="{if $page.type === 'previous'}prev{elseif $page.type === 'next'}next{else}nofollow{/if}"
href="{$page.url}"
class="page-link {['disabled' => !$page.clickable, 'js-search-link' => true]|classnames}"
>
{if $page.type === 'previous'}
<span class="material-icons font-reset align-middle">keyboard_arrow_left</span>
<span class="sr-only">{l s='Previous' d='Shop.Theme.Actions'}</span>
{elseif $page.type === 'next'}
<span class="material-icons font-reset align-middle">keyboard_arrow_right</span>
<span class="sr-only">{l s='Next' d='Shop.Theme.Actions'}</span>
{else}
{$page.page}
{/if}
</a>
{/if}
</li>
{/foreach}
</ul>
</nav>
{/if}
{/block}

View File

@ -0,0 +1,29 @@
<template id="password-feedback">
<div
class="js-password-strength-feedback password-strength-feedback mt-1"
style="display: none;"
>
<div class="progress-container">
<div class="progress mb-1">
<div class="progress-bar js-password-policy-progress-bar" role="progressbar" aria-valuemin="0" aria-valuemax="100"></div>
</div>
</div>
<script type="text/javascript" class="js-hint-password">
{if !empty($page['password-policy']['feedbacks'])}
{$page['password-policy']['feedbacks']|@json_encode nofilter}
{/if}
</script>
<div class="js-password-strength-text password-strength-text"></div>
<div class="password-requirements">
<p class="js-password-requirements-length password-requirements-length font-sm d-flex align-items-center my-2" data-translation="{l s='Enter a password between %s and %s characters' d='Shop.Theme.Customeraccount'}">
<i class="material-icons mr-1 font-size-lg">check_circle</i>
<span></span>
</p>
<p class="js-password-requirements-score password-requirements-score font-sm d-flex align-items-center my-2" data-translation="{l s='The minimum score must be: %s' d='Shop.Theme.Customeraccount'}">
<i class="material-icons mr-1 font-size-lg">check_circle</i>
<span></span>
</p>
</div>
</div>
</template>

View File

@ -0,0 +1,54 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{$cssAssetHash = Configuration::get('PS_CCCCSS_VERSION')|md5}
{foreach $stylesheets.external as $stylesheet}
{$url = {appendParamToUrl url=$stylesheet.uri key=v value=$cssAssetHash}}
{if $preloadCss|default:false &&
($stylesheet.id === 'theme-ccc')
||
(in_array($stylesheet.id, ['theme-main', 'theme-product', 'theme-listing', 'theme-checkout']) && $stylesheet.server !== 'remote')
}
<link
rel="preload"
href="{appendParamToUrl url=$stylesheet.uri key=v value=$cssAssetHash}"
as="style"
>
{/if}
<link
rel="stylesheet"
href="{appendParamToUrl url=$stylesheet.uri key=v value=$cssAssetHash}"
type="text/css"
media="{$stylesheet.media}">
{/foreach}
{foreach $stylesheets.inline as $stylesheet}
<style>
{$stylesheet.content}
</style>
{/foreach}

View File

@ -0,0 +1,7 @@
<div id="js-product-list-footer">
{if $category.additional_description && $listing.pagination.items_shown_from == 1}
<div id="category-description-2" class="cms-content my-3">
{$category.additional_description nofilter}
</div>
{/if}
</div>

View File

@ -0,0 +1,37 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
<div id="js-product-list-header">
<div class="block-category">
<h1 class="h1">
{$category.name}
{if $listing.pagination.items_shown_from !== 1}
{l s='- page' d='Shop.Theme.Catalog'} {$listing.pagination.current_page}
{/if}
</h1>
{if $category.description && $listing.pagination.items_shown_from == 1}
<div id="category-description" class="cms-content">{$category.description nofilter}</div>
{/if}
</div>
</div>

View File

@ -0,0 +1,28 @@
<div class="product-miniature__actions">
{if $product.add_to_cart_url && ($product.quantity > 0 || $product.allow_oosp) && !$configuration.is_catalog}
<form class="product-miniature__form" action="{$product.add_to_cart_url}" method="post">
<input type="hidden" name="id_product" value="{$product.id}">
<input
type="hidden"
name="qty"
value="{if isset($product.product_attribute_minimal_quantity) && $product.product_attribute_minimal_quantity != ''}{$product.product_attribute_minimal_quantity}{else}{$product.minimal_quantity}{/if}"
class="form-control input-qty"
>
<button
class="btn btn-primary btn-block add-to-cart"
data-button-action="add-to-cart"
type="submit"
{if !$product.add_to_cart_url}
disabled
{/if}
>
{l s='Add to cart' d='Shop.Theme.Actions'}
</button>
</form>
{else}
<a href="{$product.canonical_url}"
class="btn btn-secondary btn-block"
> {l s='View' d='Shop.Theme.Actions'}
</a>
{/if}
</div>

View File

@ -0,0 +1,18 @@
{block name='product_price_and_shipping'}
{if $product.show_price}
<div class="product-miniature__pricing text-right">
{if $product.has_discount}
{hook h='displayProductPriceBlock' product=$product type="old_price"}
<span class="price price--regular mr-1" aria-label="{l s='Regular price' d='Shop.Theme.Catalog'}">{$product.regular_price}</span>
{/if}
{hook h='displayProductPriceBlock' product=$product type="before_price"}
<span class="price" aria-label="{l s='Price' d='Shop.Theme.Catalog'}">{$product.price}</span>
{hook h='displayProductPriceBlock' product=$product type='unit_price'}
{hook h='displayProductPriceBlock' product=$product type='weight'}
</div>
{/if}
{/block}

View File

@ -0,0 +1,36 @@
{block name='product_thumbnail'}
<div class="product-miniature__thumb position-relative {$thumbExtraClass|default:''}">
<a href="{$product.url}" class="product-miniature__thumb-link">
{images_block webpEnabled=$webpEnabled}
<img
{if $product.default_image}
data-full-size-image-url="{$product.default_image.large.url}"
{generateImagesSources image=$product.default_image size='home_default' lazyload=true}
alt="{if !empty($product.default_image.legend)}{$product.default_image.legend}{else}{$product.name|truncate:30:'...'}{/if}"
width="{$product.default_image.bySize.home_default.width}"
height="{$product.default_image.bySize.home_default.height}"
{else}
src="{$urls.no_picture_image.bySize.home_default.url}"
alt="{$product.name|truncate:30:'...'}"
width="{$urls.no_picture_image.bySize.home_default.width}"
height="{$urls.no_picture_image.bySize.home_default.height}"
{/if}
class="img-fluid rounded lazyload"
/>
{/images_block}
{include file='catalog/_partials/product-flags.tpl'}
</a>
{block name='quick_view'}
<a class="quick-view product-miniature__functional-btn btn btn-light shadow rounded-circle" href="#" data-link-action="quickview">
<span class="material-icons product-miniature__functional-btn-icon">visibility</span>
</a>
{/block}
{block name='product_reviews'}
{hook h='displayProductListReviews' product=$product}
{/block}
</div>
{/block}

View File

@ -0,0 +1,9 @@
{block name='product_name'}
{$headingTag = 'h2'}
{if $page.page_name == 'index'}
{$headingTag = 'h3'}
{/if}
<{$headingTag} class="h5 product-miniature__title mb-2">
<a class="text-reset" href="{$product.url}">{$product.name}</a>
</{$headingTag}>
{/block}

View File

@ -0,0 +1,7 @@
<div class="product-miniature__information {if !$product.main_variants} product-miniature__information--no-variants{/if} hidden-sm-down">
{block name='product_variants'}
{if $product.main_variants}
{include file='catalog/_partials/variant-links.tpl' variants=$product.main_variants}
{/if}
{/block}
</div>

View File

@ -0,0 +1,47 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{block name='brand_miniature_item'}
<li class="col-lg-3 col-sm-4 col-6 mb-3">
<div class="card h-100">
{$sizes = Image::getSize('home_default')}
<img
src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='{$sizes.width}' height='{$sizes.height}' viewBox='0 0 1 1'%3E%3C/svg%3E"
data-src="{$brand.image|replace:'small_default':'home_default'}"
alt="{$brand.name}"
class="card-img-top lazyload"
width="{$sizes.width}"
height="{$sizes.height}"
>
<div class="card-body">
<p class="h6 mb-0">
<a class="text-reset stretched-link" href="{$brand.url}">{$brand.name}</a>
</p>
</div>
<div class="card-footer text-center">
<span class="btn btn-link p-0">{$brand.nb_products}</span>
</div>
</div>
</li>
{/block}

View File

@ -0,0 +1,40 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{block name='category_miniature_item'}
<section class="category-miniature">
<a href="{$category.url}">
<img
src="{$category.image.medium.url}"
alt="{if !empty($category.image.legend)}{$category.image.legend}{else}{$category.name}{/if}"
>
</a>
<h1 class="h2">
<a href="{$category.url}">{$category.name}</a>
</h1>
<div class="category-description">{$category.description nofilter}</div>
</section>
{/block}

View File

@ -0,0 +1,62 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{block name='pack_miniature_item'}
<div class="card overflow-hidden">
<div class="row no-gutters flex-nowrap">
<div class="col-4 col-md-3 col-xl-2">
<a href="{$product.url}" title="{$product.name}">
{images_block webpEnabled=$webpEnabled}
<img
class="img-fluid lazyload"
{generateImagesSources image=$product.default_image size='cart_default' lazyload=true}
width="{$product.default_image.bySize.cart_default.width}"
height="{$product.default_image.bySize.cart_default.height}"
{if !empty($product.default_image.legend)}
alt="{$product.default_image.legend}"
title="{$product.default_image.legend}"
{else}
alt="{$product.name}"
{/if}
data-full-size-image-url="{$product.default_image.large.url}"
>
{/images_block}
</a>
</div>
<div class="card-body align-self-center">
<p class="pack-product-name h6 mb-2">
<a href="{$product.url}" class="text-reset" title="{$product.name}">
<span class="text-muted">{$product.pack_quantity}x</span> {$product.name}
</a>
</p>
{if $showPackProductsPrice}
<div class="price">
{$product.price}
</div>
{/if}
</div>
</div>
</div>
{/block}

View File

@ -0,0 +1,64 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{block name='product_miniature_item'}
{$listingType = $type|default:'listing'}
<div
class="products-list__block products-list__block--list"
>
<article class="product-miniature card js-product-miniature p-2 h-100 {block name='product_miniature_item_class'}{/block}" data-id-product="{$product.id_product}" data-id-product-attribute="{$product.id_product_attribute}">
<div class="row">
<div class="col-md-4 col-lg-3">
{include file='catalog/_partials/miniatures/_partials/product-thumb.tpl'}
</div>
<div class="col-md-8 col-lg-9">
<div class="d-flex flex-column h-100">
{include file='catalog/_partials/miniatures/_partials/product-title.tpl'}
{block name='product_desc'}
{if $product.description_short}
<div class="product-miniature__desc">
{$product.description_short nofilter}
</div>
{/if}
{/block}
<div class="row mt-auto">
<div class="col">
{include file='catalog/_partials/miniatures/_partials/product-prices.tpl'}
</div>
<div class="col">
{include file='catalog/_partials/miniatures/_partials/product-form.tpl'}
</div>
</div>
</div>
</div>
</div>
</article>
</div>
{/block}

View File

@ -0,0 +1,50 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{block name='product_miniature_item'}
{$listingType = $type|default:'listing'}
<div
{if $listingType === 'listing'}
class="products-list__block products-list__block--grid"
{elseif $listingType === 'slider'}
class="swiper-slide product-slider__item col-6 col-md-4 col-lg-3"
{/if}
>
<article
class="product-miniature card js-product-miniature p-2 h-100 {block name='product_miniature_item_class'}{/block}"
data-id-product="{$product.id_product}" data-id-product-attribute="{$product.id_product_attribute}"
>
{include file='catalog/_partials/miniatures/_partials/product-thumb.tpl' thumbExtraClass='mb-2'}
{include file='catalog/_partials/miniatures/_partials/product-title.tpl'}
{include file='catalog/_partials/miniatures/_partials/product-prices.tpl'}
{block name='product_form'}
{include file='catalog/_partials/miniatures/_partials/product-form.tpl'}
{/block}
</article>
</div>
{/block}

View File

@ -0,0 +1,55 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{$defaultPerPage = Configuration::get('PS_PRODUCTS_PER_PAGE')}
{$currentPerPage = $smarty.get.resultsPerPage|default:$defaultPerPage}
{if $listing.pagination.total_items > $defaultPerPage}
{$currentPage = $listing.pagination.current_page}
{$currentUrl = $listing.current_url}
{$currentUrlFormatted = $currentUrl|replace:"page=`$currentPage`":"page=1"} {* RESET PAGE IS REQUIRED *}
{$otherParamsExists = !!strpos($currentUrl, '?')}
{$productPerPageArray = [
$defaultPerPage,
$defaultPerPage * 2,
$defaultPerPage * 4
]}
<select data-action="search-select" class="custom-select">
{foreach $productPerPageArray as $perPage}
<option
{if $currentPerPage == $perPage}selected{/if}
{if $smarty.get.resultsPerPage|default:0}
data-href="{$currentUrlFormatted|replace:"resultsPerPage=`$currentPerPage`":"resultsPerPage=`$perPage`"}"
{else}
data-href="{$currentUrlFormatted}{if $otherParamsExists}&{else}?{/if}resultsPerPage={$perPage}"
{/if}>
{l s='Per page:' d='Shop.Theme.Catalog'} {$perPage}
</option>
{/foreach}
</select>
{/if}

View File

@ -0,0 +1,6 @@
{extends file="components/featured-products.tpl"}
{block name='featured_products_title'}
{l s='You might also like' d='Shop.Theme.Catalog'}
{/block}

View File

@ -0,0 +1,37 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{if $page.admin_notifications}
<div class="alert alert-warning row" role="alert">
<div class="container">
<div class="row">
{foreach $page.admin_notifications as $notif}
<div class="col-sm-12">
<p class="alert-text">{$notif.message}</p>
</div>
{/foreach}
</div>
</div>
</div>
{/if}

View File

@ -0,0 +1,112 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
<div class="product-add-to-cart js-product-add-to-cart">
{if !$configuration.is_catalog}
{block name='product_quantity'}
<div class="product-quantity row mb-1 mx-n1 mt-n2 align-items-center">
<div class="qty col-12 col-sm-auto mx-auto mt-2 px-1">
<input
type="number"
name="qty"
id="quantity_wanted"
inputmode="numeric"
pattern="[0-9]*"
{if $product.quantity_wanted}
value="{$product.quantity_wanted}"
min="{$product.minimal_quantity}"
{else}
value="1"
min="1"
{/if}
class="input-group input-touchspin"
aria-label="{l s='Quantity' d='Shop.Theme.Actions'}"
>
</div>
<div class="add col mt-2 px-1">
<button
class="btn btn-primary add-to-cart btn-block"
data-button-action="add-to-cart"
type="submit"
{if !$product.add_to_cart_url}
disabled
{/if}
>
{l s='Add to cart' d='Shop.Theme.Actions'}
</button>
</div>
<div class="col-auto mt-2 px-1">
<div class="js-product-actions-buttons">
<div class="row mx-n1 mt-n2 align-items-center">
{hook h='displayProductActions' product=$product}
</div>
</div>
</div>
</div>
{/block}
{block name='product_availability'}
<span id="product-availability" class="js-product-availability">
{if $product.show_availability && $product.availability_message}
<span
{if $product.availability == 'available'}
class="badge badge-success py-1 mb-1"
{elseif $product.availability == 'last_remaining_items'}
class="badge badge-warning py-1 mb-1"
{else}
class="badge badge-danger py-1 mb-1"
{/if}
>
{if $product.availability == 'available'}
<i class="material-icons rtl-no-flip font-reset align-bottom">&#xE5CA;</i>
{elseif $product.availability == 'last_remaining_items'}
<i class="material-icons font-reset align-bottom">&#xE002;</i>
{else}
<i class="material-icons font-reset align-bottom">&#xE14B;</i>
{/if}
{$product.availability_message}
</span>
{/if}
</span>
{/block}
{block name='product_minimal_quantity'}
<div class="product-minimal-quantity js-product-minimal-quantity">
{if $product.minimal_quantity > 1}
<small>
{l
s='The minimum purchase order quantity for the product is %quantity%.'
d='Shop.Theme.Checkout'
sprintf=['%quantity%' => $product.minimal_quantity]
}
</small>
{/if}
</div>
{/block}
{/if}
</div>

View File

@ -0,0 +1,27 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
<div class="product-additional-info js-product-additional-info">
{hook h='displayProductAdditionalInfo' product=$product}
</div>

View File

@ -0,0 +1,183 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{if Tools::getValue('quickview') || Tools::getValue('action') == 'quickview'}
<div class="js-product-images">
<div class="card">
<div class="card-body">
{images_block webpEnabled=$webpEnabled}
{if $product.default_image}
<img
class="rounded img-fluid"
{generateImagesSources image=$product.default_image size='large_default' lazyload=false}
width="{$product.default_image.bySize.large_default.width}"
height="{$product.default_image.bySize.large_default.height}"
{if !empty($product.default_image.legend)}
alt="{$product.default_image.legend}"
title="{$product.default_image.legend}"
{else}
alt="{$product.name}"
{/if}
>
{else}
<img src="{$urls.no_picture_image.bySize.large_default.url}" class="rounded img-fluid">
{/if}
{/images_block}
</div>
</div>
</div>
{else}
<div class="js-product-images">
{block name='product_cover'}
{if $product.default_image}
<div class="product-main-images">
{if $product.images|count > 1}
{$index = 0}
{images_block webpEnabled=$webpEnabled}
<div class="js-product-main-images swiper swiper-custom" data-index="{$index}">
<div class="product-main-images__list swiper-wrapper">
<div class="swiper-slide">
<img
class="rounded img-fluid"
{generateImagesSources image=$product.default_image size='large_default' lazyload=false}
width="{$product.default_image.bySize.large_default.width}"
height="{$product.default_image.bySize.large_default.height}"
{if !empty($product.default_image.legend)}
alt="{$product.default_image.legend}"
title="{$product.default_image.legend}"
{else}
alt="{$product.name}"
{/if}
>
</div>
{if $product.images|count > 1}
{foreach from=$product.images item=image}
{if $image.id_image === $product.default_image.id_image}
{continue}
{/if}
{$index = $index + 1}
<div class="swiper-slide" data-index="{$index}">
<img
class="rounded img-fluid lazyload"
{generateImagesSources image=$image size='large_default' lazyload=true}
width="{$image.bySize.large_default.width}"
height="{$image.bySize.large_default.height}"
{if !empty($product.default_image.legend)}
alt="{$image.legend}" title="{$image.legend}"
{else}
alt="{$product.name}"
{/if}
>
</div>
{/foreach}
{/if}
</div>
<div class="swiper-button-prev swiper-button-custom">
<span class="sr-only">{l s='Previous' d='Shop.Theme.Actions'}</span>
<span class="material-icons">keyboard_arrow_left</span>
</div>
<div class="swiper-button-next swiper-button-custom">
<span class="sr-only">{l s='Next' d='Shop.Theme.Actions'}</span>
<span class="material-icons">keyboard_arrow_right</span>
</div>
</div>
{/images_block}
{else}
{images_block webpEnabled=$webpEnabled}
<img
class="rounded img-fluid"
{generateImagesSources image=$product.default_image size='large_default' lazyload=false}
width="{$product.default_image.bySize.large_default.width}"
height="{$product.default_image.bySize.large_default.height}"
{if !empty($product.default_image.legend)}
alt="{$product.default_image.legend}"
title="{$product.default_image.legend}"
{else}
alt="{$product.name}"
{/if}>
{/images_block}
{/if}
<a class="product-main-images__modal-trigger-layer btn btn-light shadow rounded-circle hidden-sm-down" data-toggle="modal" data-target="#product-modal">
<span class="material-icons font-reset line-height-reset">zoom_in</span>
</a>
</div>
{else}
<img src="{$urls.no_picture_image.bySize.large_default.url}" class="rounded img-fluid">
{/if}
{/block}
{block name='product_images'}
{if $product.images|count > 1}
<div class="js-product-thumbs product-thumbs swiper mt-2 swiper-custom">
{images_block webpEnabled=$webpEnabled}
<div class="product-thumbs__list swiper-wrapper">
<div class="product-thumbs__elem swiper-slide">
<img
class="rounded img-fluid lazyload"
{generateImagesSources image=$product.default_image size='home_default' lazyload=true}
width="{$product.default_image.bySize.home_default.width}"
height="{$product.default_image.bySize.home_default.height}"
{if !empty($product.default_image.legend)}
alt="{$product.default_image.legend}"
title="{$product.default_image.legend}"
{else}
alt="{$product.name}"
{/if}
>
</div>
{if $product.images|count > 1}
{foreach from=$product.images item=image}
{if $image.id_image === $product.default_image.id_image}
{continue}
{/if}
<div class="product-thumbs__elem swiper-slide">
<img
class="rounded img-fluid lazyload"
{generateImagesSources image=$image size='home_default' lazyload=true}
width="{$image.bySize.home_default.width}"
height="{$image.bySize.home_default.height}"
{if !empty($product.default_image.legend)}
alt="{$image.legend}" title="{$image.legend}"
{else}
alt="{$product.name}"
{/if}
>
</div>
{/foreach}
{/if}
</div>
{/images_block}
</div>
{/if}
{/block}
</div>
{hook h='displayAfterProductThumbs' product=$product}
{/if}

View File

@ -0,0 +1,74 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
<section class="product-customization">
{if !$configuration.is_catalog}
<div class="card">
<p class="h4 card-title mb-0">{l s='Product customization' d='Shop.Theme.Catalog'}</p>
<div class="card-body">
<p>
{l s='Don\'t forget to save your customization to be able to add to cart' d='Shop.Forms.Help'}
</p>
{block name='product_customization_form'}
<form method="post" action="{$product.url}" enctype="multipart/form-data">
<ul class="clearfix">
{foreach from=$customizations.fields item="field"}
<li class="product-customization-item">
<label class="customization-label">{$field.label}</label>
{if $field.type == 'text'}
<textarea placeholder="{l s='Your message here' d='Shop.Forms.Help'}" class="product-message" maxlength="250" {if $field.required} required {/if} name="{$field.input_name}"></textarea>
<small class="float-right">{l s='250 char. max' d='Shop.Forms.Help'}</small>
{if $field.text !== ''}
<h6 class="customization-message">{l s='Your customization:' d='Shop.Theme.Catalog'}
<label>{$field.text}</label>
</h6>
{/if}
{elseif $field.type == 'image'}
{if $field.is_customized}
<br>
<img src="{$field.image.small.url}" loading="lazy">
<a class="remove-image" href="{$field.remove_image_url}" rel="nofollow">{l s='Remove Image' d='Shop.Theme.Actions'}</a>
{/if}
<span class="custom-file">
<span class="js-file-name">{l s='No selected file' d='Shop.Forms.Help'}</span>
<input class="file-input js-file-input" {if $field.required} required {/if} type="file" name="{$field.input_name}">
<button class="btn btn-primary">{l s='Choose file' d='Shop.Theme.Actions'}</button>
</span>
{assign var=authExtensions value=' .'|implode:constant('ImageManager::EXTENSIONS_SUPPORTED')}
<small class="float-xs-right">.{$authExtensions}</small>
{/if}
</li>
{/foreach}
</ul>
<div class="clearfix">
<button class="btn btn-primary float-right" type="submit" name="submitCustomizedData">{l s='Save Customization' d='Shop.Theme.Actions'}</button>
</div>
</form>
{/block}
</div>
</div>
{/if}
</section>

View File

@ -0,0 +1,93 @@
<div class="js-product-details tab-pane fade"
id="product-details"
data-product="{$product.embedded_attributes|json_encode}"
role="tabpanel"
>
{block name='product_reference'}
{if isset($product_manufacturer->id)}
<div class="product-manufacturer">
{if isset($manufacturer_image_url)}
{images_block webpEnabled=$webpEnabled}
<a href="{$product_brand_url}">
<img src="{$manufacturer_image_url}" class="img img-thumbnail manufacturer-logo" alt="{$product_manufacturer->name}" loading="lazy">
</a>
{/images_block}
{else}
<label class="label">{l s='Brand' d='Shop.Theme.Catalog'}</label>
<span>
<a href="{$product_brand_url}">{$product_manufacturer->name}</a>
</span>
{/if}
</div>
{/if}
{if isset($product.reference_to_display) && $product.reference_to_display neq ''}
<div class="product-reference">
<label class="label">{l s='Reference' d='Shop.Theme.Catalog'} </label>
<span>{$product.reference_to_display}</span>
</div>
{/if}
{/block}
{block name='product_quantities'}
{if $product.show_quantities}
<div class="product-quantities">
<label class="label">{l s='In stock' d='Shop.Theme.Catalog'}</label>
<span data-stock="{$product.quantity}" data-allow-oosp="{$product.allow_oosp}">{$product.quantity} {$product.quantity_label}</span>
</div>
{/if}
{/block}
{block name='product_availability_date'}
{if $product.availability_date}
<div class="product-availability-date">
<label>{l s='Availability date:' d='Shop.Theme.Catalog'} </label>
<span>{$product.availability_date}</span>
</div>
{/if}
{/block}
{block name='product_out_of_stock'}
<div class="product-out-of-stock">
{hook h='actionProductOutOfStock' product=$product}
</div>
{/block}
{block name='product_features'}
{if $product.grouped_features}
<section class="product-features my-3">
<p class="h6">{l s='Data sheet' d='Shop.Theme.Catalog'}</p>
<dl class="row no-gutters mb-0">
{foreach from=$product.grouped_features item=feature}
<dt class="col-4 pr-3 {if !$feature@last}pb-2 mb-2 border-bottom{/if}">{$feature.name}</dt>
<dd class="col-8 {if !$feature@last}pb-2 mb-2 border-bottom{/if}">{$feature.value|escape:'htmlall'|nl2br nofilter}</dd>
{/foreach}
</dl>
</section>
{/if}
{/block}
{* if product have specific references, a table will be added to product details section *}
{block name='product_specific_references'}
{if !empty($product.specific_references)}
<section class="product-features my-3">
<p class="h6">{l s='Specific References' d='Shop.Theme.Catalog'}</p>
<dl class="row">
{foreach from=$product.specific_references item=reference key=key}
<dt class="col-4 pr-3 {if !$reference@last}pb-2 mb-2 border-bottom{/if}">{$key}</dt>
<dd class="col-8 {if !$reference@last}pb-2 mb-2 border-bottom{/if}">{$reference}</dd>
{/foreach}
</dl>
</section>
{/if}
{/block}
{block name='product_condition'}
{if $product.condition}
<div class="product-condition">
<label class="label">{l s='Condition' d='Shop.Theme.Catalog'} </label>
<link href="{$product.condition.schema_url}"/>
<span>{$product.condition.label}</span>
</div>
{/if}
{/block}
</div>

View File

@ -0,0 +1,49 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
<section class="product-discounts js-product-discounts">
{if $product.quantity_discounts}
<p class="h6 mb-2">{l s='Volume discounts' d='Shop.Theme.Catalog'}</p>
{block name='product_discount_table'}
<table class="table mb-4">
<thead>
<tr>
<th>{l s='Quantity' d='Shop.Theme.Catalog'}</th>
<th>{$configuration.quantity_discount.label}</th>
<th>{l s='You Save' d='Shop.Theme.Catalog'}</th>
</tr>
</thead>
<tbody>
{foreach from=$product.quantity_discounts item='quantity_discount' name='quantity_discounts'}
<tr data-discount-type="{$quantity_discount.reduction_type}" data-discount="{$quantity_discount.real_value}" data-discount-quantity="{$quantity_discount.quantity}">
<td><strong>{$quantity_discount.quantity}</strong></td>
<td><span class="price">{$quantity_discount.discount}<span></td>
<td><span class="price">{$quantity_discount.save}<span></td>
</tr>
{/foreach}
</tbody>
</table>
{/block}
{/if}
</section>

View File

@ -0,0 +1,31 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{block name='product_flags'}
<ul class="product-flags d-flex flex-column position-absolute w-100 pe-none">
{foreach from=$product.flags item=flag}
<li class="product-flags__flag rounded product-flags__flag--{$flag.type}">{$flag.label}</li>
{/foreach}
</ul>
{/block}

View File

@ -0,0 +1,105 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
<div class="modal fade js-product-images-modal" id="product-modal">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-body">
<div class="js-modal-gallery modal-gallery swiper swiper-custom">
{if $product.default_image}
{images_block webpEnabled=$webpEnabled}
<div class="modal-gallery__list swiper-wrapper">
<div class="swiper-slide modal-gallery__elem">
<img
class="rounded img-fluid lazyload"
{generateImagesSources image=$product.default_image size='large_default' lazyload=false}
width="{$product.default_image.bySize.large_default.width}"
height="{$product.default_image.bySize.large_default.height}"
{if !empty($product.default_image.legend)}
alt="{$product.default_image.legend}"
title="{$product.default_image.legend}"
{else}
alt="{$product.name}"
{/if}
>
</div>
{if $product.images|count > 1}
{foreach from=$product.images item=image}
{if $image.id_image === $product.default_image.id_image}
{continue}
{/if}
<div class="swiper-slide modal-gallery__elem">
<img
class="rounded img-fluid lazyload"
{generateImagesSources image=$image size='large_default' lazyload=true}
width="{$image.bySize.large_default.width}"
height="{$image.bySize.large_default.height}"
{if !empty($product.default_image.legend)}
alt="{$image.legend}" title="{$image.legend}"
{else}
alt="{$product.name}"
{/if}
>
</div>
{/foreach}
{/if}
</div>
{/images_block}
{else}
{images_block webpEnabled=$webpEnabled}
<img
class="rounded img-fluid"
{generateImagesSources image=$product.default_image size='large_default' lazyload=false}
width="{$product.default_image.bySize.large_default.width}"
height="{$product.default_image.bySize.large_default.height}"
{if !empty($product.default_image.legend)}
alt="{$product.default_image.legend}"
title="{$product.default_image.legend}"
{else}
alt="{$product.name}"
{/if}>
{/images_block}
{/if}
{if $product.images|count > 1}
<div class="swiper-button-prev swiper-button-custom">
<span class="sr-only">{l s='Previous' d='Shop.Theme.Actions'}</span>
<span class="material-icons">keyboard_arrow_left</span>
</div>
<div class="swiper-button-next swiper-button-custom">
<span class="sr-only">{l s='Next' d='Shop.Theme.Actions'}</span>
<span class="material-icons">keyboard_arrow_right</span>
</div>
{/if}
</div>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->

View File

@ -0,0 +1,114 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{if $product.show_price}
<div class="product-prices js-product-prices mb-3">
{block name='product_price'}
<div class="product-price">
{if $product.has_discount}
{if $product.discount_type === 'percentage'}
<span class="badge badge-danger">{l s='Save %percentage%' d='Shop.Theme.Catalog' sprintf=['%percentage%' => $product.discount_percentage_absolute]}</span>
{else}
<span class="badge badge-danger">
{l s='Save %amount%' d='Shop.Theme.Catalog' sprintf=['%amount%' => $product.discount_to_display]}
</span>
{/if}
{/if}
<div>
<span class="price price--lg">
{capture name='custom_price'}{hook h='displayProductPriceBlock' product=$product type='custom_price' hook_origin='product_sheet'}{/capture}
{if '' !== $smarty.capture.custom_price}
{$smarty.capture.custom_price nofilter}
{else}
{$product.price}
{/if}
</span>
{block name='product_discount'}
{if $product.has_discount}
<span class="ml-2 price price--regular">{$product.regular_price}</span>
{/if}
{/block}
{hook h='displayProductPriceBlock' product=$product type="old_price"}
</div>
{block name='product_unit_price'}
{if $displayUnitPrice}
<p class="product-unit-price small">{$product.unit_price_full}</p>
{/if}
{/block}
</div>
{/block}
{block name='product_without_taxes'}
{if $priceDisplay == 2}
<p class="product-without-taxes">{l s='%price% tax excl.' d='Shop.Theme.Catalog' sprintf=['%price%' => $product.price_tax_exc]}</p>
{/if}
{/block}
{block name='product_pack_price'}
{if $displayPackPrice}
<p class="product-pack-price"><span>{l s='Instead of %price%' d='Shop.Theme.Catalog' sprintf=['%price%' => $noPackPrice]}</span></p>
{/if}
{/block}
{block name='product_ecotax'}
{if !$product.is_virtual && $product.ecotax.amount > 0}
<p class="price-ecotax">{l s='Including %amount% for ecotax' d='Shop.Theme.Catalog' sprintf=['%amount%' => $product.ecotax_tax_inc]}
{if $product.has_discount}
{l s='(not impacted by the discount)' d='Shop.Theme.Catalog'}
{/if}
</p>
{/if}
{/block}
{hook h='displayProductPriceBlock' product=$product type="weight" hook_origin='product_sheet'}
<div class="tax-shipping-delivery-label">
{if !$configuration.taxes_enabled}
{l s='No tax' d='Shop.Theme.Catalog'}
{elseif $configuration.display_taxes_label}
{$product.labels.tax_long}
{/if}
{hook h='displayProductPriceBlock' product=$product type="price"}
{hook h='displayProductPriceBlock' product=$product type="after_price"}
{if $product.is_virtual == 0}
{if $product.additional_delivery_times == 1}
{if $product.delivery_information}
<span class="delivery-information">{$product.delivery_information}</span>
{/if}
{elseif $product.additional_delivery_times == 2}
{if $product.quantity >= $product.quantity_wanted}
<span class="delivery-information">{$product.delivery_in_stock}</span>
{* Out of stock message should not be displayed if customer can't order the product. *}
{elseif $product.add_to_cart_url}
<span class="delivery-information">{$product.delivery_out_stock}</span>
{/if}
{/if}
{/if}
</div>
</div>
{/if}

View File

@ -0,0 +1,89 @@
{block name='product_tabs'}
<div class="card product-tabs">
<div class="card-header">
<ul class="nav nav-tabs card-header-tabs" role="tablist">
{if $product.description}
<li class="nav-item">
<a
class="nav-link"
data-toggle="tab"
href="#description"
role="tab"
aria-controls="description"
>{l s='Description' d='Shop.Theme.Catalog'}</a>
</li>
{/if}
<li class="nav-item">
<a
class="nav-link"
data-toggle="tab"
href="#product-details"
role="tab"
aria-controls="product-details"
>{l s='Product Details' d='Shop.Theme.Catalog'}</a>
</li>
{if $product.attachments}
<li class="nav-item">
<a
class="nav-link"
data-toggle="tab"
href="#attachments"
role="tab"
aria-controls="attachments">{l s='Attachments' d='Shop.Theme.Catalog'}</a>
</li>
{/if}
{foreach from=$product.extraContent item=extra key=extraKey}
<li class="nav-item">
<a
class="nav-link"
data-toggle="tab"
href="#extra-{$extraKey}"
role="tab"
aria-controls="extra-{$extraKey}">{$extra.title}</a>
</li>
{/foreach}
</ul>
</div>
<div class="card-body">
<div class="tab-content" id="tab-content">
<div class="tab-pane fade in" id="description" role="tabpanel">
{block name='product_description'}
{cms_images_block webpEnabled=$webpEnabled}
<div class="product-description cms-content">{$product.description nofilter}</div>
{/cms_images_block}
{/block}
</div>
{block name='product_details'}
{include file='catalog/_partials/product-details.tpl'}
{/block}
{block name='product_attachments'}
{if $product.attachments}
<div class="tab-pane fade in" id="attachments" role="tabpanel">
<section class="product-attachments">
<p class="h5 text-uppercase">{l s='Download' d='Shop.Theme.Actions'}</p>
{foreach from=$product.attachments item=attachment}
<div class="attachment">
<h4><a href="{url entity='attachment' params=['id_attachment' => $attachment.id_attachment]}">{$attachment.name}</a></h4>
<p>{$attachment.description}</p>
<a href="{url entity='attachment' params=['id_attachment' => $attachment.id_attachment]}">
{l s='Download' d='Shop.Theme.Actions'} ({$attachment.file_size_formatted})
</a>
</div>
{/foreach}
</section>
</div>
{/if}
{/block}
{foreach from=$product.extraContent item=extra key=extraKey}
<div class="tab-pane fade in {$extra.attr.class} cms-content" id="extra-{$extraKey}" role="tabpanel" {foreach $extra.attr as $key => $val} {$key}="{$val}"{/foreach}>
{$extra.content nofilter}
</div>
{/foreach}
</div>
</div>
</div>
{/block}

View File

@ -0,0 +1,87 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
<div class="product-variants js-product-variants mb-3">
{foreach from=$groups key=id_attribute_group item=group}
{if !empty($group.attributes)}
<div class="product-variants-item mb-3">
<p class="control-label h6 mb-2">{$group.name}</p>
{if $group.group_type == 'select'}
<select
class="custom-select"
id="group_{$id_attribute_group}"
data-product-attribute="{$id_attribute_group}"
name="group[{$id_attribute_group}]">
{foreach from=$group.attributes key=id_attribute item=group_attribute}
<option value="{$id_attribute}" title="{$group_attribute.name}"{if $group_attribute.selected} selected="selected"{/if}>{$group_attribute.name}</option>
{/foreach}
</select>
{elseif $group.group_type == 'color'}
<ul class="row mx-n1" id="group_{$id_attribute_group}">
{foreach from=$group.attributes key=id_attribute item=group_attribute}
<li class="col flex-grow-0 px-1 pb-2">
<div class="custom-control custom-radio-color">
<input class="custom-control-input" type="radio" data-product-attribute="{$id_attribute_group}" id="{$id_attribute_group}_{$id_attribute}" name="group[{$id_attribute_group}]" value="{$id_attribute}" title="{$group_attribute.name}"{if $group_attribute.selected} checked="checked"{/if}>
<label class="custom-control-label {if $group_attribute.html_color_code}custom-control-label-{if Tools::getBrightness($group_attribute.html_color_code) > 128}dark{else}bright{/if}{/if}" for="{$id_attribute_group}_{$id_attribute}" aria-label="{$group_attribute.name}">
<span
{if $group_attribute.texture}
class="custom-control-input-color" style="background-image: url({$group_attribute.texture})"
{elseif $group_attribute.html_color_code}
class="custom-control-input-color" style="background-color: {$group_attribute.html_color_code}"
{/if}
>
</span>
<span class="sr-only">
{$group_attribute.name}
</span>
</label>
</div>
</li>
{/foreach}
</ul>
{elseif $group.group_type == 'radio'}
<ul id="group_{$id_attribute_group}" class="row mx-n1">
{foreach from=$group.attributes key=id_attribute item=group_attribute}
<li class="input-container attribute-radio col-auto px-1 mb-2">
<label class="attribute-radio__label">
<input
class="input-radio attribute-radio__input"
type="radio"
data-product-attribute="{$id_attribute_group}"
name="group[{$id_attribute_group}]"
value="{$id_attribute}"
title="{$group_attribute.name}"
{if $group_attribute.selected}checked="checked"{/if}>
<span class="attribute-radio__text">{$group_attribute.name}</span>
</label>
</li>
{/foreach}
</ul>
{/if}
</div>
{/if}
{/foreach}
</div>

View File

@ -0,0 +1,34 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
<div class="products-list row {if !empty($cssClass)}{$cssClass}{/if}">
{foreach from=$products item="product" key="position"}
{if $listingDisplayType == 'grid'}
{include file="catalog/_partials/miniatures/product.tpl" product=$product type='listing' position=$position}
{elseif $listingDisplayType == 'list'}
{include file="catalog/_partials/miniatures/product-list.tpl" product=$product type='listing' position=$position}
{/if}
{/foreach}
</div>

View File

@ -0,0 +1,6 @@
{*
* Classic theme doesn't use this subtemplate, feel free to do whatever you need here.
* This template is generated at each ajax calls.
* See ProductListingFrontController::getAjaxProductSearchVariables()
*}
<div id="js-product-list-bottom"></div>

View File

@ -0,0 +1,63 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
<div id="js-product-list-top" class="row products-selection align-items-center mb-4 mt-n2">
<div class="col-auto mt-2">
{block name='sort_by'}
{include file='catalog/_partials/sort-orders.tpl' sort_orders=$listing.sort_orders}
{/block}
</div>
<div class="col-auto mt-2">
{block name='sort_by'}
{include file='catalog/_partials/per-page.tpl'}
{/block}
</div>
<div class="col-sm-auto col-12 mt-2 d-md-none ml-auto">
{if !empty($listing.rendered_facets)}
<button data-target="#mobile_filters" data-toggle="modal" class="btn btn-secondary d-sm-inline-block d-none">
{l s='Filter' d='Shop.Theme.Actions'}
</button>
<button data-target="#mobile_filters" data-toggle="modal" class="btn btn-secondary btn-block d-sm-none">
{l s='Filter' d='Shop.Theme.Actions'}
</button>
{/if}
</div>
<div class="col-auto d-none d-lg-block ml-auto mt-2">
<ul class="display-toggle d-flex align-items-center mx-n1 m-0">
<li class="display-toggle__elem px-1">
<a href="#" data-toggle-listing data-display-type="grid" class="display-toggle__link d-inline-block {if $listingDisplayType == 'grid'}active{/if}">
<span class="material-icons display-toggle__icon">view_module</span>
</a>
</li>
<li class="display-toggle__elem px-1">
<a href="#" data-toggle-listing data-display-type="list" class="display-toggle__link d-inline-block {if $listingDisplayType == 'list'}active{/if}">
<span class="material-icons display-toggle__icon">view_list</span>
</a>
</li>
</ul>
</div>
</div>

View File

@ -0,0 +1,38 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
<div id="js-product-list">
{include file="catalog/_partials/productlist.tpl" products=$listing.products}
{block name='pagination'}
{include file='_partials/pagination.tpl' pagination=$listing.pagination}
{/block}
<div class="hidden-md-up text-xs-right up">
<a href="#header" class="btn btn-secondary">
{l s='Back to top' d='Shop.Theme.Actions'}
</a>
</div>
</div>

View File

@ -0,0 +1,74 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
<div id="quickview-modal-{$product.id}-{$product.id_product_attribute}" class="modal fade quickview in" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-xl modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h1 class="h3 modal-title">{$product.name}</h1>
<button type="button" class="close" data-dismiss="modal" aria-label="{l s='Close' d='Shop.Theme.Global'}">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="row">
<div class="col-lg-5 col-md-6 d-none d-md-block">
{block name='product_cover_thumbnails'}
{include file='catalog/_partials/product-cover-thumbnails.tpl'}
{/block}
</div>
<div class="col-lg-7 col-md-6">
{block name='product_prices'}
{include file='catalog/_partials/product-prices.tpl'}
{/block}
{block name='product_description_short'}
<div id="product-description-short">{$product.description_short nofilter}</div>
{/block}
{block name='product_buy'}
<div class="product-actions js-product-actions">
<form action="{$urls.pages.cart}" method="post" id="add-to-cart-or-refresh">
<input type="hidden" name="token" value="{$static_token}">
<input type="hidden" name="id_product" value="{$product.id}" id="product_page_product_id">
<input type="hidden" name="id_customization" value="{$product.id_customization}" id="product_customization_id" class="js-product-customization-id">
{block name='product_variants'}
{include file='catalog/_partials/product-variants.tpl'}
{/block}
{block name='product_add_to_cart'}
{include file='catalog/_partials/product-add-to-cart.tpl'}
{/block}
{* Input to refresh product HTML removed, block kept for compatibility with themes *}
{block name='product_refresh'}{/block}
</form>
</div>
{/block}
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,35 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
<select data-action="search-select" class="custom-select">
{foreach from=$listing.sort_orders item=sort_order}
<option
data-href="{$sort_order.url}"
{if $sort_order.current}selected{/if}
>
{$sort_order.label}
</option>
{/foreach}
</select>

View File

@ -0,0 +1,51 @@
{**
* 2007-2020 PrestaShop SA and Contributors
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (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:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2020 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
* International Registered Trademark & Property of PrestaShop SA
*}
{if !empty($subcategories)}
{if (isset($display_subcategories) && $display_subcategories eq 1) || !isset($display_subcategories) }
<div id="subcategories" class="my-4">
<p class="subcategory-heading h3">{l s='Subcategories' d='Shop.Theme.Category'}</p>
<ul class="row">
{foreach from=$subcategories item=subcategory}
<div class="col-xl-3 col-lg-4 col-6 mb-3">
<div class="card h-100">
<div class="card-body">
<a class="stretched-link d-block text-center mb-3 pb-3 border-bottom" href="{$link->getCategoryLink($subcategory.id_category, $subcategory.link_rewrite)|escape:'html':'UTF-8'}" title="{$subcategory.name|escape:'html':'UTF-8'}" class="img">
<img
class="img-fluid"
height="{$subcategory.image.bySize.category_default.height}"
width="{$subcategory.image.bySize.category_default.width}"
src="{$subcategory.image.bySize.category_default.url}"
alt="{$subcategory.name|escape:'html':'UTF-8'}" loading="lazy">
</a>
<h5 class="card-title mb-0">{$subcategory.name|truncate:45:'...'|escape:'html':'UTF-8'}</h5>
</div>
</div>
</div>
{/foreach}
</ul>
</div>
{/if}
{/if}

View File

@ -0,0 +1,36 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
<div class="variant-links">
{foreach from=$variants item=variant}
<a href="{$variant.url}"
class="{$variant.type}"
title="{$variant.name}"
aria-label="{$variant.name}"
{if $variant.texture} style="background-image: url({$variant.texture})"
{elseif $variant.html_color_code} style="background-color: {$variant.html_color_code}" {/if}
></a>
{/foreach}
<span class="js-count count"></span>
</div>

View File

@ -0,0 +1,44 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{extends file=$layout}
{block name='content'}
<section id="main">
{block name='brand_header'}
<h1>{l s='Brands' d='Shop.Theme.Catalog'}</h1>
{/block}
{block name='brand_miniature'}
<ul class="row">
{foreach from=$brands item=brand}
{include file='catalog/_partials/miniatures/brand.tpl' brand=$brand}
{/foreach}
</ul>
{/block}
</section>
{/block}

View File

@ -0,0 +1,5 @@
{*
* This file allows you to customize your best-sales page.
* You can safely remove it if you want it to appear exactly like all other product listing pages
*}
{extends file='catalog/listing/product-list.tpl'}

View File

@ -0,0 +1,33 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{extends file='catalog/listing/product-list.tpl'}
{block name='product_list_header'}
{include file='catalog/_partials/category-header.tpl' listing=$listing category=$category}
{/block}
{block name='product_list_footer'}
{include file='catalog/_partials/category-footer.tpl' listing=$listing category=$category}
{/block}

View File

@ -0,0 +1,31 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{extends file='catalog/listing/product-list.tpl'}
{block name='product_list_header'}
<h1>{l s='List of products by brand %brand_name%' sprintf=['%brand_name%' => $manufacturer.name] d='Shop.Theme.Catalog'}</h1>
<div id="manufacturer-short_description" class="cms-content">{$manufacturer.short_description nofilter}</div>
<div id="manufacturer-description" class="cms-content">{$manufacturer.description nofilter}</div>
{/block}

View File

@ -0,0 +1,5 @@
{*
* This file allows you to customize your new-product page.
* You can safely remove it if you want it to appear exactly like all other product listing pages
*}
{extends file='catalog/listing/product-list.tpl'}

View File

@ -0,0 +1,5 @@
{*
* This file allows you to customize your price-drop page.
* You can safely remove it if you want it to appear exactly like all other product listing pages
*}
{extends file='catalog/listing/product-list.tpl'}

View File

@ -0,0 +1,96 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{extends file=$layout}
{block name='hook_header' append}
{hook h='displayListingStructuredData' listing=$listing}
{/block}
{block name='content'}
<section id="main">
{block name='product_list_header'}
<h1 id="js-product-list-header" class="h2">{$listing.label}</h1>
{/block}
{block name='subcategory_list'}
{*
SUBCATEGORIES DISABLED
{if isset($subcategories) && $subcategories|@count > 0}
{include file='catalog/_partials/subcategories.tpl' subcategories=$subcategories}
{/if} *}
{/block}
{hook h="displayHeaderCategory"}
<section id="products">
{if $listing.products|count}
<div>
{block name='product_list_top'}
{include file='catalog/_partials/products-top.tpl' listing=$listing}
{/block}
</div>
{block name='product_list_active_filters'}
<div id="" class="hidden-sm-down">
{$listing.rendered_active_filters nofilter}
</div>
{/block}
<div>
{block name='product_list'}
{include file='catalog/_partials/products.tpl' listing=$listing}
{/block}
</div>
{block name='product_list_bottom'}
{include file='catalog/_partials/products-bottom.tpl' listing=$listing}
{/block}
{else}
<div id="js-product-list-top"></div>
<div id="js-product-list">
{capture assign="errorContent"}
<h4>{l s='No products available yet' d='Shop.Theme.Catalog'}</h4>
<p>{l s='Stay tuned! More products will be shown here as they are added.' d='Shop.Theme.Catalog'}</p>
{/capture}
{include file='errors/not-found.tpl' errorContent=$errorContent}
</div>
{block name='product_list_bottom'}
{include file='catalog/_partials/products-bottom.tpl' listing=$listing}
{/block}
{/if}
</section>
{block name='product_list_footer'}{/block}
{hook h="displayFooterCategory"}
</section>
{/block}

View File

@ -0,0 +1,10 @@
{*
* This file allows you to customize your search page.
* You can safely remove it if you want it to appear exactly like all other product listing pages
*}
{extends file='catalog/listing/product-list.tpl'}
{block name="error_content"}
<h4 id="product-search-no-matches">{l s='No matches were found for your search' d='Shop.Theme.Catalog'}</h4>
<p>{l s='Please try other keywords to describe what you are looking for.' d='Shop.Theme.Catalog'}</p>
{/block}

View File

@ -0,0 +1,30 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{extends file='catalog/listing/product-list.tpl'}
{block name='product_list_header'}
<h1>{l s='List of products by supplier %s' sprintf=[$supplier.name] d='Shop.Theme.Catalog'}</h1>
<div id="supplier-description">{$supplier.description nofilter}</div>
{/block}

View File

@ -0,0 +1,25 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{extends file='catalog/brands.tpl'}

View File

@ -0,0 +1,162 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{extends file=$layout}
{block name='head' append}
{if $product.show_price}
<meta property="product:pretax_price:amount" content="{$product.price_tax_exc}">
<meta property="product:pretax_price:currency" content="{$currency.iso_code}">
<meta property="product:price:amount" content="{$product.price_amount}">
<meta property="product:price:currency" content="{$currency.iso_code}">
{/if}
{if isset($product.weight) && ($product.weight != 0)}
<meta property="product:weight:value" content="{$product.weight}">
<meta property="product:weight:units" content="{$product.weight_unit}">
{/if}
{/block}
{block name='head' prepend}
{if $product.default_image}
<link rel="preload" href="{$product.default_image.bySize.large_default.url}" as="image">
{/if}
{/block}
{block name='content'}
<section id="main">
<div class="row product-container js-product-container">
<div class="col-md-5 mb-4">
{block name='page_content_container'}
{block name='page_content'}
<div class="position-relative">
{include file='catalog/_partials/product-flags.tpl'}
{block name='product_cover_thumbnails'}
{include file='catalog/_partials/product-cover-thumbnails.tpl'}
{/block}
</div>
{/block}
{/block}
</div>
<div class="col-md-7 mb-4">
{block name='page_header_container'}
{block name='page_header'}
<h1 class="h1">{block name='page_title'}{$product.name}{/block}</h1>
{/block}
{/block}
{block name='product_prices'}
{include file='catalog/_partials/product-prices.tpl'}
{/block}
<div class="product-information ">
{block name='product_description_short'}
<div id="product-description-short-{$product.id}" class="product-description cms-content">{$product.description_short nofilter}</div>
{/block}
{if $product.is_customizable && count($product.customizations.fields)}
{block name='product_customization'}
{include file="catalog/_partials/product-customization.tpl" customizations=$product.customizations}
{/block}
{/if}
<div class="product-actions js-product-actions">
{block name='product_buy'}
<form action="{$urls.pages.cart}" method="post" id="add-to-cart-or-refresh">
<input type="hidden" name="token" value="{$static_token}">
<input type="hidden" name="id_product" value="{$product.id}" id="product_page_product_id">
<input type="hidden" name="id_customization" value="{$product.id_customization}" id="product_customization_id" class="js-product-customization-id">
{block name='product_variants'}
{include file='catalog/_partials/product-variants.tpl'}
{/block}
{block name='product_pack'}
{if $packItems}
<section class="product-pack">
<p class="h4">{l s='This pack contains' d='Shop.Theme.Catalog'}</p>
<div class="card-group-vertical mb-4">
{foreach from=$packItems item="product_pack"}
{block name='product_miniature'}
{include file='catalog/_partials/miniatures/pack-product.tpl' product=$product_pack showPackProductsPrice=$product.show_price}
{/block}
{/foreach}
</div>
</section>
{/if}
{/block}
{block name='product_discounts'}
{include file='catalog/_partials/product-discounts.tpl'}
{/block}
{block name='product_add_to_cart'}
{include file='catalog/_partials/product-add-to-cart.tpl'}
{/block}
{block name='product_additional_info'}
{include file='catalog/_partials/product-additional-info.tpl'}
{/block}
{* Input to refresh product HTML removed, block kept for compatibility with themes *}
{block name='product_refresh'}{/block}
</form>
{/block}
</div>
{block name='hook_display_reassurance'}
{hook h='displayReassurance'}
{/block}
</div>
</div>
</div>
{include file="catalog/_partials/product-tabs.tpl"}
{block name='product_footer'}
{hook h='displayFooterProduct' product=$product category=$category}
{/block}
{block name='product_accessories'}
{if $accessories}
{include file='catalog/_partials/product-accessories.tpl' products=$accessories}
{/if}
{/block}
{block name='product_images_modal'}
{include file='catalog/_partials/product-images-modal.tpl'}
{/block}
{block name='page_footer_container'}
<footer class="page-footer">
{block name='page_footer'}
<!-- Footer content -->
{/block}
</footer>
{/block}
</section>
{/block}

View File

@ -0,0 +1,29 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{extends file='catalog/brands.tpl'}
{block name='brand_header'}
<h1>{l s='Suppliers' d='Shop.Theme.Catalog'}</h1>
{/block}

View File

@ -0,0 +1,48 @@
{extends file='customer/_partials/address-form.tpl'}
{block name='form_field'}
{if $field.name eq "alias" and $customer.is_guest}
{* we don't ask for alias here if customer is not registered *}
{else}
{$smarty.block.parent}
{/if}
{/block}
{block name="address_form_url"}
<form
method="POST"
action="{url entity='order' params=['id_address' => $id_address]}"
data-id-address="{$id_address}"
data-refresh-url="{url entity='order' params=['ajax' => 1, 'action' => 'addressForm']}"
>
{/block}
{block name='form_fields' append}
<input type="hidden" name="saveAddress" value="{$type}">
{if $type === "delivery"}
<div class="custom-control custom-checkbox">
<input name="use_same_address" type="checkbox" value="1" id="use_same_address"
class="custom-control-input" value="1" {if $use_same_address} checked {/if}>
<label class="custom-control-label" for="use_same_address">{l s='Use this address for invoice too' d='Shop.Theme.Checkout'}</label>
</div>
{/if}
{/block}
{block name='form_buttons'}
{if !$form_has_continue_button}
<div class="d-flex align-items-center justify-content-end">
<a class="js-cancel-address cancel-address btn btn-link mr-auto" href="{url entity='order' params=['cancelAddress' => {$type}]}">{l s='Cancel' d='Shop.Theme.Actions'}</a>
<button type="submit" class="btn btn-primary">{l s='Save' d='Shop.Theme.Actions'}</button>
</div>
{else}
<div class="d-flex align-items-center justify-content-end">
{if $customer.addresses|count > 0}
<a class="js-cancel-address cancel-address btn btn-link mr-auto" href="{url entity='order' params=['cancelAddress' => {$type}]}">{l s='Cancel' d='Shop.Theme.Actions'}</a>
{/if}
<button type="submit" class="continue btn btn-primary" name="confirm-addresses" value="1">
{l s='Continue' d='Shop.Theme.Actions'}
</button>
</div>
{/if}
{/block}

View File

@ -0,0 +1,63 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{block name='address_selector_blocks'}
{foreach $addresses as $address}
<article
class="js-address-item address-item col-12 col-md-6 mb-3 checkout-option-block address-selector-block {if $address.id == $selected} selected{/if}"
id="{$name|classname}-address-{$address.id}">
<input type="radio" name="{$name}" value="{$address.id}" id="r-{$name|classname}-address-{$address.id}"
class="custom-control-input" {if $address.id == $selected}checked{/if}>
<label for="r-{$name|classname}-address-{$address.id}" class="card mb-0 cursor-pointer h-100">
<div class="address__header card-header h5">
{$address.alias}
</div>
<div class="card-body address__body">
{$address.formatted nofilter}
</div>
{if $interactive}
<div class="address__footer card-footer small">
<a class="edit-address d-flex justify-content-center align-items-center" data-link-action="edit-address"
href="{url entity='order' params=['id_address' => $address.id, 'editAddress' => $type, 'token' => $token]}">
<i class="material-icons mr-1">&#xE254;</i>{l s='Edit' d='Shop.Theme.Actions'}
</a>
<a class="delete-address d-flex justify-content-center align-items-center" data-link-action="delete-address"
href="{url entity='order' params=['id_address' => $address.id, 'deleteAddress' => true, 'token' => $token]}">
<i class="material-icons mr-1">&#xE872;</i>{l s='Delete' d='Shop.Theme.Actions'}
</a>
</div>
{/if}
</label>
</article>
{/foreach}
{if $interactive}
<p>
<button class="ps-hidden-by-js form-control-submit center-block"
type="submit">{l s='Save' d='Shop.Theme.Actions'}</button>
</p>
{/if}
{/block}

View File

@ -0,0 +1,45 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{block name='cart_detailed_actions'}
<div class="checkout cart-detailed-actions js-cart-detailed-actions card-block">
{if $cart.minimalPurchaseRequired}
<div class="alert alert-warning" role="alert">
{$cart.minimalPurchaseRequired}
</div>
<div class="text-sm-center">
<button type="button" class="btn btn-primary disabled" disabled>{l s='Proceed to checkout' d='Shop.Theme.Actions'}</button>
</div>
{elseif empty($cart.products) }
<div class="text-sm-center">
<button type="button" class="btn btn-primary disabled" disabled>{l s='Proceed to checkout' d='Shop.Theme.Actions'}</button>
</div>
{else}
<div class="text-sm-center">
<a href="{$urls.pages.order}" class="btn btn-primary">{l s='Proceed to checkout' d='Shop.Theme.Actions'}</a>
{hook h='displayExpressCheckout'}
</div>
{/if}
</div>
{/block}

View File

@ -0,0 +1,167 @@
{**
* 2007-2017 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (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:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 <contact@prestashop.com>
* @copyright 2007-2017 PrestaShop SA
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
* International Registered Trademark & Property of PrestaShop SA
*}
<div class="product-line-grid">
<div class="product-line-grid__row">
<div class="product-line-grid__block product-line-grid__block--image">
{images_block webpEnabled=$webpEnabled}
<img
{generateImagesSources image=$product.default_image size='cart_default' lazyload=false}
alt="{$product.name|escape:'quotes'}"
class="img-fluid rounded"
width="{$product.default_image.bySize.cart_default.width}"
height="{$product.default_image.bySize.cart_default.height}">
{/images_block}
</div>
<div class="product-line-grid__block product-line-grid__block--prod">
<p class="h6 product-line-grid__title mb-2">
<a class="text-reset" href="{$product.url}" data-id_customization="{$product.id_customization|intval}">
{$product.name}
</a>
</p>
{if $product.attributes}
<ul class="mb-2">
{foreach from=$product.attributes key="attribute" item="value"}
<li class="text-muted small">
<span>{$attribute}:</span>
<span class="font-weight-bold">{$value}</span>
</li>
{/foreach}
</ul>
{/if}
<div class="product-line-info product-price{if $product.has_discount} has-discount{/if}">
<div class="current-price">
{if $product.has_discount}
<span class="price price--regular mr-1">{$product.regular_price}</span>
{/if}
<span
class="current-price-display price{if $product.has_discount} current-price-discount{/if}">{$product.price}</span>
{if $product.unit_price_full}
<div class="unit-price-cart">{$product.unit_price_full}</div>
{/if}
</div>
{hook h='displayProductPriceBlock' product=$product type="unit_price"}
</div>
{* end product-price *}
{if is_array($product.customizations) && $product.customizations|count}
{block name='cart_detailed_product_line_customization'}
<div class="mt-3">
{foreach from=$product.customizations item="customization"}
<a href="#" data-toggle="modal"
data-target="#product-customizations-modal-{$customization.id_customization}">{l s='Product customization' d='Shop.Theme.Catalog'}</a>
<div class="modal fade customization-modal js-customization-modal" id="product-customizations-modal-{$customization.id_customization}"
tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">{l s='Product customization' d='Shop.Theme.Catalog'}</h4>
<button type="button" class="close" data-dismiss="modal"
aria-label="{l s='Close' d='Shop.Theme.Global'}">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
{foreach from=$customization.fields item="field"}
<div class="product-customization-line row">
<div class="col-sm-3 col-4 label">
{$field.label}
</div>
<div class="col-sm-9 col-8 value">
{if $field.type == 'text'}
{if (int)$field.id_module}
{$field.text nofilter}
{else}
{$field.text}
{/if}
{elseif $field.type == 'image'}
<img src="{$field.image.small.url}">
{/if}
</div>
</div>
{/foreach}
</div>
</div>
</div>
</div>
{/foreach}
</div>
{/block}
{/if}
</div>
<div class="product-line-grid__block product-line-grid__block--qty">
{if !empty($product.is_gift)}
<span class="gift-quantity">{$product.quantity}</span>
{else}
<div>
<input
class="js-cart-line-product-quantity input-touchspin"
data-down-url="{$product.down_quantity_url}"
data-up-url="{$product.up_quantity_url}"
data-update-url="{$product.update_quantity_url}"
data-product-id="{$product.id_product}"
type="number"
inputmode="numeric"
pattern="[0-9]*"
value="{$product.quantity}"
name="product-quantity-spin"
min="{$product.minimal_quantity}"
aria-label="{l s='%productName% product quantity field' sprintf=['%productName%' => $product.name] d='Shop.Theme.Checkout'}"
/>
</div>
{/if}
</div>
<div class="product-line-grid__block product-line-grid__block--total">
<span class="product-price">
{if !empty($product.is_gift)}
<span class="gift">{l s='Gift' d='Shop.Theme.Checkout'}</span>
{else}
<span class="price">
{$product.total}
</span>
{/if}
</span>
</div>
<div class="product-line-grid__block product-line-grid__block--delete">
{if empty($product.is_gift)}
<a class="remove-from-cart text-danger" rel="nofollow" href="{$product.remove_from_cart_url}"
data-link-action="delete-from-cart" data-id-product="{$product.id_product|escape:'javascript'}"
data-id-product-attribute="{$product.id_product_attribute|escape:'javascript'}"
data-id-customization="{$product.id_customization|default|escape:'javascript'}">
<span class="material-icons font-reset">delete</span>
</a>
{/if}
{block name='hook_cart_extra_product_actions'}
{hook h='displayCartExtraProductActions' product=$product}
{/block}
</div>
</div>
</div>

View File

@ -0,0 +1,53 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{block name='cart_detailed_totals'}
<div class="cart-detailed-totals js-cart-detailed-totals">
{foreach from=$cart.subtotals item="subtotal"}
{if $subtotal && $subtotal.value|count_characters > 0 && $subtotal.type !== 'tax'}
<div class="cart-summary-line" id="cart-subtotal-{$subtotal.type}">
<span class="label">
{$subtotal.label}
</span>
<span class="value">
{if 'discount' == $subtotal.type}-&nbsp;{/if}{$subtotal.value}
{if $subtotal.type === 'shipping'}
<small class="value d-block">{hook h='displayCheckoutSubtotalDetails' subtotal=$subtotal}</small>
{/if}
</span>
</div>
{/if}
{/foreach}
{block name='cart_summary_totals'}
{include file='checkout/_partials/cart-summary-totals.tpl' cart=$cart}
{/block}
{block name='cart_voucher'}
{include file='checkout/_partials/cart-voucher.tpl'}
{/block}
</div>
{/block}

View File

@ -0,0 +1,41 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{block name='cart_detailed_product'}
<div class="cart-overview card-body js-cart position-relative" data-refresh-url="{url entity='cart' params=['ajax' => true, 'action' => 'refresh']}">
<div class="cart-loader"><div class="spinner-border text-primary" role="status"><span class="sr-only">{l s='Loading...' d='Shop.Theme.Global'}</span></div></div>
{if $cart.products}
<div class="cart-items">
{foreach from=$cart.products item=product}
{block name='cart_detailed_product_line'}
{include file='checkout/_partials/cart-detailed-product-line.tpl' product=$product}
{/block}
{if is_array($product.customizations) && $product.customizations|count >1}<hr>{/if}
{/foreach}
</div>
{else}
<span class="no-items">{l s='There are no more items in your cart' d='Shop.Theme.Checkout'}</span>
{/if}
</div>
{/block}

View File

@ -0,0 +1,30 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{block name='cart_summary_items_subtotal'}
<div class="card-block cart-summary-line cart-summary-items-subtotal clearfix" id="items-subtotal">
<span class="label">{$cart.summary_string}</span>
<span class="value">{$cart.subtotals.products.amount}</span>
</div>
{/block}

View File

@ -0,0 +1,64 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{block name='cart_summary_product_line'}
<div class="cart-products">
<div class="cart-products__thumb">
{images_block webpEnabled=$webpEnabled}
<img
{if $product.default_image}
{generateImagesSources image=$product.default_image size='cart_default' lazyload=false}
{else}
src="{$urls.no_picture_image.bySize.cart_default.url}"
{/if}
alt="{$product.name|escape:'quotes'}"
class="img-fluid rounded"
width="{$product.default_image.bySize.cart_default.width}"
height="{$product.default_image.bySize.cart_default.height}">
{/images_block}
</div>
<div class="cart-products__desc">
<p class="h6 mb-2 font-sm">
<span class="text-muted">{$product.quantity}x</span> {$product.name}
</p>
<ul class="mb-2">
<li class="text-muted small">
<span>{l s='Quantity' d='Shop.Theme.Catalog'}:</span>
<span class="font-weight-bold">{$product.quantity}</span>
</li>
{foreach from=$product.attributes key="attribute" item="value"}
<li class="text-muted small">
<span>{$attribute}:</span>
<span class="font-weight-bold">{$value}</span>
</li>
{/foreach}
</ul>
<span class="price price--sm">
{$product.price}
</span>
</div>
</div>
{/block}

View File

@ -0,0 +1,34 @@
{**
* 2007-2020 PrestaShop SA and Contributors
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (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:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2020 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
* International Registered Trademark & Property of PrestaShop SA
*}
<div class="cart-summary-products js-cart-summary-products">
{block name='cart_summary_product_list'}
<div id="cart-summary-product-list">
{foreach from=$cart.products item=product}
{include file='checkout/_partials/cart-summary-product-line.tpl' product=$product}
{/foreach}
</div>
{/block}
</div>

View File

@ -0,0 +1,41 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{foreach from=$cart.subtotals item="subtotal"}
{if $subtotal && $subtotal.value|count_characters > 0 && $subtotal.type !== 'tax'}
<div class="cart-summary-line cart-summary-subtotals" id="cart-subtotal-{$subtotal.type}">
<span class="label">
{$subtotal.label}
</span>
<span class="value">
{if 'discount' == $subtotal.type}-&nbsp;{/if}{$subtotal.value}
</span>
</div>
{/if}
{/foreach}

View File

@ -0,0 +1,28 @@
{**
* 2007-2020 PrestaShop SA and Contributors
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (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:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2020 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
* International Registered Trademark & Property of PrestaShop SA
*}
<div class="cart-summary-top">
{hook h='displayCheckoutSummaryTop'}
</div>

View File

@ -0,0 +1,52 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{block name='cart_summary_total'}
{if !$configuration.display_prices_tax_incl && $configuration.taxes_enabled}
<div class="cart-summary-line">
<span class="label">{$cart.totals.total.label}&nbsp;{$cart.labels.tax_short}</span>
<span class="value">{$cart.totals.total.value}</span>
</div>
<div class="cart-summary-line cart-total">
<span class="label">{$cart.totals.total_including_tax.label}</span>
<span class="value">{$cart.totals.total_including_tax.value}</span>
</div>
{else}
<div class="cart-summary-line cart-total">
<span class="label">{$cart.totals.total.label}&nbsp;{if $configuration.display_taxes_label && $configuration.taxes_enabled}{$cart.labels.tax_short}{/if}</span>
<span class="value">{$cart.totals.total.value}</span>
</div>
{/if}
{/block}
{block name='cart_summary_tax'}
{if $cart.subtotals.tax}
<div class="cart-summary-line">
<span class="label sub">{l s='%label%:' sprintf=['%label%' => $cart.subtotals.tax.label] d='Shop.Theme.Global'}</span>
<span class="value sub">{$cart.subtotals.tax.value}</span>
</div>
{/if}
{/block}

View File

@ -0,0 +1,55 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
<section id="js-checkout-summary" class="card js-cart" data-refresh-url="{$urls.pages.cart}?ajax=1&action=refresh">
<div class="card-header">
<p class="card-title mb-0 h4">
{l s='Summary' d='Shop.Istheme'}
</p>
</div>
<div class="card-body">
{block name='hook_checkout_summary_top'}
{include file='checkout/_partials/cart-summary-top.tpl' cart=$cart}
{/block}
{block name='cart_summary_products'}
{include file='checkout/_partials/cart-summary-products.tpl' cart=$cart}
{/block}
{block name='cart_summary_subtotals'}
{include file='checkout/_partials/cart-summary-subtotals.tpl' cart=$cart}
{/block}
{block name='cart_summary_totals'}
{include file='checkout/_partials/cart-summary-totals.tpl' cart=$cart}
{/block}
{block name='cart_summary_voucher'}
{include file='checkout/_partials/cart-voucher.tpl'}
{/block}
</div>
</section>

View File

@ -0,0 +1,96 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{if $cart.vouchers.allowed}
{block name='cart_voucher'}
<div class="block-promo">
<div class="cart-voucher js-cart-voucher">
{if $cart.vouchers.added}
{block name='cart_voucher_list'}
<ul class="promo-name card-block">
{foreach from=$cart.vouchers.added item=voucher}
<li class="cart-summary-line">
<span class="label">{$voucher.name}</span>
<div class="value d-inline-flex align-items-center">
<span>{$voucher.reduction_formatted}</span>
{if isset($voucher.code) && $voucher.code !== ''}
<a href="{$voucher.delete_url}" data-link-action="remove-voucher" class="text-danger ml-1">
<span class="material-icons font-reset btn-icon">delete</span>
</a>
{/if}
</div>
</li>
{/foreach}
</ul>
{/block}
{/if}
<p class="h6 mb-2">
{l s='Have a promo code?' d='Shop.Theme.Checkout'}
</p>
<div id="promo-code">
<div class="promo-code">
{block name='cart_voucher_form'}
<form action="{$urls.pages.cart}" data-link-action="add-voucher" method="post">
<input type="hidden" name="token" value="{$static_token}">
<input type="hidden" name="addDiscount" value="1">
<div class="input-group js-parent-focus">
<input class="promo-input form-control js-child-focus" type="text" name="discount_name" placeholder="{l s='Promo code' d='Shop.Theme.Checkout'}">
<span class="input-group-append">
<button type="submit" class="btn btn-primary">
{l s='Add' d='Shop.Theme.Actions'}
</button>
</span>
</div>
</form>
{/block}
{block name='cart_voucher_notifications'}
<div class="alert alert-danger js-error mt-2" role="alert" style="display:none;">
<span class="js-error-text"></span>
</div>
{/block}
</div>
</div>
{if $cart.discounts|count > 0}
<p class="block-promo promo-highlighted h6 mb-1 mt-3">
{l s='Take advantage of our exclusive offers:' d='Shop.Theme.Actions'}
</p>
<ul class="js-discount card-block promo-discounts mb-0">
{foreach from=$cart.discounts item=discount}
<li class="cart-summary-line">
<span class="label">
<a href="#" class="js-code font-weight-bold">{$discount.code}</a> - {$discount.name}
</span>
</li>
{/foreach}
</ul>
{/if}
</div>
</div>
{/block}
{/if}

View File

@ -0,0 +1,68 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{extends "customer/_partials/customer-form.tpl"}
{block "form_field"}
{if $field.name === 'password' and $guest_allowed}
<p class="form-informations">
<span class="font-weight-bold form-informations-title">
{l s='Create an account' d='Shop.Theme.Checkout'}
</span>
<span class="font-italic form-informations-option">
{l s='(optional)' d='Shop.Theme.Checkout'}
</span>
<br>
<span class="text-muted form-informations-subtitle">
{l s='And save time on your next order!' d='Shop.Theme.Checkout'}
</span>
</p>
{$smarty.block.parent}
{else}
{$smarty.block.parent}
{/if}
{/block}
{block "form_buttons"}
<div class="text-right">
<button
class="continue btn btn-primary d-none d-md-inline-block"
name="continue"
data-link-action="register-new-customer"
type="submit"
value="1"
>
{l s='Continue' d='Shop.Theme.Actions'}
</button>
<button
class="continue btn btn-primary btn-block d-block d-md-none"
name="continue"
data-link-action="register-new-customer"
type="submit"
value="1"
>
{l s='Continue' d='Shop.Theme.Actions'}
</button>
</div>
{/block}

View File

@ -0,0 +1,46 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
<div class="modal fade js-checkout-modal" id="checkout-modal">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="{l s='Close' d='Shop.Theme.Global'}">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="js-modal-content"></div>
</div>
</div>
</div>
</div>
{if $tos_cms != false}
<div class="py-3 text-center mt-3">
<span class="d-block js-terms">{$tos_cms nofilter}</span>
</div>
{/if}

View File

@ -0,0 +1,55 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{block name='header_nav'}
<nav class="header-nav py-2">
<div class="container">
<div class="row">
<div class="col text-md-left text-center">
<a href="{$urls.base_url}">
{images_block webpEnabled=$webpEnabled}
<img
{if !empty($shop.logo_details)}
src="{$shop.logo_details.src}"
width="{$shop.logo_details.width}"
height="{$shop.logo_details.height}"
{else}
src="{$shop.logo}"
{/if}
class="logo img-fluid"
alt="{$shop.name} {l s='logo' d='Shop.Theme.Global'}">
{/images_block}
</a>
</div>
<div class="col d-none d-md-block text-right">
{hook h='displayNav1'}
</div>
</div>
</div>
</nav>
{/block}
{block name='header_top'}
{/block}

View File

@ -0,0 +1,48 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{extends file='customer/_partials/login-form.tpl'}
{block name='form_buttons'}
<div class="text-right">
<button
class="continue btn btn-primary d-none d-md-inline-block"
name="continue"
data-link-action="sign-in"
type="submit"
value="1"
>
{l s='Continue' d='Shop.Theme.Actions'}
</button>
<button
class="continue btn btn-primary btn-block d-block d-md-none"
name="continue"
data-link-action="sign-in"
type="submit"
value="1"
>
{l s='Continue' d='Shop.Theme.Actions'}
</button>
</div>
{/block}

View File

@ -0,0 +1,32 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
<div id="order-items" class="order-confirmation-table">
{block name='order_confirmation_table'}
{include file="customer/_partials/product-table.tpl"}
{/block}
</div>

View File

@ -0,0 +1,38 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{extends file='checkout/_partials/order-confirmation-table.tpl'}
{block name='order-items-table-head'}
<div id="order-items" class="col-md-12">
<h3 class="card-title h3">
{if $products_count == 1}
{l s='%product_count% item in your cart' sprintf=['%product_count%' => $products_count] d='Shop.Theme.Checkout'}
{else}
{l s='%products_count% items in your cart' sprintf=['%products_count%' => $products_count] d='Shop.Theme.Checkout'}
{/if}
<a href="{url entity=cart params=['action' => 'show']}"><span class="step-edit"><i class="edit">edit</i> {l s='edit' d='Shop.Theme.Actions'}</span></a>
</h3>
</div>
{/block}

View File

@ -0,0 +1,109 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
<section id="order-summary-content" class="page-content page-order-confirmation">
<div class="row">
<div class="col-md-12">
<h4 class="h4 black">{l s='Please check your order before payment' d='Shop.Theme.Checkout'}</h4>
</div>
</div>
{if !$cart.is_virtual}
<div class="row">
<div class="col-md-12">
<h4 class="h4">
{l s='Addresses' d='Shop.Theme.Checkout'}
<span class="step-edit step-to-addresses js-edit-addresses"><i class="edit">edit</i> {l s='edit' d='Shop.Theme.Actions'}</span>
</h4>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="card noshadow">
<div class="card-block">
<h4 class="h5 black addresshead">{l s='Your Delivery Address' d='Shop.Theme.Checkout'}</h4>
{$customer.addresses[$cart.id_address_delivery]['formatted'] nofilter}
</div>
</div>
</div>
<div class="col-md-6">
<div class="card noshadow">
<div class="card-block">
<h4 class="h5 black addresshead">{l s='Your Invoice Address' d='Shop.Theme.Checkout'}</h4>
{$customer.addresses[$cart.id_address_invoice]['formatted'] nofilter}
</div>
</div>
</div>
</div>
{/if}
<div class="row">
<div class="col-md-12">
<h4 class="h4">
{l s='Shipping Method' d='Shop.Theme.Checkout'}
<span class="step-edit step-to-delivery js-edit-delivery"><i class="edit">edit</i> {l s='edit' d='Shop.Theme.Actions'}</span>
</h4>
<div class="col-md-12 summary-selected-carrier">
<div class="row">
<div class="col-md-2">
<div class="logo-container">
{if $selected_delivery_option.logo}
<img src="{$selected_delivery_option.logo}" alt="{$selected_delivery_option.name}" loading="lazy">
{else}
&nbsp;
{/if}
</div>
</div>
<div class="col-md-4">
<span class="carrier-name">{$selected_delivery_option.name}</span>
</div>
<div class="col-md-4">
<span class="carrier-delay">{$selected_delivery_option.delay}</span>
</div>
<div class="col-md-2">
<span class="carrier-price">{$selected_delivery_option.price}</span>
</div>
</div>
{if $is_recyclable_packaging}
<em>{l s='You have given permission to receive your order in recycled packaging.' d="Shop.Theme.Customeraccount"}</em>
{/if}
</div>
</div>
</div>
<div class="row">
{block name='order_confirmation_table'}
{include file='checkout/_partials/order-final-summary-table.tpl'
products=$cart.products
products_count=$cart.products_count
subtotals=$cart.subtotals
totals=$cart.totals
labels=$cart.labels
add_product_link=true
}
{/block}
</div>
</section>

View File

@ -0,0 +1,139 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{extends file='checkout/_partials/steps/checkout-step.tpl'}
{block name='step_content'}
<div class="js-address-form">
<form
method="POST"
data-id-address="{$id_address}"
action="{url entity='order' params=['id_address' => $id_address]}"
data-refresh-url="{url entity='order' params=['ajax' => 1, 'action' => 'addressForm']}"
>
{if $use_same_address}
<p class="mb-4">
{if $cart.is_virtual}
{l s='The selected address will be used as your personal address (for invoice).' d='Shop.Theme.Checkout'}
{else}
{l s='The selected address will be used both as your personal address (for invoice) and as your delivery address.' d='Shop.Theme.Checkout'}
{/if}
</p>
{else}
<h2 class="h4">{l s='Shipping Address' d='Shop.Theme.Checkout'}</h2>
{/if}
{if $show_delivery_address_form}
<div id="delivery-address">
{render file = 'checkout/_partials/address-form.tpl'
ui = $address_form
use_same_address = $use_same_address
type = "delivery"
form_has_continue_button = $form_has_continue_button
}
</div>
{elseif $customer.addresses|count > 0}
<div id="delivery-addresses" class="address-selector js-address-selector row">
{include file = 'checkout/_partials/address-selector-block.tpl'
addresses = $customer.addresses
name = "id_address_delivery"
selected = $id_address_delivery
type = "delivery"
interactive = !$show_delivery_address_form and !$show_invoice_address_form
}
</div>
{if isset($delivery_address_error)}
<p class="alert alert-danger js-address-error" name="alert-delivery" id="id-failure-address-{$delivery_address_error.id_address}">{$delivery_address_error.exception}</p>
{else}
<p class="alert alert-danger js-address-error" name="alert-delivery" style="display: none">{l s="Your address is incomplete, please update it." d="Shop.Notifications.Error"}</p>
{/if}
<div class="add-address mt-2 mb-3">
<a class="btn btn-outline-primary btn-sm" href="{$new_address_delivery_url}">{l s='add new address' d='Shop.Theme.Actions'}</a>
</div>
{if $use_same_address && !$cart.is_virtual}
<p>
<a data-link-action="different-invoice-address" href="{$use_different_address_url}">
{l s='Billing address differs from shipping address' d='Shop.Theme.Checkout'}
</a>
</p>
{/if}
{/if}
{if !$use_same_address}
<h2 class="h4">{l s='Your Invoice Address' d='Shop.Theme.Checkout'}</h2>
{if $show_invoice_address_form}
<div id="invoice-address">
{render file = 'checkout/_partials/address-form.tpl'
ui = $address_form
use_same_address = $use_same_address
type = "invoice"
form_has_continue_button = $form_has_continue_button
}
</div>
{else}
<div id="invoice-addresses" class="address-selector js-address-selector row">
{include file = 'checkout/_partials/address-selector-block.tpl'
addresses = $customer.addresses
name = "id_address_invoice"
selected = $id_address_invoice
type = "invoice"
interactive = !$show_delivery_address_form and !$show_invoice_address_form
}
</div>
{if isset($invoice_address_error)}
<p class="alert alert-danger js-address-error" name="alert-invoice" id="id-failure-address-{$invoice_address_error.id_address}">{$invoice_address_error.exception}</p>
{else}
<p class="alert alert-danger js-address-error" name="alert-invoice" style="display: none">{l s="Your address is incomplete, please update it." d="Shop.Notifications.Error"}</p>
{/if}
<div class="add-address mt-2 mb-3">
<a class="btn btn-outline-primary btn-sm" href="{$new_address_invoice_url}">{l s='add new address' d='Shop.Theme.Actions'}</a>
</div>
{/if}
{/if}
{if !$form_has_continue_button}
<div class="text-right">
<button type="submit" class="btn btn-primary continue d-none d-md-inline-block" name="confirm-addresses" value="1">
{l s='Continue' d='Shop.Theme.Actions'}
</button>
<button type="submit" class="btn btn-primary continue btn-block d-block d-md-none" name="confirm-addresses" value="1">
{l s='Continue' d='Shop.Theme.Actions'}
</button>
<input type="hidden" id="not-valid-addresses" class="js-not-valid-addresses" value="{$not_valid_addresses}">
</div>
{/if}
</form>
</div>
{/block}

View File

@ -0,0 +1,53 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{block name='step'}
<section id = "{$identifier}"
class = "{[
'checkout-step' => true,
'-current' => $step_is_current,
'-reachable' => $step_is_reachable,
'-complete' => $step_is_complete,
'js-current-step' => $step_is_current
]|classnames}"
>
<div class="card-header checkout-step__header" id="heading-{$identifier}" data-identifier="{$identifier}">
<p class="step-title js-step-title h5 mb-0">
<span class="step-number">{$position}.</span>
{$title}
<i class="material-icons font-reset rtl-no-flip text-success mx-2">&#xE876;</i>
{if $step_is_reachable}
<button class="step-edit text-muted btn btn-sm btn-link float-right py-0" data-toggle="collapse" data-target="#content-{$identifier}" aria-expanded="{if $step_is_current}true{else}false{/if}" aria-controls="content-{$identifier}">
<i class="material-icons edit small">mode_edit</i> {l s='Edit' d='Shop.Theme.Actions'}
</button>
{/if}
</p>
</div>
<div class="content checkout-step__content card-body">
{block name='step_content'}DUMMY STEP CONTENT{/block}
</div>
</section>
{/block}

View File

@ -0,0 +1,141 @@
{extends file='checkout/_partials/steps/checkout-step.tpl'}
{block name='step_content'}
{hook h='displayPaymentTop'}
{* used by javascript to correctly handle cart updates when we are on payment step (eg vouchers added) *}
<div style="display:none" class="js-cart-payment-step-refresh"></div>
{if !empty($display_transaction_updated_info)}
<p class="cart-payment-step-refreshed-info">
{l s='Transaction amount has been correctly updated' d='Shop.Theme.Checkout'}
</p>
{/if}
{if $is_free}
<p class="cart-payment-step-not-needed-info">{l s='No payment needed for this order' d='Shop.Theme.Checkout'}</p>
{/if}
<div class="payment-options {if $is_free}d-none{/if}">
{foreach from=$payment_options item="module_options"}
{foreach from=$module_options item="option"}
<div
id="{$option.id}-container"
class="mb-3 checkout-option-block checkout-option {if $selected_payment_option == $option.id || $is_free}selected{/if}">
<input class="ps-shown-by-js custom-control-input{if $option.binary} binary{/if}" id="{$option.id}"
data-module-name="{$option.module_name}" name="payment-option" type="radio" required
{if $selected_payment_option == $option.id || $is_free} checked {/if}>
<label class="card mb-0 cursor-pointer h-100" for="{$option.id}">
<div class="card-body checkout-option__body py-sm-3 px-sm-4 p-2">
<div class="checkout-option__row row align-items-center">
<div class="col-auto checkout-option__col checkout-option__col--thumb">
<div class="checkout-option__thumb">
{if $option.logo}
<img src="{$option.logo}" class="checkout-option__img img-fluid" />
{else}
<img src="{$urls.img_url}checkout/payment_default.svg" class="checkout-option__img img-fluid" />
{/if}
</div>
</div>
<div class="col checkout-option__col">
<p class="h5 mb-0">
{$option.call_to_action_text}
</p>
</div>
</div>
</div>
</label>
</div>
<div
id="pay-with-{$option.id}-form"
style="display:none"
class="js-payment-option-form {if $option.id != $selected_payment_option} ps-hidden {/if}"
>
{if $option.form}
{$option.form nofilter}
{else}
<form id="payment-form" method="POST" action="{$option.action nofilter}">
{foreach from=$option.inputs item=input}
<input type="{$input.type}" name="{$input.name}" value="{$input.value}">
{/foreach}
<button style="display:none" id="pay-with-{$option.id}" type="submit"></button>
</form>
{/if}
</div>
{if $option.additionalInformation}
<div id="{$option.id}-additional-information"
style="display:none"
class="mt-2 js-additional-information definition-list additional-information{if $option.id != $selected_payment_option} ps-hidden {/if}">
<div class="alert alert-info">
{$option.additionalInformation nofilter}
</div>
</div>
{/if}
{/foreach}
{foreachelse}
<p class="alert alert-danger">{l s='Unfortunately, there are no payment method available.' d='Shop.Theme.Checkout'}</p>
{/foreach}
</div>
{if $conditions_to_approve|count}
<p style="display:none;" class="ps-hidden-by-js">
{* At the moment, we're not showing the checkboxes when JS is disabled
because it makes ensuring they were checked very tricky and overcomplicates
the template. Might change later.
*}
{l s='By confirming the order, you certify that you have read and agree with all of the conditions below:' d='Shop.Theme.Checkout'}
</p>
<form id="conditions-to-approve" method="GET" class="mt-3">
{foreach from=$conditions_to_approve item="condition" key="condition_name"}
<div class="custom-control custom-checkbox">
<input id="conditions_to_approve[{$condition_name}]" name="conditions_to_approve[{$condition_name}]" required
type="checkbox" value="1" class="ps-shown-by-js custom-control-input">
<label class="custom-control-label js-terms"
for="conditions_to_approve[{$condition_name}]">{$condition nofilter}</label>
</div>
{/foreach}
</form>
{/if}
{hook h='displayCheckoutBeforeConfirmation'}
{if $show_final_summary}
{include file='checkout/_partials/order-final-summary.tpl'}
{/if}
<div id="payment-confirmation" class="mt-4 js-payment-confirmation">
<div class="ps-shown-by-js">
<div class="text-center">
<button type="submit" class="btn btn-primary btn-lg d-none d-md-inline-block {if !$selected_payment_option} disabled {/if}">
{l s='Place order' d='Shop.Theme.Checkout'}
</button>
<button type="submit" class="btn btn-primary btn-lg btn-block d-block d-md-none {if !$selected_payment_option} disabled {/if}">
{l s='Place order' d='Shop.Theme.Checkout'}
</button>
</div>
{if $show_final_summary}
<article class="alert alert-danger mt-2 js-alert-payment-conditions" role="alert" data-alert="danger">
{l
s='Please make sure you\'ve chosen a [1]payment method[/1] and accepted the [2]terms and conditions[/2].'
sprintf=[
'[1]' => '<a href="#checkout-payment-step">',
'[/1]' => '</a>',
'[2]' => '<a href="#conditions-to-approve">',
'[/2]' => '</a>'
]
d='Shop.Theme.Checkout'
}
</article>
{/if}
</div>
<div class="ps-hidden-by-js">
{if $selected_payment_option and $all_conditions_approved}
<label for="pay-with-{$selected_payment_option}">{l s='Order with an obligation to pay' d='Shop.Theme.Checkout'}</label>
{/if}
</div>
</div>
{hook h='displayPaymentByBinaries'}
{/block}

View File

@ -0,0 +1,107 @@
{extends file='checkout/_partials/steps/checkout-step.tpl'}
{block name='step_content'}
{hook h='displayPersonalInformationTop' customer=$customer}
{if $customer.is_logged && !$customer.is_guest}
<p class="identity">
{* [1][/1] is for a HTML tag. *}
{l s='Connected as [1]%firstname% %lastname%[/1].'
d='Shop.Theme.Customeraccount'
sprintf=[
'[1]' => "<a href='{$urls.pages.identity}'>",
'[/1]' => "</a>",
'%firstname%' => $customer.firstname,
'%lastname%' => $customer.lastname
]
}
</p>
<p>
{* [1][/1] is for a HTML tag. *}
{l
s='Not you? [1]Log out[/1]'
d='Shop.Theme.Customeraccount'
sprintf=[
'[1]' => "<a href='{$urls.actions.logout}'>",
'[/1]' => "</a>"
]
}
</p>
{if !isset($empty_cart_on_logout) || $empty_cart_on_logout}
<p><small>{l s='If you sign out now, your cart will be emptied.' d='Shop.Theme.Checkout'}</small></p>
{/if}
<div class="text-right">
<form method="GET" action="{$urls.pages.order}">
<button
class="continue btn btn-primary d-none d-md-inline-block"
name="controller"
type="submit"
value="order"
>
{l s='Continue' d='Shop.Theme.Actions'}
</button>
<button
class="continue btn btn-primary btn-block d-block d-md-none"
name="controller"
type="submit"
value="order"
>
{l s='Continue' d='Shop.Theme.Actions'}
</button>
</form>
</div>
{else}
<div class="user-form user-form--sm">
<ul class="nav nav-pills nav-fill mb-3" role="tablist">
<li class="nav-item">
<a
class="nav-link {if !$show_login_form}active{/if}"
data-toggle="tab"
href="#checkout-guest-form"
role="tab"
aria-controls="checkout-guest-form"
{if !$show_login_form} aria-selected="true"{/if}
>
{if $guest_allowed}
{l s='Order as a guest' d='Shop.Theme.Checkout'}
{else}
{l s='Create an account' d='Shop.Theme.Customeraccount'}
{/if}
</a>
</li>
<li class="nav-item">
<a
class="nav-link {if $show_login_form}active{/if}"
data-link-action="show-login-form"
data-toggle="tab"
href="#checkout-login-form"
role="tab"
aria-controls="checkout-login-form"
{if $show_login_form} aria-selected="true"{/if}
>
{l s='Sign in' d='Shop.Theme.Actions'}
</a>
</li>
</ul>
</div>
<div class="tab-content">
<div class="tab-pane {if !$show_login_form}active{/if}" id="checkout-guest-form" role="tabpanel" {if $show_login_form}aria-hidden="true"{/if}>
{render file='checkout/_partials/customer-form.tpl' ui=$register_form guest_allowed=$guest_allowed}
</div>
<div class="tab-pane {if $show_login_form}active{/if}" id="checkout-login-form" role="tabpanel" {if !$show_login_form}aria-hidden="true"{/if}>
<div class="user-form user-form--sm">
{render file='checkout/_partials/login-form.tpl' ui=$login_form}
</div>
</div>
</div>
{/if}
{/block}

View File

@ -0,0 +1,134 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{extends file='checkout/_partials/steps/checkout-step.tpl'}
{block name='step_content'}
<div id="hook-display-before-carrier">
{$hookDisplayBeforeCarrier nofilter}
</div>
<div class="delivery-options-list">
{if $delivery_options|count}
<form
class="clearfix"
id="js-delivery"
data-url-update="{url entity='order' params=['ajax' => 1, 'action' => 'selectDeliveryOption']}"
method="post"
>
<div class="form-fields">
{block name='delivery_options'}
<div class="delivery-options">
{foreach from=$delivery_options item=carrier key=carrier_id}
<div class="mb-3 checkout-option-block checkout-option js-delivery-option {if $delivery_option == $carrier_id} selected{/if}">
<input class="custom-control-input" type="radio" name="delivery_option[{$id_address}]" id="delivery_option_{$carrier.id}" value="{$carrier_id}"{if $delivery_option == $carrier_id} checked{/if}>
<label class="card mb-0 cursor-pointer h-100" for="delivery_option_{$carrier.id}">
<div class="card-body checkout-option__body py-sm-3 px-sm-4 p-2">
<div class="checkout-option__row row align-items-center">
<div class="col-auto checkout-option__col checkout-option__col--thumb">
<div class="checkout-option__thumb">
{if $carrier.logo}
<img src="{$carrier.logo}" alt="{$carrier.name}" class="checkout-option__img img-fluid" />
{else}
<img src="{$urls.img_url}checkout/carrier_default.svg" class="checkout-option__img img-fluid" />
{/if}
</div>
</div>
<div class="col checkout-option__col">
<div class="checkout-option__row checkout-option__row--inner row align-items-center">
<div class="col checkout-option__col checkout-option__col--text">
<p class="h5 mb-0">
{$carrier.name}
</p>
<span class="checkout-option__delay text-muted font-sm">{$carrier.delay}</span>
</div>
<div class="col-sm-auto col-12 checkout-option__col checkout-option__col--price mt-sm-0 mt-1">
<div class="checkout-option__price price text-right">
{$carrier.price}
</div>
</div>
</div>
</div>
</div>
</div>
</label>
</div>
<div class="carrier-extra-content js-carrier-extra-content my-3"{if $delivery_option != $carrier_id} style="display:none;"{/if}>{$carrier.extraContent nofilter}</div>
{/foreach}
</div>
{/block}
<div class="order-options">
<div id="delivery">
<label for="delivery_message">{l s='If you would like to add a comment about your order, please write it in the field below.' d='Shop.Theme.Checkout'}</label>
<textarea class="form-control" rows="4" cols="120" id="delivery_message" name="delivery_message">{$delivery_message}</textarea>
</div>
{if $recyclablePackAllowed}
<div class="form-group my-3">
<div class="custom-control custom-checkbox">
<input class="custom-control-input" type="checkbox" id="input_recyclable" name="recyclable" value="1" {if $recyclable} checked {/if}>
<label class="custom-control-label" for="input_recyclable">{l s='I would like to receive my order in recycled packaging.' d='Shop.Theme.Checkout'}</label>
</div>
</div>
{/if}
{if $gift.allowed}
<div class="form-group my-3">
<div class="custom-control custom-checkbox">
<input class="custom-control-input js-gift-checkbox" type="checkbox" id="input_gift" name="gift" value="1" {if $gift.isGift} checked {/if}>
<label class="custom-control-label" for="input_gift">{$gift.label}</label>
</div>
</div>
<div id="gift" class="collapse{if $gift.isGift} in{/if}">
<label for="gift_message">{l s='If you\'d like, you can add a note to the gift:' d='Shop.Theme.Checkout'}</label>
<textarea class="form-control" rows="4" cols="120" id="gift_message" name="gift_message">{$gift.message}</textarea>
</div>
{/if}
</div>
</div>
<div class="text-right mt-3">
<button type="submit" class="continue btn btn-primary d-none d-md-inline-block" name="confirmDeliveryOption" value="1">
{l s='Continue' d='Shop.Theme.Actions'}
</button>
<button type="submit" class="continue btn btn-primary btn-block d-block d-md-none" name="confirmDeliveryOption" value="1">
{l s='Continue' d='Shop.Theme.Actions'}
</button>
</div>
</form>
{else}
<p class="alert alert-danger">{l s='Unfortunately, there are no carriers available for your delivery address.' d='Shop.Theme.Checkout'}</p>
{/if}
</div>
<div id="hook-display-after-carrier">
{$hookDisplayAfterCarrier nofilter}
</div>
<div id="extra_carrier"></div>
{/block}

View File

@ -0,0 +1,34 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{block name='step'}
<section class="checkout-step -unreachable" id="{$identifier}">
<div class="card-header checkout-step__header" id="heading-{$identifier}" data-identifier="{$identifier}">
<p class="step-title h5 mb-0 js-step-title">
<span class="step-number">{$position}.</span>
{$title}
</p>
</div>
</section>
{/block}

View File

@ -0,0 +1,35 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{extends file='checkout/cart.tpl'}
{block name='cart_actions'}
<div class="checkout text-sm-center card-block">
<button type="button" class="btn btn-primary disabled" disabled>{l s='Checkout' d='Shop.Theme.Actions'}</button>
</div>
{/block}
{block name='continue_shopping'}{/block}
{block name='cart_voucher'}{/block}
{block name='display_reassurance'}{/block}

100
templates/checkout/cart.tpl Normal file
View File

@ -0,0 +1,100 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{extends file=$layout}
{block name='content'}
<section id="main">
<div class="cart-grid row">
<!-- Left Block: cart product informations & shpping -->
<div class="cart-grid-body col-12 col-lg-8">
<!-- cart products detailed -->
<div class="card cart-container">
<div class="card-header">
<h1 class="h4 card-title mb-0">{l s='Shopping Cart' d='Shop.Theme.Checkout'}</h1>
</div>
{block name='cart_overview'}
{include file='checkout/_partials/cart-detailed.tpl' cart=$cart}
{/block}
</div>
{block name='continue_shopping'}
<div class="my-3">
<a class="btn btn-outline-primary" href="{$urls.pages.index}">
<span class="material-icons btn-icon mr-1">keyboard_arrow_left</span>
{l s='Continue shopping' d='Shop.Theme.Actions'}
</a>
</div>
{/block}
<!-- shipping informations -->
{block name='hook_shopping_cart_footer'}
{hook h='displayShoppingCartFooter'}
{/block}
</div>
<!-- Right Block: cart subtotal & cart total -->
<div class="cart-grid-right col-12 col-lg-4">
{block name='cart_summary'}
<div class="card cart-summary">
<div class="card-header">
<p class="cart-title h4 mb-0">
{l s='Summary' d='Shop.Istheme'}
</p>
</div>
<div class="card-body">
{block name='hook_shopping_cart'}
{hook h='displayShoppingCart'}
{/block}
{block name='cart_totals'}
{include file='checkout/_partials/cart-detailed-totals.tpl' cart=$cart}
{/block}
</div>
<div class="card-body">
{block name='cart_actions'}
{include file='checkout/_partials/cart-detailed-actions.tpl' cart=$cart}
{/block}
</div>
</div>
{/block}
{block name='hook_reassurance'}
{hook h='displayReassurance'}
{/block}
</div>
</div>
{hook h='displayCrossSellingShoppingCart'}
</section>
{/block}

View File

@ -0,0 +1,30 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{foreach from=$steps item="step" key="index"}
{render identifier = $step.identifier
position = ($index + 1)
ui = $step.ui
}
{/foreach}

View File

@ -0,0 +1,58 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{extends file=$layout}
{block name='header'}
{include file='checkout/_partials/header.tpl'}
{/block}
{block name='content'}
<section id="content">
<div class="row">
<div class="cart-grid-body col-12 col-lg-8 mb-4">
<div class="card">
{block name='checkout_process'}
{render file='checkout/checkout-process.tpl' ui=$checkout_process}
{/block}
</div>
</div>
<div class="cart-grid-right col-12 col-lg-4">
{block name='cart_summary'}
{include file='checkout/_partials/cart-summary.tpl' cart=$cart}
{/block}
{hook h='displayReassurance'}
</div>
</div>
</section>
{/block}
{block name='footer'}
{include file='checkout/_partials/footer.tpl'}
{/block}

View File

@ -0,0 +1,154 @@
{extends file='page.tpl'}
{block name='page_title'}
{l s='Your order is confirmed' d='Shop.Theme.Checkout'}
{/block}
{block name='page_content_container' prepend}
<section id="content-hook_order_confirmation">
<div class="card-block">
<p>
{l s='An email has been sent to your mail address %email%.' d='Shop.Theme.Checkout' sprintf=['%email%' => $order_customer.email]}
{if $order.details.invoice_url}
{* [1][/1] is for a HTML tag. *}
{l
s='You can also [1]download your invoice[/1]'
d='Shop.Theme.Checkout'
sprintf=[
'[1]' => "<a href='{$order.details.invoice_url}'>",
'[/1]' => "</a>"
]
}
{/if}
</p>
{block name='hook_order_confirmation'}
{$HOOK_ORDER_CONFIRMATION nofilter}
{/block}
</div>
</section>
{/block}
{block name='page_content_container'}
<section id="content" class="page-content page-order-confirmation card my-4">
{block name='order_confirmation_table'}
{include
file='checkout/_partials/order-confirmation-table.tpl'
products=$order.products
subtotals=$order.subtotals
totals=$order.totals
labels=$order.labels
add_product_link=false
}
{/block}
</section>
<div class="row card-group no-gutters my-4">
{block name='order_details'}
<div class="col-sm-6 col-12 card">
<div class="card-header">
<h3 class="h5 mb-0 card-title">{l s='Order details' d='Shop.Theme.Checkout'}</h3>
</div>
<div class="card-body">
<ul class="m-0">
<li class="cart-summary-line">
<span id="order-reference-value">
{l s='Order reference: %reference%' d='Shop.Theme.Checkout' sprintf=['%reference%' => "<strong>`$order.details.reference`</strong>"]}
</span>
</li>
<li class="cart-summary-line">
<span>
{l s='Payment method: %method%' d='Shop.Theme.Checkout' sprintf=['%method%' => "<strong>`$order.details.payment`</strong>"]}
</span>
</li>
{if !$order.details.is_virtual}
<li class="cart-summary-line">
<span>
{l s='Shipping method: %method%' d='Shop.Theme.Checkout' sprintf=['%method%' => "<strong>`$order.carrier.name`</strong>"]}
</span>
</li>
{/if}
{if $order.details.recyclable}
<li class="cart-summary-line">
<span>{l s='You have given permission to receive your order in recycled packaging.' d="Shop.Theme.Customeraccount"}</span>
</li>
{/if}
</ul>
</div>
</div>
{/block}
<div class="col-sm-6 col-12 card">
<div class="card-header">
<h3 class="h5 mb-0 card-title">{l s='Order subtotals' d='Shop.Istheme'}</h3>
</div>
<div class="card-body">
{foreach $order.subtotals as $subtotal}
{if $subtotal !== null && $subtotal.type !== 'tax' && $subtotal.label !== null}
<div class="cart-summary-line">
<span class="label">{$subtotal.label}</span>
<span class="value">{if 'discount' == $subtotal.type}-&nbsp;{/if}{$subtotal.value}</span>
</div>
{/if}
{/foreach}
{if !$configuration.display_prices_tax_incl && $configuration.taxes_enabled}
<div class="cart-summary-line">
<span class="label">{$order.totals.total.label}&nbsp;{$order.labels.tax_short}</span>
<span class="value">{$order.totals.total.value}</span>
</div>
<div class="cart-summary-line cart-total">
<span class="label">{$order.totals.total_including_tax.label}</span>
<span class="value">{$order.totals.total_including_tax.value}</span>
</div>
{else}
<div class="cart-summary-line cart-total">
<span class="label">{$order.totals.total.label}&nbsp;{if $configuration.taxes_enabled && $configuration.display_taxes_label}{$order.labels.tax_short}{/if}</span>
<span class="value">{$order.totals.total.value}</span>
</div>
{/if}
{if $order.subtotals !== null && $order.subtotals.tax.label !== null}
<div class="cart-summary-line">
<span class="label">{l s='%label%:' sprintf=['%label%' => $order.subtotals.tax.label] d='Shop.Theme.Global'}</span>
<span class="value">{$order.subtotals.tax.value}</span>
</div>
{/if}
</div>
</div>
</div>
{block name='hook_payment_return'}
{if ! empty($HOOK_PAYMENT_RETURN)}
<section id="content-hook_payment_return">
{$HOOK_PAYMENT_RETURN nofilter}
</section>
{/if}
{/block}
{if !$registered_customer_exists}
{block name='account_transformation_form'}
<div class="row">
<div class="col-lg-6 col-md-8 col-12 mx-auto">
{include file='customer/_partials/account-transformation-form.tpl'}
</div>
</div>
{/block}
{/if}
{block name='hook_order_confirmation_1'}
{hook h='displayOrderConfirmation1'}
{/block}
{block name='hook_order_confirmation_2'}
<section id="content-hook-order-confirmation-footer">
{hook h='displayOrderConfirmation2'}
</section>
{/block}
{/block}

View File

@ -0,0 +1,44 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{block name='sitemap_item'}
<div class="list-group list-group-flush list-group-collapse">
{foreach $links as $link}
{if !empty($link.children)}
<div class="list-group-item list-group-item-action-dropdown">
<a class="text-reset stretched-link" id="{$link.id}" href="{$link.url}" title="{$link.label}">
{$link.label}
</a>
</div>
{include file='cms/_partials/sitemap-nested-list.tpl' links=$link.children}
{else}
<a class="list-group-item list-group-item-action" id="{$link.id}" href="{$link.url}" title="{$link.label}">
{$link.label}
</a>
{/if}
{/foreach}
</div>
{/block}

View File

@ -0,0 +1,53 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{extends file='page.tpl'}
{block name='page_title'}
{$cms_category.name}
{/block}
{block name='page_content'}
{block name='cms_sub_categories'}
{if $sub_categories}
<p>{l s='List of sub categories in %name%:' d='Shop.Theme.Global' sprintf=['%name%' => $cms_category.name]}</p>
<ul>
{foreach from=$sub_categories item=sub_category}
<li><a href="{$sub_category.link}">{$sub_category.name}</a></li>
{/foreach}
</ul>
{/if}
{/block}
{block name='cms_sub_pages'}
{if $cms_pages}
<p>{l s='List of pages in %category_name%:' d='Shop.Theme.Global' sprintf=['%category_name%' => $cms_category.name]}</p>
<ul>
{foreach from=$cms_pages item=cms_page}
<li><a href="{$cms_page.link}">{$cms_page.meta_title}</a></li>
{/foreach}
</ul>
{/if}
{/block}
{/block}

49
templates/cms/page.tpl Normal file
View File

@ -0,0 +1,49 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{extends file='page.tpl'}
{block name='page_title'}
{$cms.meta_title}
{/block}
{block name='page_content_container'}
<section id="content" class="page-content cms-content page-cms page-cms-{$cms.id}">
{block name='cms_content'}
{cms_images_block webpEnabled=$webpEnabled}
{$cms.content nofilter}
{/cms_images_block}
{/block}
{block name='hook_cms_dispute_information'}
{hook h='displayCMSDisputeInformation'}
{/block}
{block name='hook_cms_print_button'}
{hook h='displayCMSPrintButton'}
{/block}
</section>
{/block}

74
templates/cms/sitemap.tpl Normal file
View File

@ -0,0 +1,74 @@
{**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* 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 license@prestashop.com 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 https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*}
{extends file='page.tpl'}
{block name='page_title'}
{l s='Sitemap' d='Shop.Theme.Global'}
{/block}
{block name='page_content_container'}
<div class="row">
<div class="col-lg-3 col-sm-6 col-12 mb-4">
<div class="card">
<div class="card-header">
<h2 class="card-title h5 mb-0">
{$our_offers}
</h2>
</div>
{include file='cms/_partials/sitemap-nested-list.tpl' links=$links.offers}
</div>
</div>
<div class="col-lg-3 col-sm-6 col-12 mb-4">
<div class="card">
<div class="card-header">
<h2 class="card-title h5 mb-0">
{$categories}
</h2>
</div>
{include file='cms/_partials/sitemap-nested-list.tpl' links=$links.categories}
</div>
</div>
<div class="col-lg-3 col-sm-6 col-12 mb-4">
<div class="card">
<div class="card-header">
<h2 class="card-title h5 mb-0">
{$your_account}
</h2>
</div>
{include file='cms/_partials/sitemap-nested-list.tpl' links=$links.user_account}
</div>
</div>
<div class="col-lg-3 col-sm-6 col-12 mb-4">
<div class="card">
<div class="card-header">
<h2 class="card-title h5 mb-0">
{$pages}
</h2>
</div>
{include file='cms/_partials/sitemap-nested-list.tpl' links=$links.pages}
</div>
</div>
</div>
{/block}

Some files were not shown because too many files have changed in this diff Show More