THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline

#1 Boucle tag module

(17-06-2019 08:22:43)


Bonjour, cette boucle tag remonte les tags pour tous les produits,
Peux-t-elle remonter les tags concernant que les tags du produit concerné
Actuellement cette boucle ajoute les tags aux autres tags de tous les produits pour tous les produits bien que certains produits soient vide de tag

<div class="block_content" style="">
	{loop type="tags" name="tags-list" source={$product} order='alpha'}
	<ul>							
	{loop name="info-tags-list" type="product" id=$SOURCE_ID}
	<li>
		<a href="{$url|replace:'__ID__':$ID}">{$TAG}</a>
	</li>
	{/loop}
	</ul>
       {/loop}	
</div>

Last edited by stephst84 (17-06-2019 08:23:48)

Offline

#2 Re: Boucle tag module

(17-06-2019 08:36:40)


Bonjour,

Tu souhaites retrouver pour chaque produit les tags associés c'est bien cela ?

Dans ce cas il faut utilisé un paramètre supplémentaire de la boucle produit introduit par le module Tags? Tu trouveras un exemple dans la documentation du module.

Offline

#3 Re: Boucle tag module

(17-06-2019 11:27:49)


stephst84 wrote:

Actuellement cette boucle ajoute les tags aux autres tags de tous les produits pour tous les produits bien que certains produits soient vide de tag

j'ai lu et essayé différentes combinaisons d'après l'aide sans obtenir le ou les tags associés au produit demandé

Offline

#4 Re: Boucle tag module

(17-06-2019 14:03:23)


Pour récupérer les tags associés au produit dont l'ID est $PRODUCT_ID :

{loop type="tags" name="tags-list" source='product' source_id=$PRODUCT_ID order='alpha'}

OpenStudio Toulouse

Offline

#5 Re: Boucle tag module

(17-06-2019 15:21:42)


C'est bizarre parce que déjà utilisé dans les combinaisons testées mais toujours le même affichage
     

Pour récupérer les tags associés au produit dont l'ID est $PRODUCT_ID :

{loop type="tags" name="tags-list" source='product' source_id=$PRODUCT_ID order='alpha'}

cette boucle est placée dans la page product.html

ajoute les tags aux autres tags de tous les produits pour tous les produits bien que certains produits soient vide de tag

<div id="tags_block_left" class="block tags_block">
	<p class="title_block">
	Tags : 
	</p>
	<div class="block_content" style="">
		{loop type="tags" name="tags-list" source='product' source_id=$PRODUCT_ID order='alpha'}
		<ul>							
		{loop name="info-tags-list" type="product" id=$SOURCE_ID}
			<li>
			<a href="{$url|replace:'__ID__':$ID}">{$TAG}</a>
			</li>
		{/loop}	
		</ul>
		{/loop}	
	</div>
</div>

Offline

#6 Re: Boucle tag module

(17-06-2019 22:48:38)


$PRODUCT_ID, c'est pour l'exemple... Sur une page produit, la variable Smarty qui contient l'ID du produit est $product_id, ou, dans la boucle produit, $ID.


OpenStudio Toulouse

Offline

#7 Re: Boucle tag module

(18-06-2019 10:58:15)


La boucle complète qui extrait juste les tags de votre produit
avec les arguments  current="yes" currency="1" dans la loop product

<div id="tags_block_left" class="block tags_block">
	<p class="title_block">Tags : </p>
	<div class="block_content" style="">
	{loop type="tags" name="tags-list" tag=$PRODUCT_ID order='alpha'}
		<ul>							
		{loop name="info-tags-list" type="product" id=$SOURCE_ID current="yes" currency="1"}
			<li>
				<a href="{$url}">{$TAG}</a>
			</li>
		{/loop}
		</ul>
	{/loop}
	</div>
</div>

si cela peut servir à d'autres à insérer dans votre page product.html ou ailleurs si cela concerne category... à adapter en fonction de votre page

Offline

#8 Re: Boucle tag module

(18-06-2019 14:18:13)


Je ne vois pas comment ça peut marcher : current="yes" et id=$SOURCE_ID ne sont pas compatibles. Et "currency" permet juste de remonter un prix dans la devise indiquée. Je ne comprends pas non plus le sens de tag=$PRODUCT_ID (à moins que tu aies mis des ID produits dans les tags ?).

Je le répète une nouvelle fois, pour afficher tous les tags du produit qui a l'ID 1234, on va utiliser :

{loop type="tags" name="tags-list" source="product" source_id=1234 order="alpha"}
    {$TAG}<br>
{/loop}

C'est aussi simple que ça.


OpenStudio Toulouse

Offline

#9 Re: Boucle tag module

(18-06-2019 15:55:01)


Je veux te croire qu'il doit fonctionner comme tu le décris mais actuellement il fonctionne étrangement comme cela
Le code où il est inséré toujours page product.html
et je viens de re-tester

avec currency (affichage des tags du produit concerné, si le produit demandé est sans tag, il y a affichage seulement du mot TAG)

et

sans (affichage de tous les tags de tous les produits que les produits soient taggués ou  non )

<form id="form-product-details" action="{url path="/cart/add" }" method="post" class="form-product">
                    {form_hidden_fields}
                    <input type="hidden" name="view" value="product">
                    <input type="hidden" name="product_id" value="{$ID}">
                    {form_field field="append"}
                        <input type="hidden" name="{$name}" value="1">
                    {/form_field}
                    {form_field form=$form field="success_url"}
                        <input type="hidden" name="{$name}" value="{url path='/cart'}">
                    {/form_field}

                    {if $form_error}<div class="alert alert-error">{$form_error_message}</div>{/if}

                    {form_field field="product"}
                        <input id="{$label_attr.for}" type="hidden" name="{$name}" value="{$ID}" {$attr} >
                    {/form_field}

                    {* pse *}
                    {form_field form=$form field='product_sale_elements_id'}
					{*loop name="order_pse_quantity" type="product_sale_elements" product="{$ID}" order="quantity_reverse" *}
						<input id="pse-id" class="pse-id" type="hidden" name="{$name}" value="{$PRODUCT_SALE_ELEMENT}" {$attr} >
					{*/loop*}
					{/form_field}

                    {if $pse_count > 1}
                        {* We have more than 1 combination: custom form *}
                        <fieldset id="pse-options" class="product-options">
                            {loop name="attributes" type="attribute" product="$product_id" order="alpha"}
                            <div class="option option-option">
                                <label for="option-{$ID}" class="option-heading">{$TITLE}</label>
                                <div class="option-content clearfix">
                                    <select id="option-{$ID}" name="option-{$ID}" class="form-control input-sm pse-option" data-attribute="{$ID}"{if $QUANTITY <= 0}disabled{/if}></select>
                                </div>
                            </div>
                            {/loop}
                            <div class="option option-fallback">
                                <label for="option-fallback" class="option-heading">{intl l="Options"}</label>
                                <div class="option-content clearfix">
                                    <select id="option-fallback" name="option-fallback" class="form-control input-sm pse-option pse-fallback" data-attribute="0"></select>
                                </div>
                            </div>
                        </fieldset>
                    {/if}

					
				{loop type="sale" name="product-sale-info" product={$ID} active="1"}
                    <div class="product-promo">
                        <p class="sale-label">{$SALE_LABEL}</p>
                        <p class="sale-saving"> {intl l="Save %amount%sign on this product" amount={$PRICE_OFFSET_VALUE} sign={$PRICE_OFFSET_SYMBOL}}</p>
                        {if $HAS_END_DATE}
                            <p class="sale-period">{intl l="This offer is valid until %date" date={format_date date=$END_DATE output="date"}}</p>
                        {/if}
                    </div>
                {/loop}

                <div class="product-price" itemprop="offers" itemscope itemtype="http://schema.org/Offer">
                    <!-- <div class="availability">
                        <span class="availibity-label sr-only">{intl l="Availability"}: </span>
                        <span itemprop="availability" href="{$current_stock_href}" class="" id="pse-availability">
                            <span class="in">{intl l='In Stock'}</span>
                            <span class="out">{intl l='Out of Stock'}</span>
                        </span>
                    </div> -->

                    <div class="price-container">
                        {loop type="category" name="category_tag" id=$DEFAULT_CATEGORY}
                            <meta itemprop="category" content="{$TITLE}">
                        {/loop}
                        {* List of condition : NewCondition, DamagedCondition, UsedCondition, RefurbishedCondition *}
                        <meta itemprop="itemCondition" itemtype="http://schema.org/ItemCondition" content="NewCondition">
                        {* List of currency : The currency used to describe the product price, in three-letter ISO format. *}
                        <meta itemprop="priceCurrency" content="{currency attr="code"}">

                        <span id="pse-promo">
                            <span class="special-price"><span class="price-label">{intl l="Special Price:"} </span><span id="pse-price" class="price">{format_money number=$TAXED_PROMO_PRICE symbol={currency attr="symbol"}}</span></span>
                            <meta itemprop="price" content="{$TAXED_PROMO_PRICE}">
                            {if $SHOW_ORIGINAL_PRICE}
                                <span class="old-price"><span class="price-label">{intl l="Regular Price:"} </span><span id="pse-price-old" class="price">{format_money number=$TAXED_PRICE}</span></span>
                            {/if}
                        </span>
                    </div>

                    <div id="pse-validity" class="validity alert alert-warning" style="display: none;" >
                        {intl l="Sorry but this combination does not exist."}
                    </div>
                </div>

                    <fieldset class="product-cart form-inline">
                        {form_field field='quantity'}
                        <div class="form-group group-qty {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="1" required>
                            {if $error }
                                <span class="help-block">{$message}</span>
                            {elseif $value != "" && !$error}
                                <span class="help-block"><i class="fa fa-check"></i></span>
                            {/if}
                        </div>
                        {/form_field}

                        <div class="form-group group-btn">
							<button id="pse-submit" type="submit" class="btn btn_add_to_cart btn-primary">{intl l="Add to cart"}</button>                           
                        </div>
                    </fieldset>
					{if $POSTSCRIPTUM}
					<div class="short-description">
                        <p>{$POSTSCRIPTUM nofilter}</p>
                    </div>
					{/if}
					{if $CHAPO}
					<div class="short-description">
						<p>{$CHAPO nofilter}</p>
					</div>
					{/if}

					<div id="tags_block_left" class="block tags_block">
						<p class="title_block">
						Tags : 
						</p>
						<div class="block_content" style="">
						{loop type="tags" name="tags-list" tag=$PRODUCT_ID order='alpha'}
							<ul>							
							{loop name="info-tags-list" type="product" id=$SOURCE_ID current="yes" currency="1"}
								<li>
									<a href="{$url}">{$TAG}</a>
								</li>
							{/loop}
							</ul>
							{/loop}
							</div>
					</div>
	
                </form>
 {/form}

Offline

#10 Re: Boucle tag module

(18-06-2019 16:09:43)


Je ne suis pas certain que tu comprenne ce que tu fais. As-tu lu la doc du module Tags ?


OpenStudio Toulouse

Offline

#11 Re: Boucle tag module

(18-06-2019 16:35:53)


bah oui testé différentes combinaisons, je comprends bien le raisonnement, mais il ne veut point marcher comme tu le précises
de plus avec le dernier code que tu mentionnes pour moi j'ai indiqué l'id=12 car il contenait des tags, il indique les tags pour tous les produits taggués ou non
je joins le code complet de la page product.html

par contre peut-être une influence sur une autre partie d'un template, le core  ou autre chose ??

Si tu remarques une erreur qui génère ce dysfonctionnement, signale le
merci encore

{extends file="layout.tpl"}

{block name="init"}
    {$product_id={product attr="id"}}
    {$pse_count=1}
    {$product_virtual={product attr="virtual"}}
    {$check_availability={config key="check-available-stock" default="1"}}
{/block}

{* Body Class *}
{block name="body-class"}page-product{/block}

{* Page Title *}
{block name='no-return-functions' append}
    {loop name="product.seo.title" type="product" id=$product_id limit="1" with_prev_next_info="1"}
    {$page_title = $META_TITLE}
    {/loop}
{/block}

{* Meta *}
{block name="meta"}
    {loop name="product.seo.meta" type="product" id=$product_id limit="1" with_prev_next_info="1"}
    {include file="includes/meta-seo.html"}
    {/loop}
{/block}

{* Breadcrumb *}
{block name='no-return-functions' append}
    {$breadcrumbs = []}
    {loop type="product" name="product_breadcrumb" id=$product_id limit="1" with_prev_next_info="1"}
        {loop name="category_path" type="category-path" category={$DEFAULT_CATEGORY}}
            {$breadcrumbs[] = ['title' => {$TITLE}, 'url'=> {$URL nofilter}]}
        {/loop}
        {$breadcrumbs[] = ['title' => {$TITLE}, 'url'=> {$URL nofilter}]}
    {/loop}
{/block}

{* Content *}
{block name="main-content"}
    {if $product_id}
    <div class="main">
        {loop name="product.details" type="product" id=$product_id limit="1" with_prev_next_info="1" with_prev_next_visible="1"}
        <article id="product" class="col-main row" role="main" itemscope itemtype="http://schema.org/Product">

            {$pse_count=$PSE_COUNT}

            {* Use the meta tag to specify content that is not visible on the page in any way *}
            {loop name="brand.feature" type="brand" product={$ID}}
                <meta itemprop="brand" content="{$TITLE}">
            {/loop}

            {* Add custom feature if needed
            {loop name="isbn.feature" type="feature" product={$ID} title="isbn"}
                {loop name="isbn.value" type="feature_value" feature={$ID} product=$product_id}
                    <meta itemprop="productID" content="isbn:{$TITLE}">
                {/loop}
            {/loop}
            *}

            {hook name="product.top" product={$ID}}

            {ifhook rel="product.gallery"}
               {hook name="product.gallery" product={$ID}}
            {/ifhook}
            {elsehook rel="product.gallery"}
            <section id="product-gallery" class="col-sm-6">
                {ifloop rel="image.main"}
                <figure class="product-image">
                    {loop type="image" name="image.main" product={$ID} width="626" height="626" limit="1"}
                        <img src="{$IMAGE_URL nofilter}" alt="{$TITLE}" class="img-responsive" itemprop="image" data-toggle="magnify">
                    {/loop}
                </figure>
                {/ifloop}

                {ifloop rel="image.carousel"}
                <div id="product-thumbnails" class="carousel slide product-thumbnail" style="position:relative;">
                    <div class="carousel-inner">
                        <div class="item active">
                            <ul class="list-inline">
                                {loop name="image.carousel" type="image" product={$ID} width="626" height="626" limit="5"}
                                <li>
                                    <a href="{$IMAGE_URL nofilter}" class="thumbnail {if $LOOP_COUNT == 1}active{/if}">
                                        {loop type="image" name="image.thumbs" id={$ID} product="$OBJECT_ID" width="50" height="50"}
                                            <img src="{$IMAGE_URL nofilter}" alt="{$TITLE}">
                                        {/loop}
                                    </a>
                                </li>
                                {/loop}
                            </ul>
                        </div>
                        {ifloop rel="image.carouselsup"}
                        <div class="item">
                            <ul class="list-inline">
                                {loop name="image.carouselsup" type="image" product={$ID} width="560" height="445" resize_mode="borders" offset="5"}
                                    <li>
                                        <a href="{$IMAGE_URL nofilter}" class="thumbnail">
                                            {loop type="image" name="image.thumbssup" id={$ID} product="$OBJECT_ID" width="50" height="50"}
                                                <img src="{$IMAGE_URL nofilter}" alt="{$TITLE}">
                                            {/loop}
                                        </a>
                                    </li>
                                {/loop}
                            </ul>
                        </div>
                        {/ifloop}
                    </div>
                    {ifloop rel="image.carouselsup"}
                        <a class="left carousel-control" href="#product-thumbnails" data-slide="prev"><i class="fa fa-caret-left"></i></a>
                        <a class="right carousel-control" href="#product-thumbnails" data-slide="next"><i class="fa fa-caret-right"></i></a>
                    {/ifloop}
                </div>
                {/ifloop}
            </section>
            {/elsehook}

            <section id="product-details" class="col-sm-6">
                {hook name="product.details-top" product={$ID}}

                <div class="product-info">

				<h1 class="name"><span itemprop="name">{$TITLE}</span><span id="pse-name" class="pse-name"></span></h1>
				    {loop name="brand_info" type="brand" product={$ID} limit="1"}
                    {if $TITLE}
				    <div class="product-info-brand">
						<p class="title_block">Artiste : <span itemprop="brand"><a href="{$URL nofilter}" title="{intl l="More information about this brand"}">{$TITLE}</a></span></p>
				    </div>
				    {/if}
                    {/loop}
                    <div id="product-content" class="product-content">
					
					<div class="availability-web">
					{if $REF}<div class="product-number"><span itemprop="sku" class="sku">{intl l='Ref.'}: <span id="pse-ref">{$REF}</span></span></div>{/if}			
					<!-- <div class="availability">  -->
					<div class="availability-msg"> 
                        <span class="availibity-label sr-only">{intl l="Availability"}: </span>
                        <div class="availability">
						<!-- <span itemprop="availability" href="{$current_stock_href}" class="" id="pse-availability"> -->
						<span itemprop="availability-msg" href="{$current_stock_href}" class="" id="pse-availability">
						<!-- <span itemprop="availability" href="{$current_stock_href}" class="" id="pse-availability">-->
							{*if $STOCK > 0*}
								<span class="in">{intl l='In Stock'}</span>
							{*else*}
                            {*$errorStock="TRUE"*}	
							<span class="out" style="color: red;">{intl l='Out of Stock'}</span>
							<span class="options-out">{intl l='Options out of stock'}</span>
							{*/if*}
                        </span>
						</div>
                    </div>				
					</div>			
                </div>


                {form name="thelia.cart.add" }
                <form id="form-product-details" action="{url path="/cart/add" }" method="post" class="form-product">
                    {form_hidden_fields}
                    <input type="hidden" name="view" value="product">
                    <input type="hidden" name="product_id" value="{$ID}">
                    {form_field field="append"}
                        <input type="hidden" name="{$name}" value="1">
                    {/form_field}
                    {form_field form=$form field="success_url"}
                        <input type="hidden" name="{$name}" value="{url path='/cart'}">
                    {/form_field}

                    {if $form_error}<div class="alert alert-error">{$form_error_message}</div>{/if}

                    {form_field field="product"}
                        <input id="{$label_attr.for}" type="hidden" name="{$name}" value="{$ID}" {$attr} >
                    {/form_field}

                    {* pse *}
                    {form_field form=$form field='product_sale_elements_id'}
					{*loop name="order_pse_quantity" type="product_sale_elements" product="{$ID}" order="quantity_reverse" *}
						<input id="pse-id" class="pse-id" type="hidden" name="{$name}" value="{$PRODUCT_SALE_ELEMENT}" {$attr} >
					{*/loop*}
					{/form_field}

                    {if $pse_count > 1}
                        {* We have more than 1 combination: custom form *}
                        <fieldset id="pse-options" class="product-options">
                            {loop name="attributes" type="attribute" product="$product_id" order="alpha"}
                            <div class="option option-option">
                                <label for="option-{$ID}" class="option-heading">{$TITLE}</label>
                                <div class="option-content clearfix">
                                    <select id="option-{$ID}" name="option-{$ID}" class="form-control input-sm pse-option" data-attribute="{$ID}"{if $QUANTITY <= 0}disabled{/if}></select>
                                </div>
                            </div>
                            {/loop}
                            <div class="option option-fallback">
                                <label for="option-fallback" class="option-heading">{intl l="Options"}</label>
                                <div class="option-content clearfix">
                                    <select id="option-fallback" name="option-fallback" class="form-control input-sm pse-option pse-fallback" data-attribute="0"></select>
                                </div>
                            </div>
                        </fieldset>
                    {/if}

					
				{loop type="sale" name="product-sale-info" product={$ID} active="1"}
                    <div class="product-promo">
                        <p class="sale-label">{$SALE_LABEL}</p>
                        <p class="sale-saving"> {intl l="Save %amount%sign on this product" amount={$PRICE_OFFSET_VALUE} sign={$PRICE_OFFSET_SYMBOL}}</p>
                        {if $HAS_END_DATE}
                            <p class="sale-period">{intl l="This offer is valid until %date" date={format_date date=$END_DATE output="date"}}</p>
                        {/if}
                    </div>
                {/loop}

                <div class="product-price" itemprop="offers" itemscope itemtype="http://schema.org/Offer">
                    <div class="price-container">
                        {loop type="category" name="category_tag" id=$DEFAULT_CATEGORY}
                            <meta itemprop="category" content="{$TITLE}">
                        {/loop}
                        {* List of condition : NewCondition, DamagedCondition, UsedCondition, RefurbishedCondition *}
                        <meta itemprop="itemCondition" itemtype="http://schema.org/ItemCondition" content="NewCondition">
                        {* List of currency : The currency used to describe the product price, in three-letter ISO format. *}
                        <meta itemprop="priceCurrency" content="{currency attr="code"}">

                        <span id="pse-promo">
                            <span class="special-price"><span class="price-label">{intl l="Special Price:"} </span><span id="pse-price" class="price">{format_money number=$TAXED_PROMO_PRICE symbol={currency attr="symbol"}}</span></span>
                            <meta itemprop="price" content="{$TAXED_PROMO_PRICE}">
                            {if $SHOW_ORIGINAL_PRICE}
                                <span class="old-price"><span class="price-label">{intl l="Regular Price:"} </span><span id="pse-price-old" class="price">{format_money number=$TAXED_PRICE}</span></span>
                            {/if}
                        </span>
                    </div>

                    <div id="pse-validity" class="validity alert alert-warning" style="display: none;" >
                        {intl l="Sorry but this combination does not exist."}
                    </div>
                </div>
					
                    <fieldset class="product-cart form-inline">
                        {form_field field='quantity'}
                        <div class="form-group group-qty {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="1" required>
                            {if $error }
                                <span class="help-block">{$message}</span>
                            {elseif $value != "" && !$error}
                                <span class="help-block"><i class="fa fa-check"></i></span>
                            {/if}
                        </div>
                        {/form_field}

                        <div class="form-group group-btn">
				<button id="pse-submit" type="submit" class="btn btn_add_to_cart btn-primary">{intl l="Add to cart"}</button>                           		  
                        </div>
                    </fieldset>
					{if $POSTSCRIPTUM}
					<div class="short-description">
                        <p>{$POSTSCRIPTUM nofilter}</p>
                    </div>
					{/if}
					{if $CHAPO}
					<div class="short-description">
						<p>{$CHAPO nofilter}</p>
					</div>
					{/if}
<!-- ########### Zone de tag ########### -->
<div id="tags_block_left" class="block tags_block">
						<p class="title_block">
						Tags : 
						</p>
						<div class="block_content" style="">
						{loop type="tags" name="tags-list" tag=$PRODUCT_ID order='alpha'}
							<ul>							
							{loop name="info-tags-list" type="product" id=$SOURCE_ID current="yes" currency="1"}
								<li>
									<a href="{$url}">{$TAG}</a>
								</li>
							{/loop}
							</ul>
							{/loop}
							</div>
					</div>	
                </form>
                {/form}
                {hook name="product.details-bottom" product={$ID}}
				</div>
				</div>
            </section>

            {strip}
                {capture "additional"}
                    {ifloop rel="feature_info"}
                        <ul>
                            {loop name="feature_info" type="feature" product={$ID}}
                            {ifloop rel="feature_value_info"}
                                <li class="detail-item">
                                    <div class="detail-item-label">{$TITLE} : </div>
                                    {loop name="feature_value_info" type="feature_value" feature={$ID} product=$product_id}
                                        {if $LOOP_COUNT > 1}, {else} {/if}
                                        <div class="detail-item-value">{if $IS_FREE_TEXT == 1}{$FREE_TEXT_VALUE}{else}{$TITLE}{/if}</div>
                                    {/loop}
                                </li>
                            {/ifloop}
                            {/loop}
                        </ul>
                    {/ifloop}
                {/capture}
            {/strip}

            {strip}
                {capture "brand_info"}
                    {loop name="brand_info" type="brand" product={$ID} limit="1"}
                        <p><strong><a href="{$URL nofilter}">{$TITLE}</a></strong></p>

                        {loop name="brand.image" type="image" source="brand" id={$LOGO_IMAGE_ID} width=218 height=146 resize_mode="borders"}
                            <p><a href="{$URL nofilter}"><img itemprop="image" src="{$IMAGE_URL nofilter}" alt="{$TITLE}"></a></p>
                        {/loop}

                        {if $CHAPO}
                            <div class="chapo">
                                {$CHAPO}
                            </div>
                        {/if}
                        {if $DESCRIPTION}
                            <div class="description">
                                {$DESCRIPTION nofilter}
                            </div>
                        {/if}
                        {if $POSTSCRIPTUM}
                            <small class="postscriptum">
                                {$POSTSCRIPTUM}
                            </small>
                        {/if}
                    {/loop}
                {/capture}
            {/strip}

            {strip}
                {capture "document"}
                    {ifloop rel="document"}
                    <ul>
                    {loop name="document" type="document" product=$ID visible="yes"}
                        <li>
                            <a href="{$DOCUMENT_URL}" title="{$TITLE}" target="_blank">{$TITLE}</a>
                        </li>
                    {/loop}
                    </ul>
                    {/ifloop}
                {/capture}
            {/strip}

            <section id="product-tabs" class="col-sm-12">
                {hookblock name="product.additional" product=$product_id fields="id,class,title,content"}
                <ul class="nav nav-tabs" role="tablist">
                    <li class="active" role="presentation"><a id="tab1" href="#description" data-toggle="tab" role="tab">{intl l="Description"}</a></li>
                    {if $smarty.capture.additional ne ""}<li role="presentation"><a id="tab2" href="#additional" data-toggle="tab" role="tab">{intl l="Additional Info"}</a></li>{/if}
                    {if $smarty.capture.brand_info ne ""}<li role="presentation"><a id="tab3" href="#brand_info" data-toggle="tab" role="tab">{intl l="Brand information"}</a></li>{/if}
                    {if $smarty.capture.document ne ""}<li role="presentation"><a id="tab4" href="#document" data-toggle="tab" role="tab">{intl l="Documents"}</a></li>{/if}
                    {forhook rel="product.additional"}
                        <li role="presentation"><a id="tab{$id}" href="#{$id}" data-toggle="tab" role="tab">{$title}</a></li>
                    {/forhook}
                </ul>
                <div class="tab-content">
                    <div class="tab-pane active in" id="description" itemprop="description" role="tabpanel" aria-labelledby="tab1">
                        <p>{$DESCRIPTION|default:'N/A' nofilter}</p>
                    </div>
                    {if $smarty.capture.additional ne ""}
                        <div class="tab-pane" id="additional" role="tabpanel" aria-labelledby="tab2">
                            {$smarty.capture.additional nofilter}
                        </div>
                    {/if}
                    {if $smarty.capture.brand_info ne ""}
                        <div class="tab-pane" id="brand_info" role="tabpanel" aria-labelledby="tab3">
                            {$smarty.capture.brand_info nofilter}
                        </div>
                    {/if}
                    {if $smarty.capture.document ne ""}
                        <div class="tab-pane" id="document" role="tabpanel" aria-labelledby="tab4">
                            {$smarty.capture.document nofilter}
                        </div>
                    {/if}
                    {forhook rel="product.additional"}
                    <div class="tab-pane" id="{$id}" role="tabpanel" aria-labelledby="tab{$id}">
                        {$content nofilter}
                    </div>
                    {/forhook}
                </div>
                {/hookblock}
            </section>
            {hook name="product.bottom" product={$ID}}

{* javascript configuration to display pse *}
{$pse=[]}
{$combination_label=[]}
{$combination_values=[]}
{loop name="pse" type="product_sale_elements" product=$product_id}
    {$pse[$ID]=["id" => $ID, "isDefault" => $IS_DEFAULT, "isPromo" => $IS_PROMO, "isNew" => $IS_NEW, "ref" => {$REF}, "ean" => {$EAN}, "quantity" => {$QUANTITY}, "price" => {format_money number=$TAXED_PRICE}, "promo" => {format_money number=$TAXED_PROMO_PRICE} ]}
    {$pse_combination=[]}
    {loop name="combi" type="attribute_combination" product_sale_elements="$ID" order="manual"}
        {if ! $combination_label[$ATTRIBUTE_ID]}
            {$combination_label[$ATTRIBUTE_ID]=["name" => {$ATTRIBUTE_TITLE}, "values" => []]}
        {/if}
        {if ! $combination_values[$ATTRIBUTE_AVAILABILITY_ID]}
            {$combination_label[$ATTRIBUTE_ID]["values"][]=$ATTRIBUTE_AVAILABILITY_ID}
            {$combination_values[$ATTRIBUTE_AVAILABILITY_ID]=[{$ATTRIBUTE_AVAILABILITY_TITLE}, $ATTRIBUTE_ID]}
        {/if}
        {$pse_combination[]=$ATTRIBUTE_AVAILABILITY_ID}
    {/loop}
    {$pse[$ID]["combinations"]=$pse_combination}
{/loop}

<script type="text/javascript">
    // Product sale elements
    var PSE_FORM = true;
    var PSE_COUNT = {$pse_count};
    {if $check_availability == 0 || $product_virtual == 1 }
        var PSE_CHECK_AVAILABILITY = false;
    {else}
        var PSE_CHECK_AVAILABILITY = true;
    {/if}
    var PSE_DEFAULT_AVAILABLE_STOCK = {config key="default_available_stock" default="100"};
    var PSE = {$pse|json_encode nofilter};
    var PSE_COMBINATIONS = {$combination_label|json_encode nofilter};
    var PSE_COMBINATIONS_VALUE = {$combination_values|json_encode nofilter};
</script>

        </article><!-- /#product -->


        <ul class="pager">
            {if $HAS_PREVIOUS == 1}
                {loop type="product" name="prev_product" id={$PREVIOUS}}
                    <li class="previous"><a href="{$URL nofilter}"> {intl l="Previous product"}</a></li>
                {/loop}
            {/if}
            {if $HAS_NEXT == 1}
                {loop type="product" name="next_product" id={$NEXT}}
                    <li class="next"><a href="{$URL nofilter}"> {intl l="Next product"}</a></li>
                {/loop}
            {/if}
        </ul>
        {/loop}

    </div><!-- /.main -->
    {else}
    <div class="main">
        <article id="content-main" class="col-main" role="main" aria-labelledby="main-label">
            {include file="includes/empty.html"}
        </article>
    </div><!-- /.layout -->
    {/if}
{/block}

{block name="stylesheet"}
{hook name="product.stylesheet"}
{/block}

{block name="after-javascript-include"}
{hook name="product.after-javascript-include"}
{/block}

{block name="javascript-initialization"}
{hook name="product.javascript-initialization"}
{/block}

Last edited by stephst84 (18-06-2019 16:59:59)