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:
@@ -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',
|
||||
|
||||
@@ -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',
|
||||
|
||||
157
templates/frontOffice/default/brand.html
Normal file
157
templates/frontOffice/default/brand.html
Normal 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}
|
||||
@@ -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>
|
||||
|
||||
12
templates/frontOffice/default/includes/brand-menu.html
Normal file
12
templates/frontOffice/default/includes/brand-menu.html
Normal 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>
|
||||
@@ -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}
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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 *}
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user