Merge pull request #505 from roadster31/brands

- Brands implementation
- image + documents refactoring
- new smarty functions for form generation.
- lots of code enhancements
This commit is contained in:
Julien
2014-07-08 11:45:44 +02:00
169 changed files with 27453 additions and 3808 deletions

View File

@@ -16,9 +16,13 @@ return array(
'Address' => 'Address',
'Address %nb' => 'Address %nb',
'Address Update' => 'Address update',
'All brands' => 'All brands',
'All brands in %store' => 'All brands in %store',
'All contents' => 'All contents',
'All contents in' => 'All contents in',
'All product in brand %title' => 'All product in brand %title',
'All products' => 'All products',
'All products for brand %title in %store' => 'All products for brand %title in %store',
'All products in' => 'All products in',
'Amount' => 'Amount',
'Availability' => 'Availability',
@@ -26,6 +30,8 @@ return array(
'Back' => 'Back',
'Billing address' => 'Billing address',
'Billing and delivery' => 'Billing and delivery',
'Brand information' => 'Brand information',
'Brands' => 'Brands',
'Cancel' => 'Cancel',
'Cart' => 'Cart',
'Categories' => 'Categories',
@@ -88,6 +94,7 @@ return array(
'Login Information' => 'Login Information',
'Main Navigation' => 'Main Navigation',
'Minimum 2 characters.' => 'Minimum 2 characters.',
'More information about this brand' => 'More information about this brand',
'Multi-payment platform' => 'Multi-payment platform',
'My Account' => 'My Account',
'My Address Books' => 'My Address Books',
@@ -106,15 +113,16 @@ return array(
'No Content in this folder.' => 'No Content in this folder.',
'No articles currently' => 'No articles currently',
'No deliveries available for this cart and this country' => 'No deliveries available for this cart and this country',
'No products available in this brand' => 'No products available in this brand',
'No products available in this category' => 'No products available in this category',
'No results found' => 'No results found',
'No.' => 'No.',
'Offers' => 'Offers',
'Ok' => 'Ok',
'Order Payment' => 'Order with payment obligation',
'Order details' => 'Order details',
'Order number' => 'Order number',
'Orders over $50' => 'Orders over $50',
'Order Payment' => 'Order with payment obligation',
'Out of Stock' => 'Out of stock',
'Pagination' => 'Pagination',
'Password' => 'Password',

View File

@@ -16,9 +16,13 @@ return array(
'Address' => 'Adresse',
'Address %nb' => 'Adresse n°',
'Address Update' => 'Mise à jour de l\'adresse',
'All brands' => 'Toutes les marques',
'All brands in %store' => 'Toutes les marques %store',
'All contents' => 'Tous les contenus',
'All contents in' => 'tous les contenus de',
'All product in brand %title' => 'Tous les produits de la marque %title',
'All products' => 'Tous les produits',
'All products for brand %title in %store' => 'Tous les produits %title de %store',
'All products in' => 'Tous les produits de',
'Amount' => 'Montant',
'Availability' => 'Disponibilité',
@@ -26,6 +30,8 @@ return array(
'Back' => 'Retour',
'Billing address' => 'Adresse de facturation',
'Billing and delivery' => 'Facturation et livraison',
'Brand information' => 'Marque',
'Brands' => 'Marques',
'Cancel' => 'Annuler',
'Cart' => 'Panier',
'Categories' => 'Rubriques',
@@ -88,6 +94,7 @@ return array(
'Login Information' => 'Informations de connexion',
'Main Navigation' => 'Navigation principale',
'Minimum 2 characters.' => '2 caractères minimum.',
'More information about this brand' => 'Plus de détails sur cette marque',
'Multi-payment platform' => 'Plateforme de paiement multiple',
'My Account' => 'Mon compte',
'My Address Books' => 'Mes carnets d\'adresses',
@@ -106,15 +113,16 @@ return array(
'No Content in this folder.' => 'Aucun contenu dans ce dossier.',
'No articles currently' => 'Aucun article en ce moment',
'No deliveries available for this cart and this country' => 'Aucun mode de livraison disponible pour ce panier et ce pays',
'No products available in this brand' => 'Aucun produit de cette marque n\'est disponible',
'No products available in this category' => 'Aucun produit dans cette catégorie.',
'No results found' => 'Aucun résultat',
'No.' => 'N°',
'Offers' => 'Offres',
'Ok' => 'Ok',
'Order Payment' => 'Commande avec obligation de paiement',
'Order details' => 'Détail de commande',
'Order number' => 'Commande numéro',
'Orders over $50' => 'Commande supérieure à 50€',
'Order Payment' => 'Commande avec obligation de paiement',
'Out of Stock' => 'Hors stock',
'Pagination' => 'Pagination',
'Password' => 'Mot de passe',
@@ -146,10 +154,10 @@ return array(
'Price descending' => 'Prix décroissant',
'Proceed checkout' => 'Continuer la commande',
'Product Empty Button' => 'Ajouter mon premier produit',
'Product Empty Message' => 'Ajouter rapidement un produit.
<ol>
<li>Cochez <strong>Nouveau</strong> dans l\'onglet Prix si vous voulez voir votre produit dans la section Nouveautés.</li>
<li>Cochez <strong>En promo</strong> dans l\'onglet Prix si vous voulez voir votre produit dans la section Offres.</li>
'Product Empty Message' => 'Ajouter rapidement un produit.
<ol>
<li>Cochez <strong>Nouveau</strong> dans l\'onglet Prix si vous voulez voir votre produit dans la section Nouveautés.</li>
<li>Cochez <strong>En promo</strong> dans l\'onglet Prix si vous voulez voir votre produit dans la section Offres.</li>
</ol>',
'Product Empty Title' => 'Bienvenue',
'Product Name' => 'Nom du produit',

View File

@@ -0,0 +1,157 @@
{extends file="layout.tpl"}
{* Body Class *}
{block name="body-class"}page-content{/block}
{* Page Title *}
{block name='no-return-functions' append}
{loop name="brand.seo.title" type="brand" id="{brand attr="id"}"}
{$page_title = {$META_TITLE}}
{/loop}
{/block}
{* Meta *}
{block name="meta"}
{loop name="brand.seo.meta" type="brand" id="{brand attr="id"}"}
{if $META_DESCRIPTION}
<meta name="description" content="{$META_DESCRIPTION}">{/if}
{if $META_KEYWORDS}
<meta name="keywords" content="{$META_KEYWORDS}">{/if}
{/loop}
{/block}
{* Feeds *}
{block name="feeds"}
<link rel="alternate" type="application/rss+xml" title="{intl l='All product in brand %title' title={brand attr='title'}}" href="{url path="/feed/brand/{lang attr='locale'}/{brand attr='id'}"}"/>
{/block}
{* Breadcrumb *}
{block name='no-return-functions' append}
{$breadcrumbs = []}
{loop type="brand" name="brand-breadcrumb" id="{brand attr="id"}"}
{$breadcrumbs[] = ['title' => {$TITLE}, 'url'=> {$URL}]}
{/loop}
{/block}
{block name="main-content"}
<div class="main layout-col-2-left">
{$limit={$smarty.get.limit|default:8}}
{$product_page={$smarty.get.page|default:1}}
{$product_order={$smarty.get.order|default:'alpha'}}
{$mode=$smarty.get.mode|default:'grid'}
<article class="col-main {$mode}" role="main" aria-labelledby="main-label">
{loop name="brand.info" type="brand" current="yes"}
<section class="brand-description">
<h1 id="main-label" class="page-header">{$TITLE}</h1>
{loop name="brand.image" type="image" source="brand" id={$LOGO_IMAGE_ID} width=218 height=146 resize_mode="borders"}
<p><img itemprop="image" src="{$IMAGE_URL}" alt="{$TITLE}"></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}
</section>
{ifloop rel="product_list"}
<hr/>
{assign var="amount" value="{count type="product" brand="$ID"}"}
<div class="toolbar toolbar-top" role="toolbar">
<div class="sorter-container">
<span class="amount">{if ($amount > 1)}{intl l="%nb Items" nb="{$amount}"}{else}{intl l="%nb Item" nb="{$amount}"}{/if}</span>
<span class="limiter">
<label for="limit-top">{intl l="Show"}</label>
<select id="limit-top" name="limit">
<option value="{url path={navigate to="current"} limit="4"}" {if $limit==4}selected{/if}>4</option>
<option value="{url path={navigate to="current"} limit="8"}" {if $limit==8}selected{/if}>8</option>
<option value="{url path={navigate to="current"} limit="12"}" {if $limit==12}selected{/if}>12</option>
<option value="{url path={navigate to="current"} limit="50"}" {if $limit==50}selected{/if}>50</option>
<option value="{url path={navigate to="current"} limit="100000"}" {if $limit==100000}selected{/if}>All
</option>
</select>
<span class="per-page">{intl l="per page"}</span>
</span><!-- /.limiter -->
<span class="sort-by">
<label for="sortby-top">{intl l="Sort By"}</label>
<select id="sortby-top" name="sortby">
{*<option value="{url path="{brand attr="url"}" order="manual"}">{intl l="Position"}</option>*}
<option value="{url path={navigate to="current"} limit=$limit order="alpha"}" {if $product_order=="alpha"}selected{/if}>{intl l="Name ascending"}</option>
<option value="{url path={navigate to="current"} limit=$limit order="alpha_reverse"}" {if $product_order=="alpha_reverse"}selected{/if}>{intl l="Name descending"}</option>
<option value="{url path={navigate to="current"} limit=$limit order="min_price"}" {if $product_order=="min_price"}selected{/if}>{intl l="Price ascending"}</option>
<option value="{url path={navigate to="current"} limit=$limit order="max_price"}" {if $product_order=="max_price"}selected{/if}>{intl l="Price descending"}</option>
</select>
</span><!-- /.sort-by -->
<span class="view-mode">
<span class="view-mode-label">{intl l="View as"}:</span>
<span class="view-mode-btn">
<a href="{url path={navigate to="current"} mode="grid"}" data-toggle="view" role="button" title="{intl l='Grid'}" rel="nofollow" class="btn btn-grid"><i class="icon-grid"></i></a>
<a href="{url path={navigate to="current"} mode="list"}" data-toggle="view" role="button" title="{intl l="List"}" rel="nofollow" class="btn btn-list"><i class="icon-list"></i></a>
</span>
</span><!-- /.view-mode -->
</div><!-- /.sorter -->
</div><!-- /.sorter-container -->
<div id="category-products">
<div class="products-content">
<ul class="product-col-4">
{loop type="product" name="product_list" brand=$ID limit=$limit page=$product_page order=$product_order}
{include file="includes/single-product.html" product_id=$ID hasBtn=true hasDescription=true hasQuickView=true width="218" height="146"}
{/loop}
</ul>
</div>
</div><!-- /#category-products -->
<div class="toolbar toolbar-bottom" role="toolbar">
{if $amount > $limit}
<div class="pagination-container" role="pagination" aria-labelledby="pagination-label-{$toolbar}}">
<strong id="pagination-label-{$toolbar}}" class="pagination-label">{intl l="Pagination"}</strong>
<ul class="pagination">
<li{if $product_page le 1} class="disabled"{/if}>
<a href="{url path={navigate to="current"} page={$product_page-1} }" title="{intl l="Previous"}" class="prev"><i class="icon-prev"></i></a>
</li>
{pageloop rel="product_list"}
<li{if $PAGE eq $CURRENT} class="active"{/if}>
<a href="{url path={navigate to="current"} page=$PAGE }"> {$PAGE} </a></li>
{if $PAGE eq $LAST}
<li{if $CURRENT eq $LAST} class="disabled"{/if}>
<a href="{url path={navigate to="current"} page={$NEXT} }" title="{intl l="Next"}" class="next"><i class="icon-next"></i></a>
</li>
{/if}
{/pageloop}
</ul>
</div>
{/if}
</div><!-- /.toolbar toolbar-bottom -->
{/ifloop}
{elseloop rel="product_list"}
<div class="address-warning">
{intl l="No products available in this brand"}
</div>
{/elseloop}
{/loop}
</article>
<aside class="col-left" role="complementary" itemscope itemtype="http://schema.org/WPSideBar">
{include file="includes/brand-menu.html"}
</aside>
</div><!-- /.layout -->
{/block}

View File

@@ -7,33 +7,72 @@
{/loop}
{if $_context_ == "catalog"}
<channel>
{if $_id_ == "" }
<title>{intl l="All products in"} {$store_name}</title>
<link>{url path="/"}</link>
<description>{$store_name}</description>
<language>{$locale|replace:'_':'-'|lower}</language>
<lastBuildDate>{$smarty.now|date_format:'r'}</lastBuildDate>
<generator>Thelia 2.0</generator>
{else}
{loop type="category" name="category" id=$_id_ lang=$_lang_ }
<title>{intl l="All products in"} {$TITLE} - {$store_name}</title>
<link>{$URL}</link>
<description>{$CHAPO}</description>
<language>{$LOCALE|replace:'_':'-'|lower}</language>
<pubDate>{format_date date=$UPDATE_DATE format="r"}</pubDate>
<lastBuildDate>{$smarty.now|date_format:'r'}</lastBuildDate>
<generator>Thelia 2.0</generator>
{if $_id_ == "" }
<title>{intl l="All products in"} {$store_name}</title>
<link>{url path="/"}</link>
<description>{$store_name}</description>
<language>{$locale|replace:'_':'-'|lower}</language>
<lastBuildDate>{$smarty.now|date_format:'r'}</lastBuildDate>
<generator>Thelia 2.0</generator>
{else}
{loop type="category" name="category" id=$_id_ lang=$_lang_ }
<title>{intl l="All products in"} {$TITLE} - {$store_name}</title>
<link>{$URL}</link>
<description>{$CHAPO}</description>
<language>{$LOCALE|replace:'_':'-'|lower}</language>
<pubDate>{format_date date=$UPDATE_DATE format="r"}</pubDate>
<lastBuildDate>{$smarty.now|date_format:'r'}</lastBuildDate>
<generator>Thelia 2.0</generator>
{/loop}
{/if}
{loop type="product" name="product" category_default=$_id_ lang=$_lang_ order="id_reverse" }
<item>
<title>{$TITLE}</title>
<link>{$URL}</link>
<description>{$CHAPO}</description>
<pubDate>{format_date date=$CREATE_DATE format="r"}</pubDate>
<guid>{$URL}</guid>
</item>
{/loop}
{/if}
{loop type="product" name="product" category_default=$_id_ lang=$_lang_ order="id_reverse" }
<item>
<title>{$TITLE}</title>
</channel>
{elseif $_context_ == "brand"}
<channel>
{if $_id_ == "" }
<title>{intl l="All brands in %store" store="$store_name"}</title>
<link>{url path="/"}</link>
<description>{$store_name}</description>
<language>{$locale|replace:'_':'-'|lower}</language>
<lastBuildDate>{$smarty.now|date_format:'r'}</lastBuildDate>
<generator>Thelia 2.0</generator>
{loop type="brand" name="brand-list" lang=$_lang_ order="id-reverse" }
<item>
<title>{$TITLE}</title>
<link>{$URL}</link>
<description>{$CHAPO}</description>
<pubDate>{format_date date=$CREATE_DATE format="r"}</pubDate>
<guid>{$URL}</guid>
</item>
{/loop}
{else}
{loop type="brand" name="brand-desc" lang=$_lang_ id=$_id_}
<title>{intl l="All products for brand %title in %store" title="$TITLE" store="$store_name"}</title>
<link>{$URL}</link>
<description>{$CHAPO}</description>
<pubDate>{format_date date=$CREATE_DATE format="r"}</pubDate>
<guid>{$URL}</guid>
</item>
{/loop}
<language>{$locale|replace:'_':'-'|lower}</language>
<lastBuildDate>{$smarty.now|date_format:'r'}</lastBuildDate>
<generator>Thelia 2.0</generator>
{/loop}
{/if}
{loop type="product" name="products-in-brand" brand=$_id_ lang=$_lang_ order="id_reverse" }
<item>
<title>{$TITLE}</title>
<link>{$URL}</link>
<description>{$CHAPO}</description>
<pubDate>{format_date date=$CREATE_DATE format="r"}</pubDate>
<guid>{$URL}</guid>
</item>
{/loop}
</channel>
{else}
<channel>

View File

@@ -0,0 +1,12 @@
<section id="brands" class="block block-nav" role="navigation" aria-labelledby="brands-label">
<div class="block-heading"><h3 class="block-title" id="brands-label">{intl l="Brands"}</h3></div>
<div class="block-content">
<nav class="nav-brands">
<ul id="brand" class="accordion">
{loop name="brands-list" type="brand"}
<li><a href="{$URL}">{$TITLE} ({count type="product" brand="{$ID}"})</a></li>
{/loop}
</ul>
</nav>
</div>
</section>

View File

@@ -6,13 +6,11 @@
{/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.feature" type="feature" product=$product_id title="brand"}
{loop name="brand.value" type="feature_value" feature=$ID product=$product_id}
{loop name="brand" type="brand" product=$product_id }
<meta itemprop="brand" content="{$TITLE}">
{/loop}
{/loop}
{loop name="brand.feature" type="feature" product=$product_id title="isbn"}
{loop name="brand.value" type="feature_value" feature=$ID product=$product_id}
{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}

View File

@@ -48,13 +48,12 @@
<article itemscope itemtype="http://schema.org/Product">
<!-- Use the meta tag to specify content that is not visible on the page in any way -->
{$product_id=$ID}
{loop name="brand.feature" type="feature" product="{$ID}" title="brand"}
{loop name="brand.value" type="feature_value" feature="{$ID}" product="$product_id"}
<meta itemprop="brand" content="{$TITLE}">
{/loop}
{loop name="brand.feature" type="brand" product="{$ID}"}
<meta itemprop="brand" content="{$TITLE}">
{/loop}
{loop name="brand.feature" type="feature" product=$ID title="isbn"}
{loop name="brand.value" type="feature_value" feature=$ID product=$product_id}
{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}

View File

@@ -67,6 +67,7 @@ GNU General Public License : http://www.gnu.org/licenses/
{* Feeds *}
<link rel="alternate" type="application/rss+xml" title="{intl l='All products'}" href="{url path="/feed/catalog/{lang attr="locale"}"}" />
<link rel="alternate" type="application/rss+xml" title="{intl l='All contents'}" href="{url path="/feed/content/{lang attr="locale"}"}" />
<link rel="alternate" type="application/rss+xml" title="{intl l='All brands'}" href="{url path="/feed/brand/{lang attr='locale'}"}" />
{block name="feeds"}{/block}
{* HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries *}

View File

@@ -1,43 +1,44 @@
{extends file="layout.tpl"}
{* Body Class *}
{block name="body-class"}page-password{/block}
{* Breadcrumb *}
{block name='no-return-functions' append}
{$breadcrumbs = [
['title' => {intl l="Password"}, 'url'=>{url path="/password"}]
]}
{/block}
{block name="main-content"}
<div class="main">
<article class="col-main" role="main" aria-labelledby="main-label">
<h1 id="main-label" class="page-header">{intl l="Password Forgotten"}</h1>
{form name="thelia.front.customer.lostpassword"}
<form id="form-forgotpassword" action="{url path="/password"}" method="post">
{form_hidden_fields form=$form}
<p>{intl l="Please enter your email address below."} {intl l="You will receive a link to reset your password."}</p>
{form_field form=$form field="email"}
<div class="form-group group-email {if $error}has-error{elseif !$error && $value != ""}has-success{/if}">
<label for="{$label_attr.for}">{$label}</label>
<div class="control-input">
<input type="email" name="{$name}" value="{$value}" id="{$label_attr.for}" class="form-control" maxlength="255" aria-required="true" autofocus required>
{if $error}
<span class="help-block">{$message}</span>
{elseif !$error && $value != ""}
<span class="help-block"><span class="icon-ok"></span> {intl l="You will receive a link to reset your password."}</span>
{/if}
</div>
</div>
{/form_field}
<div class="group-btn">
<a href="{url path="/login"}" class="btn btn-cancel">{intl l="Cancel"}</a>
<button type="submit" class="btn btn-forgot">{intl l="Send"}</button>
</div>
</form>
{/form}
</article>
</div>
{/block}
{extends file="layout.tpl"}
{* Body Class *}
{block name="body-class"}page-password{/block}
{* Breadcrumb *}
{block name='no-return-functions' append}
{$breadcrumbs = [
['title' => {intl l="Password"}, 'url'=>{url path="/password"}]
]}
{/block}
{block name="main-content"}
<div class="main">
<article class="col-main" role="main" aria-labelledby="main-label">
<h1 id="main-label" class="page-header">{intl l="Password Forgotten"}</h1>
{form name="thelia.front.customer.lostpassword"}
<form id="form-forgotpassword" action="{url path="/password"}" method="post">
{form_hidden_fields form=$form}
<p>{intl l="Please enter your email address below."} {intl l="You will receive a link to reset your password."}</p>
{if $form_error}<div class="alert alert-danger">{$form_error_message}</div>{/if}
{form_field form=$form field="email"}
<div class="form-group group-email {if $error}has-error{elseif !$error && $value != ""}has-success{/if}">
<label for="{$label_attr.for}">{$label}</label>
<div class="control-input">
<input type="email" name="{$name}" value="{$value}" id="{$label_attr.for}" class="form-control" maxlength="255" aria-required="true" autofocus required>
{if $error}
<span class="help-block">{$message}</span>
{elseif !$error && $value != ""}
<span class="help-block"><span class="icon-ok"></span> {intl l="You will receive a link to reset your password."}</span>
{/if}
</div>
</div>
{/form_field}
<div class="group-btn">
<a href="{url path="/login"}" class="btn btn-cancel">{intl l="Cancel"}</a>
<button type="submit" class="btn btn-forgot">{intl l="Send"}</button>
</div>
</form>
{/form}
</article>
</div>
{/block}

View File

@@ -36,13 +36,12 @@
<article id="product" class="col-main" role="main" 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.feature" type="feature" product="{$ID}" title="brand"}
{loop name="brand.value" type="feature_value" feature="{$ID}" product="{product attr="id"}"}
<meta itemprop="brand" content="{$TITLE}">
{/loop}
{loop name="brand.feature" type="brand" product="{$ID}"}
<meta itemprop="brand" content="{$TITLE}">
{/loop}
{loop name="brand.feature" type="feature" product="{$ID}" title="isbn"}
{loop name="brand.value" type="feature_value" feature="{$ID}" product="{product attr="id"}"}
{loop name="isbn.feature" type="feature" product="{$ID}" title="isbn"}
{loop name="isbn.value" type="feature_value" feature="{$ID}" product="{product attr="id"}"}
<meta itemprop="productID" content="isbn:{$TITLE}">
{/loop}
{/loop}
@@ -102,6 +101,10 @@
<h1 class="name"><span itemprop="name">{$TITLE}</span></h1>
{if $REF}<span itemprop="sku" class="sku">{intl l='Ref.'}: {$REF}</span>{/if}
{loop name="brand_info" type="brand" product="{$ID}"}
<p><a href="{$URL}" title="{intl l="More information about this brand"}"><span itemprop="brand">{$TITLE}</span></a></p>
{/loop}
{if $POSTSCRIPTUM}<div class="short-description">
<p>{$POSTSCRIPTUM}</p>
</div>{/if}
@@ -211,30 +214,59 @@
</section>
{strip}
{capture "additional"}
{ifloop rel="feature_info"}
{capture "additional"}
{ifloop rel="feature_info"}
<ul>
{loop name="feature_info" type="feature" product="{$ID}"}
{ifloop rel="feature_value_info"}
{ifloop rel="feature_value_info"}
<li>
<strong>{$TITLE}</strong> :
{loop name="feature_value_info" type="feature_value" feature="{$ID}" product="{product attr="id"}"}
{$TITLE}
{/loop}
</li>
{/ifloop}
{/ifloop}
{/loop}
</ul>
{/ifloop}
{/capture}
{/ifloop}
{/capture}
{/strip}
{strip}
{capture "brand_info"}
{loop name="brand_info" type="brand" product="{$ID}"}
<p><strong><a href="{$URL}">{$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}"><img itemprop="image" src="{$IMAGE_URL}" 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}
<section id="product-tabs">
<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}
</ul>
<div class="tab-content">
@@ -242,9 +274,14 @@
<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>
<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}
</div>
</section>