Auto select product size

This commit is contained in:
Roman Pyrih
2025-09-19 14:28:11 +02:00
parent 1267056c07
commit 0c7ea5139b
4 changed files with 101 additions and 56 deletions

View File

@@ -1146,3 +1146,37 @@ $(document).ready(function () {
$widget.find('.preloader').fadeOut(500)
}, 10000)
})
$(document).ready(function () {
$('body').on(
'click',
'#box-product-accessories .buy-protector-btn',
function (e) {
let selectedSize = $(
'#add-to-cart-or-refresh .product-variants .product-variants-item select#group_3 option:selected'
)
.text()
.trim()
localStorage.removeItem('selectedSize')
localStorage.setItem('selectedSize', JSON.stringify(selectedSize))
}
)
if (localStorage.getItem('selectedSize')) {
let savedSize = JSON.parse(localStorage.getItem('selectedSize'))
let $select = $(
'#add-to-cart-or-refresh .product-variants .product-variants-item select#group_3'
)
$select.find('option').each(function () {
if ($(this).text().trim() === savedSize) {
$(this).prop('selected', true).trigger('change')
return false
}
})
localStorage.removeItem('selectedSize')
}
})

View File

@@ -499,12 +499,19 @@
{* {/if} *}
{/if}
</div>
<div class="widget-stars" onclick="const target = document.querySelector('#tabs > .tabs-nav > li[data-tab=&quot;tabs-4&quot;]'); if (target) { target.click(); setTimeout(() => { const rect = target.getBoundingClientRect(); const offsetTop = window.pageYOffset + rect.top - 100; window.scrollTo({ top: offsetTop, behavior: 'smooth' }); }, 300); }">
<span>Ocena:</span>
<div id="widget-container" class="data-ekomi-emp ekomi-widget-container ekomi-widget-sf14797663a5a947df4ad"></div>
<div id="ekomi-product-widget-identifier" class="prod-data-emp" style="visibility: hidden">{$product.id}</div>
<a href="https://www.ekomi-pl.com/opinie-drmaterac.html" target="_blank"><img alt="drmaterac.pl Reviews with ekomi-pl.com" src="https://smart-widget-assets.ekomiapps.de/resources/ekomi_logo.png" style="display: none;"/></a>
</div>
<script>
document.querySelector('a[href="#opinions-sections"]').addEventListener('click', function(e) {
e.preventDefault();
});
</script>
<a href="#opinions-sections" style="display:flex; gap:10px;">
<div class="widget-stars" onclick="const target = document.querySelector('#tabs > .tabs-nav > li[data-tab=&quot;tabs-4&quot;]'); if (target) { target.click(); setTimeout(() => { const rect = target.getBoundingClientRect(); const offsetTop = window.pageYOffset + rect.top - 100; window.scrollTo({ top: offsetTop, behavior: 'smooth' }); }, 300); }">
<span>Ocena:</span>
<div id="widget-container" class="data-ekomi-emp ekomi-widget-container ekomi-widget-sf14797663a5a947df4ad"></div>
<div id="ekomi-product-widget-identifier" class="prod-data-emp" style="visibility: hidden">{$product.id}</div>
<a href="https://www.ekomi-pl.com/opinie-drmaterac.html" target="_blank"><img alt="drmaterac.pl Reviews with ekomi-pl.com" src="https://smart-widget-assets.ekomiapps.de/resources/ekomi_logo.png" style="display: none;"/></a>
</div>
</a>
{literal}
<script type="text/javascript">

View File

@@ -40,8 +40,8 @@
<meta property="product:price:amount" content="{$product.price_amount}">
<meta property="product:price:currency" content="{$currency.iso_code}">
{if isset($product.weight) && ($product.weight != 0)}
<meta property="product:weight:value" content="{$product.weight}">
<meta property="product:weight:units" content="{$product.weight_unit}">
<meta property="product:weight:value" content="{$product.weight}">
<meta property="product:weight:units" content="{$product.weight_unit}">
{/if}
{/block}
@@ -85,7 +85,8 @@
<div class="product-information">
{block name='product_description_short'}
<div id="product-description-short-{$product.id}" itemprop="description">{$product.description_short nofilter}</div>
<div id="product-description-short-{$product.id}" itemprop="description">{$product.description_short nofilter}
</div>
{/block}
{if $product.is_customizable && count($product.customizations.fields)}
@@ -99,7 +100,8 @@
<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">
<input type="hidden" name="id_customization" value="{$product.id_customization}"
id="product_customization_id">
{block name='product_variants'}
{include file='catalog/_partials/product-variants.tpl'}
@@ -164,10 +166,10 @@
<div class="col-lg-3 col-md-4 col-sm-6 col-xs-6 col-sp-12 ajax_block_product">
{block name='product_miniature'}
{if isset($productProfileDefault) && $productProfileDefault}
{* exits THEME_NAME/profiles/profile_name.tpl -> load template*}
{hook h='displayLeoProfileProduct' product=$product_accessory profile=$productProfileDefault}
{* exits THEME_NAME/profiles/profile_name.tpl -> load template*}
{hook h='displayLeoProfileProduct' product=$product_accessory profile=$productProfileDefault}
{else}
{include file='catalog/_partials/miniatures/product.tpl' product=$product_accessory}
{include file='catalog/_partials/miniatures/product.tpl' product=$product_accessory}
{/if}
{/block}
</div>
@@ -196,4 +198,4 @@
</section>
{/if}
{/block}
{/block}

View File

@@ -22,48 +22,50 @@
* @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-variants">
<div class="product-variants 1">
{foreach from=$groups key=id_attribute_group item=group}
{if !empty($group.attributes)}
<div class="clearfix product-variants-item">
<span class="control-label">{$group.name}</span>
{if $group.group_type == 'select'}
<select
class="form-control form-control-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 id="group_{$id_attribute_group}">
{foreach from=$group.attributes key=id_attribute item=group_attribute}
<li class="float-xs-left input-container">
<label>
<input class="input-color" type="radio" data-product-attribute="{$id_attribute_group}" name="group[{$id_attribute_group}]" value="{$id_attribute}"{if $group_attribute.selected} checked="checked"{/if}>
<span
{if $group_attribute.html_color_code}class="color" style="background-color: {$group_attribute.html_color_code}" {/if}
{if $group_attribute.texture}class="color texture" style="background-image: url({$group_attribute.texture})" {/if}
><span class="sr-only">{$group_attribute.name}</span></span>
</label>
</li>
{/foreach}
</ul>
{elseif $group.group_type == 'radio'}
<ul id="group_{$id_attribute_group}">
{foreach from=$group.attributes key=id_attribute item=group_attribute}
<li class="input-container float-xs-left">
<label>
<input class="input-radio" type="radio" data-product-attribute="{$id_attribute_group}" name="group[{$id_attribute_group}]" value="{$id_attribute}"{if $group_attribute.selected} checked="checked"{/if}>
<span class="radio-label">{$group_attribute.name}</span>
</label>
</li>
{/foreach}
</ul>
{/if}
</div>
{if !empty($group.attributes)}
<div class="clearfix product-variants-item">
<span class="control-label">{$group.name}</span>
{if $group.group_type == 'select'}
<select class="form-control form-control-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 id="group_{$id_attribute_group}">
{foreach from=$group.attributes key=id_attribute item=group_attribute}
<li class="float-xs-left input-container">
<label>
<input class="input-color" type="radio" data-product-attribute="{$id_attribute_group}"
name="group[{$id_attribute_group}]" value="{$id_attribute}" {if $group_attribute.selected} checked="checked"
{/if}>
<span {if $group_attribute.html_color_code}class="color"
style="background-color: {$group_attribute.html_color_code}" {/if}
{if $group_attribute.texture}class="color texture" style="background-image: url({$group_attribute.texture})"
{/if}><span class="sr-only">{$group_attribute.name}</span></span>
</label>
</li>
{/foreach}
</ul>
{elseif $group.group_type == 'radio'}
<ul id="group_{$id_attribute_group}">
{foreach from=$group.attributes key=id_attribute item=group_attribute}
<li class="input-container float-xs-left">
<label>
<input class="input-radio" type="radio" data-product-attribute="{$id_attribute_group}"
name="group[{$id_attribute_group}]" value="{$id_attribute}" {if $group_attribute.selected} checked="checked"
{/if}>
<span class="radio-label">{$group_attribute.name}</span>
</label>
</li>
{/foreach}
</ul>
{/if}
</div>
{/if}
{/foreach}
</div>
</div>