optimisation of the frontoffice. Product list is ten times faster. But only the default product sale element can be added to cart.
This commit is contained in:
committed by
Julien Chanseaume
parent
00baae6da0
commit
b4d0d085fe
@@ -18,7 +18,7 @@
|
||||
{/if}
|
||||
{/if}
|
||||
|
||||
{loop name="cat-parent-$level" type="category" parent=$parent need_count_child=1}
|
||||
{loop name="cat-parent-$level" type="category" parent=$parent need_count_child=1 not_empty="1"}
|
||||
|
||||
{if $CHILD_COUNT> 0}
|
||||
<li><a href="{$URL}#collapse{$ID}" class="accordion-toggle collapsed" data-toggle="collapse" data-parent="#collapse{$ID}">{$TITLE}</a>
|
||||
|
||||
@@ -5,15 +5,6 @@
|
||||
{assign var="product_id" value=$ID}
|
||||
{/if}
|
||||
<article itemscope itemtype="http://schema.org/Product">
|
||||
<!-- Use the meta tag to specify content that is not visible on the page in any way -->
|
||||
{loop name="brand" type="brand" product=$product_id }
|
||||
<meta itemprop="brand" content="{$TITLE}">
|
||||
{/loop}
|
||||
{loop name="isbn.feature" type="feature" product=$product_id title="isbn"}
|
||||
{loop name="isbn.value" type="feature_value" feature=$ID product=$product_id}
|
||||
<meta itemprop="productID" content="isbn:{$TITLE}">
|
||||
{/loop}
|
||||
{/loop}
|
||||
|
||||
<a href="{$URL}" itemprop="url" tabindex="-1" class="product-image{if $hasQuickView == true} product-quickview{/if}">
|
||||
{loop name="product_thumbnail" type="image" product=$product_id width="{$width}" height="{$height}" resize_mode="borders" limit="1"}
|
||||
@@ -26,7 +17,7 @@
|
||||
</a>
|
||||
|
||||
<div class="product-info">
|
||||
<h3 class="name"><a href="{$URL}"><span itemprop="name">{$productTitle}</span></a></h3>
|
||||
<h2 class="name"><a href="{$URL}"><span itemprop="name">{$productTitle}</span></a></h2>
|
||||
{if $hasDescription}
|
||||
<div class="description" itemprop="description">
|
||||
<p>{$DESCRIPTION nofilter}</p>
|
||||
@@ -34,20 +25,15 @@
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
{* Default value *}
|
||||
{* Stock *}
|
||||
{assign var="current_stock_content" value = "in_stock"}
|
||||
{assign var="current_stock_href" value = "http://schema.org/InStock"}
|
||||
|
||||
{loop name="stock_meta" type="product_sale_elements" product=$product_id}
|
||||
{loop name="combi_meta" type="attribute_combination" product_sale_elements="$ID"}
|
||||
{if $LOOP_COUNT == 0}
|
||||
{if $QUANTITY == 0}
|
||||
{assign var="current_stock_content" value = "out_stock"}
|
||||
{assign var="current_stock_href" value = "http://schema.org/OutOfStock"}
|
||||
{/if}
|
||||
{/if}
|
||||
{/loop}
|
||||
{/loop}
|
||||
{if {config key="check-available-stock"} != 0}
|
||||
{if $QUANTITY == 0}
|
||||
{assign var="current_stock_content" value = "out_stock"}
|
||||
{assign var="current_stock_href" value = "http://schema.org/OutOfStock"}
|
||||
{/if}
|
||||
{/if}
|
||||
|
||||
<div class="product-price">
|
||||
<div class="price-container" itemprop="offers" itemscope itemtype="http://schema.org/Offer">
|
||||
@@ -55,96 +41,65 @@
|
||||
<meta itemprop="itemCondition" itemscope itemtype="http://schema.org/NewCondition"> <!-- List of condition : NewCondition, DamagedCondition, UsedCondition, RefurbishedCondition -->
|
||||
<meta itemprop="priceCurrency" content="{currency attr="symbol"}"> <!-- List of currency : The currency used to describe the product price, in three-letter ISO format. -->
|
||||
<link itemprop="availability" href="{$current_stock_href}" content="{$current_stock_content}" />
|
||||
<!-- List of availibility :
|
||||
out_of_stock : http://schema.org/OutOfStock
|
||||
in_stock : http://schema.org/InStock
|
||||
instore_only : http://schema.org/InStoreOnly
|
||||
preorder : http://schema.org/PreOrder
|
||||
online_only : http://schema.org/OnlineOnly
|
||||
-->
|
||||
|
||||
{if $IS_PROMO }
|
||||
{loop name="productSaleElements_promo" type="product_sale_elements" product=$product_id limit="1" order="min_price"}
|
||||
{assign var="default_product_sale_elements" value=$ID}
|
||||
<span class="special-price"><span itemprop="price" class="price-label">{intl l="Special Price:"} </span><span class="price">{format_number number=$TAXED_PROMO_PRICE} {currency attr="symbol"}</span></span>
|
||||
<span class="old-price"><span class="price-label">{intl l="Regular Price:"} </span><span class="price">{format_number number=$TAXED_PRICE} {currency attr="symbol"}</span></span>
|
||||
{/loop}
|
||||
<span class="special-price"><span itemprop="price" class="price-label">{intl l="Special Price:"} </span><span class="price">{format_number number=$TAXED_PROMO_PRICE} {currency attr="symbol"}</span></span>
|
||||
<span class="old-price"><span class="price-label">{intl l="Regular Price:"} </span><span class="price">{format_number number=$TAXED_PRICE} {currency attr="symbol"}</span></span>
|
||||
{else}
|
||||
<span class="regular-price"><span itemprop="price" class="price">{format_number number=$BEST_TAXED_PRICE} {currency attr="symbol"}</span></span>
|
||||
{/if}
|
||||
|
||||
</div>
|
||||
|
||||
{if $hasBtn == true}
|
||||
{form name="thelia.cart.add" }
|
||||
<form id="form-product-details{$product_id}" action="{url path="/cart/add" }" method="post" class="form-product">
|
||||
{form_hidden_fields form=$form}
|
||||
<input type="hidden" name="view" value="product">
|
||||
<input type="hidden" name="product_id" value="{$product_id}">
|
||||
{if $hasSubmit == true}
|
||||
{form name="thelia.cart.add" }
|
||||
<form id="form-product-details{$product_id}" action="{url path="/cart/add" }" method="post" class="form-product">
|
||||
{form_hidden_fields form=$form}
|
||||
<input type="hidden" name="view" value="product">
|
||||
<input type="hidden" name="product_id" value="{$product_id}">
|
||||
|
||||
{if $form_error}<div class="alert alert-error">{$form_error_message}</div>{/if}
|
||||
{if $form_error}<div class="alert alert-error">{$form_error_message}</div>{/if}
|
||||
|
||||
{form_field form=$form field='product_sale_elements_id'}
|
||||
{if $default_product_sale_elements }
|
||||
<input type="hidden" name="{$name}" value="{$default_product_sale_elements}" {$attr}>
|
||||
{else}
|
||||
{loop name="productSaleElements_promo" type="product_sale_elements" product="{$product_id}" limit="1"}
|
||||
<input type="hidden" name="{$name}" value="{$ID}" {$attr}>
|
||||
{/loop}
|
||||
{/if}
|
||||
{/form_field}
|
||||
{form_field form=$form field="product"}
|
||||
<input id="{$label_attr.for}" type="hidden" name="{$name}" value="{$product_id}" {$attr} >
|
||||
{/form_field}
|
||||
{form_field form=$form field='product_sale_elements_id'}
|
||||
<input type="hidden" name="{$name}" value="{$PRODUCT_SALE_ELEMENT}" {$attr}>
|
||||
{/form_field}
|
||||
{form_field form=$form field="product"}
|
||||
<input id="{$label_attr.for}" type="hidden" name="{$name}" value="{$product_id}" {$attr} >
|
||||
{/form_field}
|
||||
|
||||
<fieldset class="product-options hide">
|
||||
{ifloop rel="stock"}
|
||||
<div class="option">
|
||||
<label for="options" class="option-heading">Options</label>
|
||||
<div class="option-content">
|
||||
<select name="options" class="form-control">
|
||||
{loop name="stock" type="product_sale_elements" product="$product_id" order="min_price"}
|
||||
{if $LOOP_TOTAL == 1}
|
||||
{assign var="hasSubmit" value = true}
|
||||
<fieldset class="product-cart form-inline">
|
||||
{form_field form=$form field='quantity'}
|
||||
<div class="form-group group-qty hide {if $error}has-error{elseif $value != "" && !$error}has-success{/if}">
|
||||
<label for="{$label_attr.for}">{$label}</label>
|
||||
<input type="number" name="{$name}" id="{$label_attr.for}" class="form-control" value="{$value|default:1}" min="0" required>
|
||||
{if $error }
|
||||
<span class="help-block"><i class="icon-remove"></i> {$message}</span>
|
||||
{elseif $value != "" && !$error}
|
||||
<span class="help-block"><i class="icon-ok"></i></span>
|
||||
{/if}
|
||||
{loop name="combi" type="attribute_combination" product_sale_elements="$product_id" order="alpha"}
|
||||
<option value="{$ID}" data-quantity="{$QUANTITY}" data-price="{format_number number="{$BEST_TAXED_PRICE}"} {currency attr="symbol"}" data-old-price="{format_number number="{$TAXED_PRICE}"} {currency attr="symbol"}">{$ATTRIBUTE_AVAILABILITY_TITLE}</small></option>
|
||||
{/loop}
|
||||
{/loop}
|
||||
</select>
|
||||
</div>
|
||||
{/form_field}
|
||||
|
||||
<div class="form-group group-btn">
|
||||
|
||||
</div>
|
||||
<div>
|
||||
<div class="product-btn">
|
||||
<button type="submit" class="btn btn-cart">{intl l="Add to cart"}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/ifloop}
|
||||
</fieldset>
|
||||
<fieldset class="product-cart form-inline">
|
||||
{form_field form=$form field='quantity'}
|
||||
<div class="form-group group-qty hide {if $error}has-error{elseif $value != "" && !$error}has-success{/if}">
|
||||
<label for="{$label_attr.for}">{$label}</label>
|
||||
<input type="number" name="{$name}" id="{$label_attr.for}" class="form-control" value="{$value|default:1}" min="0" required>
|
||||
{if $error }
|
||||
<span class="help-block"><i class="icon-remove"></i> {$message}</span>
|
||||
{elseif $value != "" && !$error}
|
||||
<span class="help-block"><i class="icon-ok"></i></span>
|
||||
{/if}
|
||||
</div>
|
||||
{/form_field}
|
||||
|
||||
<div class="form-group group-btn">
|
||||
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
{/form}
|
||||
{else}
|
||||
<div>
|
||||
<div class="product-btn">
|
||||
|
||||
{if $hasSubmit == true}
|
||||
<button type="submit" class="btn btn-cart">{intl l="Add to cart"}</button>
|
||||
{else}
|
||||
<a href="{$URL}" class="btn btn-cart">{intl l="View product"}</a>
|
||||
{/if}
|
||||
|
||||
<a href="{$URL}" class="btn btn-cart">{intl l="View product"}</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</fieldset>
|
||||
</form>
|
||||
{/form}
|
||||
{/if}
|
||||
{/if}
|
||||
</div>
|
||||
</article><!-- /product -->
|
||||
|
||||
Reference in New Issue
Block a user