add public design files

This commit is contained in:
Alan
2026-02-15 18:29:53 +03:00
parent 446351622f
commit 818397acb7
486 changed files with 43323 additions and 0 deletions

View File

@@ -0,0 +1,28 @@
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td {
margin: 0;
padding: 0;
border: 0;
outline: 0;
font-size: 100%;
background: transparent;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after, q:before, q:after {
content: '';
content: none;
}
ins {
text-decoration: none;
}
del {
text-decoration: line-through;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
strong {
font-weight: bold;
}

View File

@@ -0,0 +1,937 @@
@import url("reset.css");
/* @group Общий стиль */
html,
body {
width: 100%;
height: 100%;
font: 13px Tahoma, Arial, Helvetica, Geneva, sans-serif;
background-color: #f5f5f5;
}
p{margin-bottom: 15px;}
h1 {
font-size: 30px;
margin-bottom: 10px;
font-weight: normal;
text-shadow: 0px 1px 0px #fff;
}
h2 {
clear: both;
font-size: 20px;
margin-bottom: 10px;
font-weight: normal;
}
h3 {
font-size: 16px;
margin-top: 0px;
margin-bottom: 10px;
font-weight: normal;
}
a { color: #0095eb; }
a:hover { color: #e84d07; }
e[type="button"] {
cursor:hand;
cursor:pointer;
}
/* @end — Общий стиль */
/* @group Верхняя строка */
#top_background{
min-height: 44px;
padding-top: 10px;
width: 100%;
overflow: hidden;
padding-bottom: 5px;
}
#top{
margin:0px auto;
width: 940px;
}
#menu{
margin-left: -10px;
float: left;
margin-top: 7px;
max-width: 700px;
}
#menu li{
height: 30px;
display: block;
float: left;
list-style: none;
}
#menu li a{
margin-right: 5px;
font-size: 12px;
display: block;
float: left;
padding: 6px 11px 6px 11px;
color: #606060;
}
#menu li.selected a, #menu li:hover a{
border: 1px solid #d5d5d5;
background-color: #ffffff;
padding: 5px 10px 6px 10px;
border-radius: 20px;
text-decoration: none;
}
#blog{
list-style: none;
}
#currencies{
margin-bottom:15px;
}
#currencies ul{
margin-top: 10px;
}
#currencies ul li{
font-size: 12px;
display: inline;
padding-right: 5px;
list-style: none;
}
#currencies ul li a{
white-space: nowrap;
color: #505050;
}
#currencies ul li.selected a{
text-decoration: none;
}
#cart_informer{
background-color: #fff;
padding: 5px 13px 6px 13px;
border-radius: 15px;
float: right;
margin-top: 6px;
margin-left: 10px;
color: #505050;
}
/* @group Шапка сайта */
#header {
margin:0px auto;
width: 940px;
overflow: hidden;
clear: both;
margin-bottom: 20px;
}
/* @group Футкр сайта */
#footer {
margin:0px auto;
width: 940px;
overflow: hidden;
clear: both;
height: 60px;
padding-top: 30px;
text-align: center;
}
#account{
float: right;
font-size: 12px;
margin: 12px 10px 10px 0px;
margin-top: 12p
margin-right: 1e0px;
text-align: right;
color: #505050;
}
#account #login{
padding-left: 7px;
}
#account #logout{
padding-left: 7px;
}
#logo{
margin-top: 15px;
padding-left: 0px;
float: left;
clear: left;
width: 250px;
height: 105px;
}
#contact{
float: right;
text-align: right;
margin-top: 45px;
margin-right: 5px;
font-sdtyle: italic;
height: 25px;
color: #505050;
font-size: 15px;
text-shadow: 0px 1px 0px #fff;
}
#contact #phone{
font-size: 18px;
}
#main {
margin:0px auto;
width: 940px;
}
#content {
float: right;
width: 680px;
margin-bottom: 20px;
}
#left {
width: 260px;
float: left;
overflow: hidden;
}
#search{
margin-top: 9px;
margin-bottom: 10px;
height: 28px;
}
#search .input_search{
width: 170px;
height: 20px;
font-size: 12px;
border: 1px solid #b0b0b0;
display: block;
float: left;
}
#search .button_search {
width: 32px;
height: 28px;
background-position-y: middle;
background: url(../images/search.png) no-repeat;
border-style: none;
cursor: pointer;
cursor: hand;
display: block;
float: left;
}
/* @group Меню каталога*/
#catalog_menu {
margin-top: 10px;
margin-bottom: 10px;
}
#catalog_menu ul {
padding-left: 0px;
padding-bottom: 5px;
list-style: none;
}
#catalog_menu ul ul {
padding-left: 20px;
padding-top: 0px;
padding-bottom: 0px;
}
#catalog_menu ul li {
font-size: 16px;
margin-top: 8px;
}
#catalog_menu ul li img{
vertical-align: middle;
}
#catalog_menu ul li a.selected{
color: #ffffff;
background-color: #0095eb;
padding: 3px;
}
#catalog_menu ul ul li {
font-size: 14px;
}
#catalog_menu ul ul ul li {
font-size: 12px;
}
/* @end — Меню каталога*/
#all_brands {
width: 220px;
margin-bottom: 15px;
}
/* @group Brands */
#brands {
clear: both;
margin-bottom: 10px;
margin-top: 10px;
}
#brands a {
color: #ec0060;
font-size: 12px;
margin-right: 10px;
}
#brands img{
vertical-align: middle;
}
#brands a:hover {
color: #000;
}
#brands a.selected {
background-color: #ec0060;
color: #fffeff;
padding: 2px 2px 2px 2px;
}
/* @end */
/* Хлебные крошки */
#path{
margin-top: -20px;
margin-bottom: 5px;
font-size: 11px;
color: #a0a0a0;
}
#path a{
color: #a0a0a0;
}
/* @end */
/* @group Товар подробно */
.product .image {
text-align: center;
width: 300px;
background-color: #ffffff;
border: 1px solid #e0e0e0;
float: left;
padding: 5px;
margin-right: 20px;
}
.product .image img{
max-width: 300px;
}
.product .images {
float: left;
clear: left;
width: 300px;
margin-right: 20px;
margin-bottom: 10px;
padding-top: 15px;
padding-bottom: 15px;
}
.product .images img{
text-align: center;
width: 50px;
background-color: #ffffff;
border: 1px solid #e0e0e0;
float: left;
padding: 5px;
margin: 4px 10px 10px 0px;
}
.product .description{
float: right;
width: 330px;
}
.product .features {
list-style: none;
width: 100%;
display: block;
clear: both;
margin-top: 15px;
margin-bottom: 25px;
border-bottom: 1px solid #e0e0e0;
}
.product .features li {
padding: 10px 5px 10px 5px;
overflow: hidden;
border-top: 1px solid #e0e0e0;
background-color: #f0f0f0;
}
.product .features li.even{
background-color: #e9e9e9;
}
.product .features label {
font-style: normal;
display: block;
width: 30%;
float: left;
}
.product .features p {
float: left;
display: block;
width: 70%;
}
.product .variants {
float: left;
font-size: 12px;
}
.product .variant td{
padding-bottom: 6px;
vertical-align: middle;
}
.product .compare_price {
font-size: 14px;
text-decoration: line-through;
white-space: nowrap;
color: #707070;
}
.product .price {
font-size: 14px;
white-space: nowrap;
}
.product .variant_name {
float: left;
margin-right: 10px;
font-size: 12px;
}
.product .variant_radiobutton {
margin-right: 5px;
margin-left: 0px;
}
#back_forward {
font-size: 14px;
margin-bottom: 20px;
clear: both;
}
#back_forward a.prev_page_link{
margin-right: 20px;
}
/* @end — Товар подробно*/
.tiny_products {
list-style: none;
display: block;
}
.tiny_products .product{
width: 210px;
margin-right: 10px;
margin-bottom: 30px;
display: -moz-inline-box;
display: inline-block;
*zoom: 1;
*display: inline;
word-spacing: normal;
vertical-align: top;
}
.tiny_products .product .image {
vertical-align: middle;
text-align: center;
width: 200px;
height: 200px;
line-height: 200px;
background-color: #ffffff;
border: 1px solid #e0e0e0;
padding: 5px;
margin-bottom: 10px;
}
.tiny_products .product .image img{
vertical-align: middle;
max-width: 200px;
}
.tiny_products .product h3 {
font-size: 14px;
margin-bottom: 10px;
font-weight: normal;
}
.tiny_products .product h3.featured{
background: url(../images/star.png) no-repeat;
background-position: left middle;
padding-left: 20px;
}
.products {
list-style: none;
display: block;
}
.products .product{
width: 100%;
display: block;
clear: both;
overflow: hidden;
}
.products .product .image {
text-align: center;
width: 200px;
background-color: #ffffff;
border: 1px solid #e0e0e0;
float: left;
padding: 5px;
margin: 4px 0px 20px 0px;
}
.products .product .image img{
max-width: 200px;
}
.products .product .product_info {
float: right;
width: 450px;
margin-bottom: 40px;
}
.products .product h3 {
font-size: 20px;
margin-bottom: 5px;
font-weight: normal;
}
.products .product h3.featured{
background: url(../images/star.png) no-repeat;
background-position: left middle;
padding-left: 20px;
}
.products .product .annotation {
font-size: 12px;
color: #505050;;
margin-bottom: 5px;
}
/* Кнопка */
.button {
float: left;
clear: left;
cursor: pointer;
}
.button {
-moz-box-shadow:inset 0px 1px 0px 0px #ffffff;
-webkit-box-shadow:inset 0px 1px 0px 0px #ffffff;
box-shadow:inset 0px 1px 0px 0px #ffffff;
background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #ededed), color-stop(1, #dfdfdf) );
background:-moz-linear-gradient( center top, #ededed 5%, #dfdfdf 100% );
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#dfdfdf');
background-color:#ededed;
-moz-border-radius:6px;
-webkit-border-radius:6px;
border-radius:6px;
border:1px solid #cccccc;
display:inline-block;
color:#555555;
font-family:arial;
font-size:14px;
font-weight:bold;
padding:6px 20px;
text-decoration:none;
text-shadow:1px 1px 0px #ffffff;
}.button:hover {
background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #dfdfdf), color-stop(1, #ededed) );
background:-moz-linear-gradient( center top, #dfdfdf 5%, #ededed 100% );
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#dfdfdf', endColorstr='#ededed');
background-color:#dfdfdf;
}.button:active {
position:relative;
top:1px;
}
/* @group Фильтр по свойствам */
#features {
background-color: #f0f0f0;
border-top: 1px solid #d0d0d0;
border-bottom: 1px solid #d0d0d0;
margin-top: 20px;
margin-bottom: 10px;
width: 100%;
}
#features .feature_name{
padding: 7px;
}
#features .feature_values{
padding: 7px;
}
#features a {
padding-right: 6px;
white-space: nowrap;
}
#features a.selected {
//background-color: #4a4a4a;
color: #505050;
text-decoration: none;
}
/* @end — Фильтр по свойствам*/
/* @group Сортировка */
.sort {
color: #505050;
font-size: 12px;
margin-top: 10px;
margin-bottom: 10px;
font-weight: normal;
font-style: normal;
}
.sort a{
margin-right: 5px;
}
.sort .selected {
color: #505050;
text-decoration: none;
margin-right: 5px;
}
/* @end */
/* @group Постраничная навигация */
.pagination {
margin-top: 5px;
margin-bottom: 5px;
font-size: 12px;
overflow: hidden;
}
.pagination a {
display: block;
float: left;
background-color: #fffeff;
margin-right: 5px;
margin-bottom: 5px;
padding: 7px 4px;
min-width: 22px;
text-align: center;
border: 1px solid #d7d7d7;
text-decoration: none;
}
.pagination a.selected:hover,
.pagination a.selected {
background-color: #18a5ff;
color: #ffffff;
border-color: #008fe9;
}
.pagination a:hover {
background-color: #f8f8f8;
}
.pagination a.next_page_link, .pagination a.prev_page_link{
border: none;
background: none;
}
/* @end */
/* @group Просмотренные товары */
#browsed_products{
margin-bottom: 20px;
overflow: hidden;
}
#browsed_products li{
display: block;
float: left;
overflow: hidden;
border: 1px solid #e0e0e0;
background-color: #ffffff;
margin: 0 7px 7px 0;
width: 50px;
height: 50px;
}
#browsed_products li a{
display: table-cell;
vertical-align: middle;
text-align: center;
width: 50px;
height: 50px;
}
/* @end — Просмотренные товары */
/* @group Формы */
input[type="text"],
input[type="password"]
{
width: 100%;
font-size: 18px;
}
.form
{
width:400px;
margin-bottom: 20px;
}
.form textarea
{
width:100%;
height:100px;
font-size: 18px;
}
.form label {
display:block;
font-size: 14px;
}
.form input[type="text"]{
display:block;
margin-bottom: 10px;
}
/* @group Комментарии */
.comment_list {
margin-top: 15px;
list-style: none;
}
.comment_list li {
padding-bottom: 15px;
}
.comment_header {
font-size: 18px;
}
.comment_header i {
font-weight: normal;
font-style: normal;
color: #878787;
font-size: 13px;
}
/* @end — Комментарии*/
/* @group Форма отправки комментария */
.comment_form {
background-color: #f3f3f3;
border: 1px solid #e0e0e0;
padding: 20px;
margin-top: 20px;
width: 90%;
overflow: hidden;
}
.comment_form h2 {
margin-bottom: 0px;
}
.comment_form .comment_textarea {
width: 100%;
height: 100px;
font-size: 12px;
}
.comment_form label {
display: block;
float: left;
width: 100px;
font-size: 18px;
margin-top: 15px;
}
.comment_form .input_name {
font-size: 16px;
width: 250px;
margin-top: 15px;
}
.comment_form .input_captcha, .cart_form .input_captcha{
float: left;
width: 150px;
font-size: 24px;
font-weight: bold;
text-transform: uppercase;
margin-top: 15px;
height: 36px;
}
.comment_form .captcha, .cart_form .captcha {
float: left;
display: block;
margin-top: 15px;
margin-right: 10px;
}
.comment_form .button,
.feedback_form .button,
.register_form .button,
.login_form .button{
float: right;
display: block;
margin-top: 10px;
margin-right: 0px;
}
/* @end — Форма отправки комментария */
/* @group Форма отправки обратной связи */
.feedback_form {
background-color: #f3f3f3;
border: 1px solid #e0e0e0;
padding: 20px;
margin-top: 20px;
width: 90%;
overflow: hidden;
}
.feedback_form .input_captcha, .register_form .input_captcha{
float: left;
width: 150px;
font-size: 24px;
font-weight: bold;
text-transform: uppercase;
margin-top: 15px;
height: 36px;
}
.feedback_form .captcha, .register_form .captcha{
float: left;
display: block;
margin-top: 15px;
margin-right: 10px;
}
.feedback_form .button_send {
font-size: 18px;
float: right;
margin-top: 25px;
}
/* @end — Форма отправки комментария */
/* @group Корзина */
#purchases{
width: 100%;
}
#purchases tr{
border-top: 1px solid #d5d5d5;
height: 70px;
}
#purchases th{
vertical-align: top;
padding-top: 10px;
font-size: 18px;
font-weight: normal;
}
#purchases .image{
width: 50px;
text-align: center;
}
#purchases .image a{
border: 1px solid #e0e0e0;
background-color: #ffffff;
margin: 0 7px 7px 0;
display: table-cell;
vertical-align: middle;
text-align: center;
width: 50px;
height: 50px;
}
#purchases .name{
padding-left: 10px;
padding-right: 10px;
text-align: left;
}
#purchases td.name{
font-size: 14px;
}
#purchases td .download_attachment{
white-space: nowrap;
color: #3b8500;
padding: 5px 10px 7px 10px;
border-bottom-color: 1px dotted green;
background-color: #ccff72;
line-height: 30px;
}
#purchases .price{
padding-left: 5px;
padding-right: 5px;
white-space: nowrap;
text-align: right;
}
#purchases td.price{
font-size: 14px;
}
#purchases .remove{
padding-left: 15px;
text-align: right;
}
#purchases .amount{
font-size: 14px;
padding-left: 5px;
padding-right: 5px;
}
#purchases .amount select{
font-size:12px;
}
#purchases .coupon .name{
font-size:14px;
}
#purchases .coupon .name input.coupon_code{
width: 200px;
}
#purchases .coupon .name input{
font-size:16px;
}
ul#deliveries{
margin-top: 20px;
margin-bottom: 20px;
background-color: #ffffff;
border: 1px solid #e0e0e0;
padding: 20px 20px 0 20px;
list-style: none;
}
ul#deliveries li{
margin-bottom: 20px;
}
ul#deliveries li div.checkbox{
float: left;
}
ul#deliveries li h3, ul#deliveries li .description{
display: block;
margin-left: 25px;
}
/* @end */
/* @group Кабинет */
#orders_history
{
list-style: none;
}
#orders_history li
{
margin-bottom: 10px;
}
#orders_history li a
{
font-size: 16px;
}
/* @end — Кабинет */
/* @group Детали заказа */
table.order_info
{
margin-right: 20px;
margin-bottom: 20px;
background-color: #f9f9f9;
}
table.order_info td
{
padding: 10px;
border: 1px dotted #e0e0e0;
font-size: 14px;
}
.checkout_button
{
padding: 10px 20px 10px 20px;
border: 1px solid #51a400;
background-color: #d3ffa9;
color: #2e5e00;
font-size: 14px;
}
/* @end */
/* Сообщение с ошибкой */
.message_error{
clear: both;
height: 18px;
padding: 10px 20px;
margin-bottom: 15px;
margin-top: 10px;
overflow: hidden;
color: red;
background-color: #ffcaca;
border: 1px dotted #ff4545;
}
/* @end */

View File

@@ -0,0 +1,2 @@
order deny,allow
deny from all

View File

@@ -0,0 +1,21 @@
{* Список записей блога *}
<!-- Заголовок /-->
<h1>{$page->name}</h1>
{include file='pagination.tpl'}
<!-- Статьи /-->
<ul id="blog">
{foreach $posts as $post}
<li>
<h3><a data-post="{$post->id}" href="blog/{$post->url}">{$post->name|escape}</a></h3>
<p>{$post->date|date}</p>
<p>{$post->annotation}</p>
</li>
{/foreach}
</ul>
<!-- Статьи #End /-->
{include file='pagination.tpl'}

View File

@@ -0,0 +1,237 @@
{* Шаблон корзины *}
{$meta_title = "Корзина" scope=parent}
<h1>
{if $cart->purchases}В корзине {$cart->total_products} {$cart->total_products|plural:'товар':'товаров':'товара'}
{else}Корзина пуста{/if}
</h1>
{if $cart->purchases}
<form method="post" name="cart">
{* Список покупок *}
<table id="purchases">
{foreach from=$cart->purchases item=purchase}
<tr>
{* Изображение товара *}
<td class="image">
{$image = $purchase->product->images|first}
{if $image}
<a href="products/{$purchase->product->url}"><img src="{$image->filename|resize:50:50}" alt="{$product->name|escape}"></a>
{/if}
</td>
{* Название товара *}
<td class="name">
<a href="products/{$purchase->product->url}">{$purchase->product->name|escape}</a>
{$purchase->variant->name|escape}
</td>
{* Цена за единицу *}
<td class="price">
{($purchase->variant->price)|convert} {$currency->sign}
</td>
{* Количество *}
<td class="amount">
<select name="amounts[{$purchase->variant->id}]" onchange="document.cart.submit();">
{section name=amounts start=1 loop=$purchase->variant->stock+1 step=1}
<option value="{$smarty.section.amounts.index}" {if $purchase->amount==$smarty.section.amounts.index}selected{/if}>{$smarty.section.amounts.index} {$settings->units}</option>
{/section}
</select>
</td>
{* Цена *}
<td class="price">
{($purchase->variant->price*$purchase->amount)|convert}&nbsp;{$currency->sign}
</td>
{* Удалить из корзины *}
<td class="remove">
<a href="cart/remove/{$purchase->variant->id}">
<img src="design/{$settings->theme}/images/delete.png" title="Удалить из корзины" alt="Удалить из корзины">
</a>
</td>
</tr>
{/foreach}
{if $user->discount}
<tr>
<th class="image"></th>
<th class="name">скидка</th>
<th class="price"></th>
<th class="amount"></th>
<th class="price">
{$user->discount}&nbsp;%
</th>
<th class="remove"></th>
</tr>
{/if}
{if $coupon_request}
<tr class="coupon">
<th class="image"></th>
<th class="name" colspan="3">Код купона или подарочного ваучера
{if $coupon_error}
<div class="message_error">
{if $coupon_error == 'invalid'}Купон недействителен{/if}
</div>
{/if}
<div>
<input type="text" name="coupon_code" value="{$cart->coupon->code|escape}" class="coupon_code">
</div>
{if $cart->coupon->min_order_price>0}(купон {$cart->coupon->code|escape} действует для заказов от {$cart->coupon->min_order_price|convert} {$currency->sign}){/if}
<div>
<input type="button" name="apply_coupon" value="Применить купон" onclick="document.cart.submit();">
</div>
</th>
<th class="price">
{if $cart->coupon_discount>0}
&minus;{$cart->coupon_discount|convert}&nbsp;{$currency->sign}
{/if}
</th>
<th class="remove"></th>
</tr>
{literal}
<script>
$("input[name='coupon_code']").keypress(function(event){
if(event.keyCode == 13){
$("input[name='name']").attr('data-format', '');
$("input[name='email']").attr('data-format', '');
document.cart.submit();
}
});
</script>
{/literal}
{/if}
<tr>
<th class="image"></th>
<th class="name"></th>
<th class="price" colspan="4">
Итого
{$cart->total_price|convert}&nbsp;{$currency->sign}
</th>
</tr>
</table>
{* Связанные товары *}
{*
{if $related_products}
<h2>Так же советуем посмотреть</h2>
<!-- Список каталога товаров-->
<ul class="tiny_products">
{foreach $related_products as $product}
<!-- Товар-->
<li class="product">
<!-- Фото товара -->
{if $product->image}
<div class="image">
<a href="products/{$product->url}"><img src="{$product->image->filename|resize:200:200}" alt="{$product->name|escape}"/></a>
</div>
{/if}
<!-- Фото товара (The End) -->
<!-- Название товара -->
<h3><a data-product="{$product->id}" href="products/{$product->url}">{$product->name|escape}</a></h3>
<!-- Название товара (The End) -->
{if $product->variants|count > 0}
<!-- Выбор варианта товара -->
<table>
{foreach $product->variants as $v}
<tr class="variant">
<td>
{if $v->name}<label class="variant_name" for="related_{$v->id}">{$v->name}</label>{/if}
</td>
<td>
{if $v->compare_price > 0}<span class="compare_price">{$v->compare_price|convert}</span>{/if}
<span class="price">{$v->price|convert} <span class="currency">{$currency->sign|escape}</span></span>
</td>
<td>
<a href="cart?variant={$v->id}">в корзину</a>
</td>
</tr>
{/foreach}
</table>
<!-- Выбор варианта товара (The End) -->
{else}
Нет в наличии
{/if}
</li>
<!-- Товар (The End)-->
{/foreach}
</ul>
{/if}
*}
{* Доставка *}
{if $deliveries}
<h2>Выберите способ доставки:</h2>
<ul id="deliveries">
{foreach $deliveries as $delivery}
<li>
<div class="checkbox">
<input type="radio" name="delivery_id" value="{$delivery->id}" {if $delivery_id==$delivery->id}checked{elseif $delivery@first}checked{/if} id="deliveries_{$delivery->id}">
</div>
<h3>
<label for="deliveries_{$delivery->id}">
{$delivery->name}
{if $cart->total_price < $delivery->free_from && $delivery->price>0}
({$delivery->price|convert}&nbsp;{$currency->sign})
{elseif $cart->total_price >= $delivery->free_from}
(бесплатно)
{/if}
</label>
</h3>
<div class="description">
{$delivery->description}
</div>
</li>
{/foreach}
</ul>
{/if}
<h2>Адрес получателя</h2>
<div class="form cart_form">
{if $error}
<div class="message_error">
{if $error == 'empty_name'}Введите имя{/if}
{if $error == 'empty_email'}Введите email{/if}
{if $error == 'captcha'}Капча введена неверно{/if}
</div>
{/if}
<label>Имя, фамилия</label>
<input name="name" type="text" value="{$name|escape}" data-format=".+" data-notice="Введите имя"/>
<label>Email</label>
<input name="email" type="text" value="{$email|escape}" data-format="email" data-notice="Введите email" />
<label>Телефон</label>
<input name="phone" type="text" value="{$phone|escape}" />
<label>Адрес доставки</label>
<input name="address" type="text" value="{$address|escape}"/>
<label>Комментарий к&nbsp;заказу</label>
<textarea name="comment" id="order_comment">{$comment|escape}</textarea>
<div class="captcha"><img src="captcha/image.php?{math equation='rand(10,10000)'}" alt='captcha'/></div>
<input class="input_captcha" id="comment_captcha" type="text" name="captcha_code" value="" data-format="\d\d\d\d" data-notice="Введите капчу"/>
<input type="submit" name="checkout" class="button" value="Оформить заказ">
</div>
</form>
{else}
В корзине нет товаров
{/if}

View File

@@ -0,0 +1,9 @@
{* Информера корзины (отдаётся аяксом) *}
{if $cart->total_products>0}
В <a href="./cart/">корзине</a>
{$cart->total_products} {$cart->total_products|plural:'товар':'товаров':'товара'}
на {$cart->total_price|convert} {$currency->sign|escape}
{else}
Корзина пуста
{/if}

View File

@@ -0,0 +1,171 @@
{* Шаблон письма пользователю о заказе *}
{$subject = "Заказ №`$order->id`" scope=parent}
<h1 style="font-weight:normal;font-family:arial;">
<a href="{$config->root_url}/order/{$order->url}">Ваш заказ №{$order->id}</a>
на сумму {$order->total_price|convert:$currency->id}&nbsp;{$currency->sign}
{if $order->paid == 1}оплачен{else}еще не оплачен{/if},
{if $order->status == 0}ждет обработки{elseif $order->status == 1}в обработке{elseif $order->status == 2}выполнен{/if}
</h1>
<table cellpadding="6" cellspacing="0" style="border-collapse: collapse;">
<tr>
<td style="padding:6px; width:170; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;">
Статус
</td>
<td style="padding:6px; width:330; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;">
{if $order->status == 0}
ждет обработки
{elseif $order->status == 1}
в обработке
{elseif $order->status == 2}
выполнен
{/if}
</td>
</tr>
<tr>
<td style="padding:6px; width:170; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;">
Оплата
</td>
<td style="padding:6px; width:330; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;">
{if $order->paid == 1}
<font color="green">оплачен</font>
{else}
не оплачен
{/if}
</td>
</tr>
{if $order->name}
<tr>
<td style="padding:6px; width:170; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;">
Имя, фамилия
</td>
<td style="padding:6px; width:330; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;">
{$order->name|escape}
</td>
</tr>
{/if}
{if $order->email}
<tr>
<td style="padding:6px; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;">
Email
</td>
<td style="padding:6px; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;">
{$order->email|escape}
</td>
</tr>
{/if}
{if $order->phone}
<tr>
<td style="padding:6px; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;">
Телефон
</td>
<td style="padding:6px; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;">
{$order->phone|escape}
</td>
</tr>
{/if}
{if $order->address}
<tr>
<td style="padding:6px; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;">
Адрес доставки
</td>
<td style="padding:6px; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;">
{$order->address|escape}
</td>
</tr>
{/if}
{if $order->comment}
<tr>
<td style="padding:6px; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;">
Комментарий
</td>
<td style="padding:6px; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;">
{$order->comment|escape|nl2br}
</td>
</tr>
{/if}
<tr>
<td style="padding:6px; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;">
Дата
</td>
<td style="padding:6px; width:170; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;">
{$order->date|date} {$order->date|time}
</td>
</tr>
</table>
<h1 style="font-weight:normal;font-family:arial;">Вы заказали:</h1>
<table cellpadding="6" cellspacing="0" style="border-collapse: collapse;">
{foreach name=purchases from=$purchases item=purchase}
<tr>
<td align="center" style="padding:6px; width:100; padding:6px; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;">
{$image = $purchase->product->images[0]}
<a href="{$config->root_url}/products/{$purchase->product->url}"><img border="0" src="{$image->filename|resize:50:50}"></a>
</td>
<td style="padding:6px; width:250; padding:6px; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;">
<a href="{$config->root_url}/products/{$purchase->product->url}">{$purchase->product_name}</a>
{$purchase->variant_name}
{if $order->paid && $purchase->variant->attachment}
<br>
<a href="{$config->root_url}/order/{$order->url}/{$purchase->variant->attachment}"><font color="green">Скачать {$purchase->variant->attachment}</font></a>
{/if}
</td>
<td align=right style="padding:6px; text-align:right; width:150; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;">
{$purchase->amount} {$settings->units} &times; {$purchase->price|convert:$currency->id}&nbsp;{$currency->sign}
</td>
</tr>
{/foreach}
{if $order->discount}
<tr>
<td style="padding:6px; width:100; padding:6px; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;"></td>
<td style="padding:6px; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;">
Скидка
</td>
<td align=right style="padding:6px; text-align:right; width:170; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;">
{$order->discount}&nbsp;%
</td>
</tr>
{/if}
{if $order->coupon_discount>0}
<tr>
<td style="padding:6px; width:100; padding:6px; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;"></td>
<td style="padding:6px; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;">
Купон {$order->coupon_code}
</td>
<td align=right style="padding:6px; text-align:right; width:170; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;">
&minus;{$order->coupon_discount}&nbsp;{$currency->sign}
</td>
</tr>
{/if}
{if $delivery && !$order->separate_delivery}
<tr>
<td style="padding:6px; width:100; padding:6px; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;"></td>
<td style="padding:6px; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;">
{$delivery->name}
</td>
<td align="right" style="padding:6px; text-align:right; width:170; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;">
{$order->delivery_price|convert:$currency->id}&nbsp;{$currency->sign}
</td>
</tr>
{/if}
<tr>
<td style="padding:6px; width:100; padding:6px; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;"></td>
<td style="padding:6px; background-color:#f0f0f0; border:1px solid #e0e0e0;font-family:arial;font-weight:bold;">
Итого
</td>
<td align="right" style="padding:6px; text-align:right; width:170; background-color:#ffffff; border:1px solid #e0e0e0;font-family:arial;font-weight:bold;">
{$order->total_price|convert:$currency->id}&nbsp;{$currency->sign}
</td>
</tr>
</table>
<br>
Вы всегда можете проверить состояние заказа по ссылке:<br>
<a href="{$config->root_url}/order/{$order->url}">{$config->root_url}/order/{$order->url}</a>
<br>

View File

@@ -0,0 +1,13 @@
{* Письмо восстановления пароля *}
{$subject = 'Новый пароль' scope=parent}
<html>
<body>
<p>{$user->name|escape}, на сайте <a href='http://{$config->root_url}/'>{$settings->site_name}</a> был сделан запрос на восстановление вашего пароля.</p>
<p>Вы можете изменить пароль, перейдя по следующей ссылке:</p>
<p><a href='{$config->root_url}/user/password_remind/{$code}'>Изменить пароль</a></p>
<p>Эта ссылка действует в течение нескольких минут.</p>
<p>Если это письмо пришло вам по ошибке, проигнорируйте его.</p>
</body>
</html>

View File

@@ -0,0 +1,41 @@
{* Страница с формой обратной связи *}
<h1>{$page->name|escape}</h1>
{$page->body}
<h2>Обратная связь</h2>
{if $message_sent}
{$name|escape}, ваше сообщение отправлено.
{else}
<form class="form feedback_form" method="post">
{if $error}
<div class="message_error">
{if $error=='captcha'}
Неверно введена капча
{elseif $error=='empty_name'}
Введите имя
{elseif $error=='empty_email'}
Введите email
{elseif $error=='empty_text'}
Введите сообщение
{/if}
</div>
{/if}
<label>Имя</label>
<input data-format=".+" data-notice="Введите имя" value="{$name|escape}" name="name" maxlength="255" type="text"/>
<label>Email</label>
<input data-format="email" data-notice="Введите email" value="{$email|escape}" name="email" maxlength="255" type="text"/>
<label>Сообщение</label>
<textarea data-format=".+" data-notice="Введите сообщение" value="{$message|escape}" name="message">{$message|escape}</textarea>
<input class="button" type="submit" name="feedback" value="Отправить" />
<div class="captcha"><img src="captcha/image.php?{math equation='rand(10,10000)'}"/></div>
<input class="input_captcha" id="comment_captcha" type="text" name="captcha_code" value="" data-format="\d\d\d\d" data-notice="Введите капчу"/>
</form>
{/if}

View File

@@ -0,0 +1,268 @@
<!DOCTYPE html>
{*
Общий вид страницы
Этот шаблон отвечает за общий вид страниц без центрального блока.
*}
<html>
<head>
<base href="{$config->root_url}/"/>
<title>*{$meta_title|escape}</title>
{* Метатеги *}
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="description" content="{$meta_description|escape}" />
<meta name="keywords" content="{$meta_keywords|escape}" />
<meta name="viewport" content="width=1024"/>
{* Стили *}
<link href="design/{$settings->theme|escape}/css/style.css" rel="stylesheet" type="text/css" media="screen"/>
<link href="design/{$settings->theme|escape}/images/favicon.ico" rel="icon" type="image/x-icon"/>
<link href="design/{$settings->theme|escape}/images/favicon.ico" rel="shortcut icon" type="image/x-icon"/>
{* JQuery *}
<script src="js/jquery/jquery.js" type="text/javascript"></script>
{* Всплывающие подсказки для администратора *}
{if $smarty.session.admin == 'admin'}
<script src ="js/admintooltip/admintooltip.js" type="text/javascript"></script>
<link href="js/admintooltip/css/admintooltip.css" rel="stylesheet" type="text/css" />
{/if}
{* Увеличитель картинок *}
<script type="text/javascript" src="js/fancybox/jquery.fancybox-1.3.4.pack.js"></script>
<link rel="stylesheet" href="js/fancybox/jquery.fancybox-1.3.4.css" type="text/css" media="screen" />
{* Ctrl-навигация на соседние товары *}
<script type="text/javascript" src="js/ctrlnavigate.js"></script>
{* Аяксовая корзина *}
<script src="design/{$settings->theme}/js/jquery-ui.min.js"></script>
<script src="design/{$settings->theme}/js/ajax_cart.js"></script>
{* js-проверка форм *}
<script src="/js/baloon/js/baloon.js" type="text/javascript"></script>
<link href="/js/baloon/css/baloon.css" rel="stylesheet" type="text/css" />
{* Автозаполнитель поиска *}
{literal}
<script src="js/autocomplete/jquery.autocomplete-min.js" type="text/javascript"></script>
<style>
.autocomplete-w1 { position:absolute; top:0px; left:0px; margin:6px 0 0 6px; /* IE6 fix: */ _background:none; _margin:1px 0 0 0; }
.autocomplete { border:1px solid #999; background:#FFF; cursor:default; text-align:left; overflow-x:auto; overflow-y: auto; margin:-6px 6px 6px -6px; /* IE6 specific: */ _height:350px; _margin:0; _overflow-x:hidden; }
.autocomplete .selected { background:#F0F0F0; }
.autocomplete div { padding:2px 5px; white-space:nowrap; }
.autocomplete strong { font-weight:normal; color:#3399FF; }
</style>
<script>
$(function() {
// Автозаполнитель поиска
$(".input_search").autocomplete({
serviceUrl:'ajax/search_products.php',
minChars:1,
noCache: false,
onSelect:
function(value, data){
$(".input_search").closest('form').submit();
},
fnFormatResult:
function(value, data, currentValue){
var reEscape = new RegExp('(\\' + ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'].join('|\\') + ')', 'g');
var pattern = '(' + currentValue.replace(reEscape, '\\$1') + ')';
return (data.image?"<img align=absmiddle src='"+data.image+"'> ":'') + value.replace(new RegExp(pattern, 'gi'), '<strong>$1<\/strong>');
}
});
});
</script>
{/literal}
</head>
<body>
<!-- Верхняя строка -->
<div id="top_background">
<div id="top">
<!-- Меню -->
<ul id="menu">
{foreach $pages as $p}
{* Выводим только страницы из первого меню *}
{if $p->menu_id == 1}
<li {if $page && $page->id == $p->id}class="selected"{/if}>
<a data-page="{$p->id}" href="{$p->url}">{$p->name|escape}</a>
</li>
{/if}
{/foreach}
</ul>
<!-- Меню (The End) -->
<!-- Корзина -->
<div id="cart_informer">
{* Обновляемая аяксом корзина должна быть в отдельном файле *}
{include file='cart_informer.tpl'}
</div>
<!-- Корзина (The End)-->
<!-- Вход пользователя -->
<div id="account">
{if $user}
<span id="username">
<a href="user">{$user->name}</a>{if $group->discount>0},
ваша скидка &mdash; {$group->discount}%{/if}
</span>
<a id="logout" href="user/logout">выйти</a>
{else}
<a id="register" href="user/register">Регистрация</a>
<a id="login" href="user/login">Вход</a>
{/if}
</div>
<!-- Вход пользователя (The End)-->
</div>
</div>
<!-- Верхняя строка (The End)-->
<!-- Шапка -->
<div id="header">
<div id="logo">
<a href="/"><img src="design/{$settings->theme|escape}/images/logo.png" title="{$settings->site_name|escape}" alt="{$settings->site_name|escape}"/></a>
</div>
<div id="contact">
(095) <span id="phone">545-54-54</span>
<div id="address">Москва, шоссе Энтузиастов 45/31, офис 453</div>
</div>
</div>
<!-- Шапка (The End)-->
<!-- Вся страница -->
<div id="main">
<!-- Основная часть -->
<div id="content">
{$content}
</div>
<!-- Основная часть (The End) -->
<div id="left">
<!-- Поиск-->
<div id="search">
<form action="products">
<input class="input_search" type="text" name="keyword" value="{$keyword|escape}" placeholder="Поиск товара"/>
<input class="button_search" value="" type="submit" />
</form>
</div>
<!-- Поиск (The End)-->
<!-- Меню каталога -->
<div id="catalog_menu">
{* Рекурсивная функция вывода дерева категорий *}
{function name=categories_tree}
{if $categories}
<ul>
{foreach $categories as $c}
{* Показываем только видимые категории *}
{if $c->visible}
<li>
{if $c->image}<img src="{$config->categories_images_dir}{$c->image}" alt="{$c->name}">{/if}
<a {if $category->id == $c->id}class="selected"{/if} href="catalog/{$c->url}" data-category="{$c->id}">{$c->name}</a>
{categories_tree categories=$c->subcategories}
</li>
{/if}
{/foreach}
</ul>
{/if}
{/function}
{if $category->id == $c->id}
{if in_array($category->id, $c->children)}
{categories_tree categories=$c->subcategories}
{/if}
{/if}
</div>
<!-- Меню каталога (The End)-->
<!-- Все бренды -->
{* Выбираем в переменную $all_brands все бренды *}
{get_brands var=all_brands}
{if $all_brands}
<div id="all_brands">
<h2>Все бренды:</h2>
{foreach $all_brands as $b}
{if $b->image}
<a href="brands/{$b->url}"><img src="{$config->brands_images_dir}{$b->image}" alt="{$b->name|escape}"></a>
{else}
<a href="brands/{$b->url}">{$b->name}</a>
{/if}
{/foreach}
</div>
{/if}
<!-- Все бренды (The End)-->
<!-- Выбор валюты -->
{* Выбор валюты только если их больше одной *}
{if $currencies|count>1}
<div id="currencies">
<h2>Валюта</h2>
<ul>
{foreach from=$currencies item=c}
{if $c->enabled}
<li class="{if $c->id==$currency->id}selected{/if}"><a href='{url currency_id=$c->id}'>{$c->name|escape}</a></li>
{/if}
{/foreach}
</ul>
</div>
{/if}
<!-- Выбор валюты (The End) -->
<!-- Просмотренные товары -->
{get_browsed_products var=browsed_products limit=20}
{if $browsed_products}
<h2>Вы просматривали:</h2>
<ul id="browsed_products">
{foreach $browsed_products as $browsed_product}
<li>
<a href="products/{$browsed_product->url}"><img src="{$browsed_product->image->filename|resize:50:50}" alt="{$browsed_product->name}" title="{$browsed_product->name}"></a>
</li>
{/foreach}
</ul>
{/if}
<!-- Просмотренные товары (The End)-->
<!-- Меню блога -->
{* Выбираем в переменную $last_posts последние записи *}
{get_posts var=last_posts limit=5}
{if $last_posts}
<div id="blog_menu">
<h2>Новые записи в <a href="blog">блоге</a></h2>
{foreach $last_posts as $post}
<ul>
<li data-post="{$post->id}">{$post->date|date} <a href="blog/{$post->url}">{$post->name|escape}</a></li>
</ul>
{/foreach}
</div>
{/if}
<!-- Меню блога (The End) -->
</div>
</div>
<!-- Вся страница (The End)-->
<!-- Футер -->
<div id="footer">
<a href="{$config->root_url}">{$settings->site_name|escape}</a>
</div>
<!-- Футер (The End)-->
</body>
</html>

View File

@@ -0,0 +1,22 @@
{* Страница входа пользователя *}
{$meta_title = "Вход" scope=parent}
<h1>Вход</h1>
{if $error}
<div class="message_error">
{if $error == 'login_incorrect'}Неверный логин или пароль
{elseif $error == 'user_disabled'}Ваш аккаунт еще не активирован.
{else}{$error}{/if}
</div>
{/if}
<form class="form login_form" method="post">
<label>Email</label>
<input type="text" name="email" data-format="email" data-notice="Введите email" value="{$email|escape}" maxlength="255" />
<label>Пароль (<a href="user/password_remind">напомнить</a>)</label>
<input type="password" name="password" data-format=".+" data-notice="Введите пароль" value="" />
<input type="submit" class="button" name="login" value="Войти">
</form>

View File

@@ -0,0 +1,184 @@
{* Главная страница магазина *}
{* Для того чтобы обернуть центральный блок в шаблон, отличный от index.tpl *}
{* Укажите нужный шаблон строкой ниже. Это работает и для других модулей *}
{$wrapper = 'index.tpl' scope=parent}
{* Заголовок страницы *}
<h1>{$page->header}</h1>
{* Тело страницы *}
{$page->body}
{* Рекомендуемые товары *}
{get_featured_products var=featured_products}
{if $featured_products}
<!-- Список товаров-->
<h1>Рекомендуемые товары</h1>
<ul class="tiny_products">
{foreach $featured_products as $product}
<!-- Товар-->
<li class="product">
<!-- Фото товара -->
{if $product->image}
<div class="image">
<a href="products/{$product->url}"><img src="{$product->image->filename|resize:200:200}" alt="{$product->name|escape}"/></a>
</div>
{/if}
<!-- Фото товара (The End) -->
<!-- Название товара -->
<h3><a data-product="{$product->id}" href="products/{$product->url}">{$product->name|escape}</a></h3>
<!-- Название товара (The End) -->
{if $product->variants|count > 0}
<!-- Выбор варианта товара -->
<form class="variants" action="/cart">
<table>
{foreach $product->variants as $v}
<tr class="variant">
<td>
<input id="featured_{$v->id}" name="variant" value="{$v->id}" type="radio" class="variant_radiobutton" {if $v@first}checked{/if} {if $product->variants|count<2}style="display:none;"{/if}/>
</td>
<td>
{if $v->name}<label class="variant_name" for="featured_{$v->id}">{$v->name}</label>{/if}
</td>
<td>
{if $v->compare_price > 0}<span class="compare_price">{$v->compare_price|convert}</span>{/if}
<span class="price">{$v->price|convert} <span class="currency">{$currency->sign|escape}</span></span>
</td>
</tr>
{/foreach}
</table>
<input type="submit" class="button" value="в корзину" data-result-text="добавлено"/>
</form>
<!-- Выбор варианта товара (The End) -->
{else}
Нет в наличии
{/if}
</li>
<!-- Товар (The End)-->
{/foreach}
</ul>
{/if}
{* Новинки *}
{get_new_products var=new_products limit=3}
{if $new_products}
<h1>Новинки</h1>
<!-- Список товаров-->
<ul class="tiny_products">
{foreach $new_products as $product}
<!-- Товар-->
<li class="product">
<!-- Фото товара -->
{if $product->image}
<div class="image">
<a href="products/{$product->url}"><img src="{$product->image->filename|resize:200:200}" alt="{$product->name|escape}"/></a>
</div>
{/if}
<!-- Фото товара (The End) -->
<!-- Название товара -->
<h3><a data-product="{$product->id}" href="products/{$product->url}">{$product->name|escape}</a></h3>
<!-- Название товара (The End) -->
{if $product->variants|count > 0}
<!-- Выбор варианта товара -->
<form class="variants" action="/cart">
<table>
{foreach $product->variants as $v}
<tr class="variant">
<td>
<input id="new_{$v->id}" name="variant" value="{$v->id}" type="radio" class="variant_radiobutton" {if $v@first}checked{/if} {if $product->variants|count<2}style="display:none;"{/if}/>
</td>
<td>
{if $v->name}<label class="variant_name" for="new_{$v->id}">{$v->name}</label>{/if}
</td>
<td>
{if $v->compare_price > 0}<span class="compare_price">{$v->compare_price|convert}</span>{/if}
<span class="price">{$v->price|convert} <span class="currency">{$currency->sign|escape}</span></span>
</td>
</tr>
{/foreach}
</table>
<input type="submit" class="button" value="в корзину" data-result-text="добавлено"/>
</form>
<!-- Выбор варианта товара (The End) -->
{else}
Нет в наличии
{/if}
</li>
<!-- Товар (The End)-->
{/foreach}
</ul>
{/if}
{* Акционные товары *}
{get_discounted_products var=discounted_products limit=9}
{if $discounted_products}
<h1>Акционные товары</h1>
<!-- Список товаров-->
<ul class="tiny_products">
{foreach $discounted_products as $product}
<!-- Товар-->
<li class="product">
<!-- Фото товара -->
{if $product->image}
<div class="image">
<a href="products/{$product->url}"><img src="{$product->image->filename|resize:200:200}" alt="{$product->name|escape}"/></a>
</div>
{/if}
<!-- Фото товара (The End) -->
<!-- Название товара -->
<h3><a data-product="{$product->id}" href="products/{$product->url}">{$product->name|escape}</a></h3>
<!-- Название товара (The End) -->
{if $product->variants|count > 0}
<!-- Выбор варианта товара -->
<form class="variants" action="/cart">
<table>
{foreach $product->variants as $v}
<tr class="variant">
<td>
<input id="discounted_{$v->id}" name="variant" value="{$v->id}" type="radio" class="variant_radiobutton" {if $v@first}checked{/if} {if $product->variants|count<2}style="display:none;"{/if}/>
</td>
<td>
{if $v->name}<label class="variant_name" for="discounted_{$v->id}">{$v->name}</label>{/if}
</td>
<td>
{if $v->compare_price > 0}<span class="compare_price">{$v->compare_price|convert}</span>{/if}
<span class="price">{$v->price|convert} <span class="currency">{$currency->sign|escape}</span></span>
</td>
</tr>
{/foreach}
</table>
<input type="submit" class="button" value="в корзину" data-result-text="добавлено"/>
</form>
<!-- Выбор варианта товара (The End) -->
{else}
Нет в наличии
{/if}
</li>
<!-- Товар (The End)-->
{/foreach}
</ul>
{/if}

View File

@@ -0,0 +1,215 @@
{* Страница заказа *}
{$meta_title = "Ваш заказ №`$order->id`" scope=parent}
<h1>Ваш заказ №{$order->id}
{if $order->status == 0}принят{/if}
{if $order->status == 1}в обработке{elseif $order->status == 2}выполнен{/if}
{if $order->paid == 1}, оплачен{else}{/if}
</h1>
{* Список покупок *}
<table id="purchases">
{foreach $purchases as $purchase}
<tr>
{* Изображение товара *}
<td class="image">
{$image = $purchase->product->images|first}
{if $image}
<a href="products/{$purchase->product->url}"><img src="{$image->filename|resize:50:50}" alt="{$product->name|escape}"></a>
{/if}
</td>
{* Название товара *}
<td class="name">
<a href="/products/{$purchase->product->url}">{$purchase->product_name|escape}</a>
{$purchase->variant_name|escape}
{if $order->paid && $purchase->variant->attachment}
<a class="download_attachment" href="order/{$order->url}/{$purchase->variant->attachment}">скачать файл</a>
{/if}
</td>
{* Цена за единицу *}
<td class="price">
{($purchase->price)|convert}&nbsp;{$currency->sign}
</td>
{* Количество *}
<td class="amount">
&times; {$purchase->amount}&nbsp;{$settings->units}
</td>
{* Цена *}
<td class="price">
{($purchase->price*$purchase->amount)|convert}&nbsp;{$currency->sign}
</td>
</tr>
{/foreach}
{* Скидка, если есть *}
{if $order->discount > 0}
<tr>
<th class="image"></th>
<th class="name">скидка</th>
<th class="price"></th>
<th class="amount"></th>
<th class="price">
{$order->discount}&nbsp;%
</th>
</tr>
{/if}
{* Купон, если есть *}
{if $order->coupon_discount > 0}
<tr>
<th class="image"></th>
<th class="name">купон</th>
<th class="price"></th>
<th class="amount"></th>
<th class="price">
&minus;{$order->coupon_discount|convert}&nbsp;{$currency->sign}
</th>
</tr>
{/if}
{* Если стоимость доставки входит в сумму заказа *}
{if !$order->separate_delivery && $order->delivery_price>0}
<tr>
<td class="image>"</td>
<td class="name">{$delivery->name|escape}</td>
<td class="price"></td>
<td class="amount"></td>
<td class="price">
{$order->delivery_price|convert}&nbsp;{$currency->sign}
</td>
</tr>
{/if}
{* Итого *}
<tr>
<th class="image"></th>
<th class="name">итого</th>
<th class="price"></th>
<th class="amount"></th>
<th class="price">
{$order->total_price|convert}&nbsp;{$currency->sign}
</th>
</tr>
{* Если стоимость доставки не входит в сумму заказа *}
{if $order->separate_delivery}
<tr>
<td class="image>"</td>
<td class="name">{$delivery->name|escape}</td>
<td class="price"></td>
<td class="amount"></td>
<td class="price">
{$order->delivery_price|convert}&nbsp;{$currency->sign}
</td>
</tr>
{/if}
</table>
{* Детали заказа *}
<h2>Детали заказа</h2>
<table class="order_info">
<tr>
<td>
Дата заказа
</td>
<td>
{$order->date|date} в
{$order->date|time}
</td>
</tr>
{if $order->name}
<tr>
<td>
Имя
</td>
<td>
{$order->name|escape}
</td>
</tr>
{/if}
{if $order->email}
<tr>
<td>
Email
</td>
<td>
{$order->email|escape}
</td>
</tr>
{/if}
{if $order->phone}
<tr>
<td>
Телефон
</td>
<td>
{$order->phone|escape}
</td>
</tr>
{/if}
{if $order->address}
<tr>
<td>
Адрес доставки
</td>
<td>
{$order->address|escape}
</td>
</tr>
{/if}
{if $order->comment}
<tr>
<td>
Комментарий
</td>
<td>
{$order->comment|escape|nl2br}
</td>
</tr>
{/if}
</table>
{if !$order->paid}
{* Выбор способа оплаты *}
{if $payment_methods && !$payment_method && $order->total_price>0}
<form method="post">
<h2>Выберите способ оплаты</h2>
<ul id="deliveries">
{foreach $payment_methods as $payment_method}
<li>
<div class="checkbox">
<input type=radio name=payment_method_id value='{$payment_method->id}' {if $payment_method@first}checked{/if} id=payment_{$payment_method->id}>
</div>
<h3><label for=payment_{$payment_method->id}> {$payment_method->name}, к оплате {$order->total_price|convert:$payment_method->currency_id}&nbsp;{$all_currencies[$payment_method->currency_id]->sign}</label></h3>
<div class="description">
{$payment_method->description}
</div>
</li>
{/foreach}
</ul>
<input type='submit' class="button" value='Закончить заказ'>
</form>
{* Выбраный способ оплаты *}
{elseif $payment_method}
<h2>Способ оплаты &mdash; {$payment_method->name}
<form method=post><input type=submit name='reset_payment_method' value='Выбрать другой способ оплаты'></form>
</h2>
<p>
{$payment_method->description}
</p>
<h2>
К оплате {$order->total_price|convert:$payment_method->currency_id}&nbsp;{$all_currencies[$payment_method->currency_id]->sign}
</h2>
{* Форма оплаты, генерируется модулем оплаты *}
{checkout_form order_id=$order->id module=$payment_method->module}
{/if}
{/if}

View File

@@ -0,0 +1,7 @@
{* Шаблон текстовой страницы *}
<!-- Заголовок страницы -->
<h1 data-page="{$page->id}">{$page->header|escape}</h1>
<!-- Тело страницы -->
{$page->body}

View File

@@ -0,0 +1,55 @@
{* Постраничный вывод *}
{if $total_pages_num>1}
{* Скрипт для листания через ctrl → *}
{* Ссылки на соседние страницы должны иметь id PrevLink и NextLink *}
<script type="text/javascript" src="js/ctrlnavigate.js"></script>
<!-- Листалка страниц -->
<div class="pagination">
{* Количество выводимых ссылок на страницы *}
{$visible_pages = 11}
{* По умолчанию начинаем вывод со страницы 1 *}
{$page_from = 1}
{* Если выбранная пользователем страница дальше середины "окна" - начинаем вывод уже не с первой *}
{if $current_page_num > floor($visible_pages/2)}
{$page_from = max(1, $current_page_num-floor($visible_pages/2)-1)}
{/if}
{* Если выбранная пользователем страница близка к концу навигации - начинаем с "конца-окно" *}
{if $current_page_num > $total_pages_num-ceil($visible_pages/2)}
{$page_from = max(1, $total_pages_num-$visible_pages-1)}
{/if}
{* До какой страницы выводить - выводим всё окно, но не более ощего количества страниц *}
{$page_to = min($page_from+$visible_pages, $total_pages_num-1)}
{* Ссылка на 1 страницу отображается всегда *}
<a {if $current_page_num==1}class="selected"{/if} href="{url page=null}">1</a>
{* Выводим страницы нашего "окна" *}
{section name=pages loop=$page_to start=$page_from}
{* Номер текущей выводимой страницы *}
{$p = $smarty.section.pages.index+1}
{* Для крайних страниц "окна" выводим троеточие, если окно не возле границы навигации *}
{if ($p == $page_from+1 && $p!=2) || ($p == $page_to && $p != $total_pages_num-1)}
<a {if $p==$current_page_num}class="selected"{/if} href="{url page=$p}">...</a>
{else}
<a {if $p==$current_page_num}class="selected"{/if} href="{url page=$p}">{$p}</a>
{/if}
{/section}
{* Ссылка на последнююю страницу отображается всегда *}
<a {if $current_page_num==$total_pages_num}class="selected"{/if} href="{url page=$total_pages_num}">{$total_pages_num}</a>
<a href="{url page=all}">все сразу</a>
{if $current_page_num==2}<a class="prev_page_link" href="{url page=null}">←назад</a>{/if}
{if $current_page_num>2}<a class="prev_page_link" href="{url page=$current_page_num-1}">←назад</a>{/if}
{if $current_page_num<$total_pages_num}<a class="next_page_link" href="{url page=$current_page_num+1}">вперед→</a>{/if}
</div>
<!-- Листалка страниц (The End) -->
{/if}

View File

@@ -0,0 +1,22 @@
{* Письмо пользователю для восстановления пароля *}
{if $email_sent}
<h1>Вам отправлено письмо</h1>
<p>На {$email|escape} отправлено письмо для восстановления пароля.</p>
{else}
<h1>Напоминание пароля</h1>
{if $error}
<div class="message_error">
{if $error == 'user_not_found'}Пользователь не найден
{else}{$error}{/if}
</div>
{/if}
<form class="form" method="post">
<label>Введите email, который вы указывали при регистрации</label>
<input type="text" name="email" data-format="email" data-notice="Введите email" value="{$email|escape}" maxlength="255"/>
<input type="submit" class="button_submit" value="Вспомнить" />
</form>
{/if}

View File

@@ -0,0 +1,88 @@
{* Страница отдельной записи блога *}
<!-- Заголовок /-->
<h1 data-post="{$post->id}">{$post->name|escape}</h1>
<p>{$post->date|date}</p>
<!-- Тело поста /-->
{$post->text}
<!-- Соседние записи /-->
<div id="back_forward">
{if $prev_post}
←&nbsp;<a class="prev_page_link" href="blog/{$prev_post->url}">{$prev_post->name}</a>
{/if}
{if $next_post}
<a class="next_page_link" href="blog/{$next_post->url}">{$next_post->name}</a>&nbsp;→
{/if}
</div>
<!-- Комментарии -->
<div id="comments">
<h2>Комментарии</h2>
{if $comments}
<!-- Список с комментариями -->
<ul class="comment_list">
{foreach $comments as $comment}
<a name="comment_{$comment->id}"></a>
<li>
<!-- Имя и дата комментария-->
<div class="comment_header">
{$comment->name|escape} <i>{$comment->date|date}, {$comment->date|time}</i>
{if !$comment->approved}ожидает модерации</b>{/if}
</div>
<!-- Имя и дата комментария (The End)-->
<!-- Комментарий -->
{$comment->text|escape|nl2br}
<!-- Комментарий (The End)-->
</li>
{/foreach}
</ul>
<!-- Список с комментариями (The End)-->
{else}
<p>
Пока нет комментариев
</p>
{/if}
<!--Форма отправления комментария-->
<!--Подключаем js-проверку формы -->
<script src="/js/baloon/js/default.js" language="JavaScript" type="text/javascript"></script>
<script src="/js/baloon/js/validate.js" language="JavaScript" type="text/javascript"></script>
<script src="/js/baloon/js/baloon.js" language="JavaScript" type="text/javascript"></script>
<link href="/js/baloon/css/baloon.css" rel="stylesheet" type="text/css" />
<form class="comment_form" method="post" action="">
<h2>Написать комментарий</h2>
{if $error}
<div class="message_error">
{if $error=='captcha'}
Неверно введена капча
{elseif $error=='empty_name'}
Введите имя
{elseif $error=='empty_comment'}
Введите комментарий
{/if}
</div>
{/if}
<textarea class="comment_textarea" id="comment_text" name="text" data-format=".+" data-notice="Введите комментарий">{$comment_text}</textarea><br />
<div>
<label for="comment_name">Имя</label>
<input class="input_name" type="text" id="comment_name" name="name" value="{$comment_name|escape}" data-format=".+" data-notice="Введите имя"/><br />
<input class="button" type="submit" name="comment" value="Отправить" />
<label for="comment_captcha">Число</label>
<div class="captcha"><img src="captcha/image.php?{math equation='rand(10,10000)'}"/></div>
<input class="input_captcha" id="comment_captcha" type="text" name="captcha_code" value="" data-format="\d\d\d\d" data-notice="Введите капчу"/>
</div>
</form>
<!--Форма отправления комментария (The End)-->
</div>
<!-- Комментарии (The End) -->

View File

@@ -0,0 +1,228 @@
{* Страница товара *}
<!-- Хлебные крошки /-->
<div id="path">
<a href="./">Главная</a>
{foreach from=$category->path item=cat}
→ <a href="catalog/{$cat->url}">{$cat->name|escape}</a>
{/foreach}
{if $brand}
→ <a href="catalog/{$cat->url}/{$brand->url}">{$brand->name|escape}</a>
{/if}
{$product->name|escape}
</div>
<!-- Хлебные крошки #End /-->
<h1 data-product="{$product->id}">{$product->name|escape}</h1>
<div class="product">
<!-- Большое фото -->
{if $product->image}
<div class="image">
<a href="{$product->image->filename|resize:800:600:w}" class="zoom" data-rel="group"><img src="{$product->image->filename|resize:300:300}" alt="{$product->product->name|escape}" /></a>
</div>
{/if}
<!-- Большое фото (The End)-->
<!-- Описание товара -->
<div class="description">
{$product->body}
{if $product->variants|count > 0}
<!-- Выбор варианта товара -->
<form class="variants" action="/cart">
<table>
{foreach $product->variants as $v}
<tr class="variant">
<td>
<input id="product_{$v->id}" name="variant" value="{$v->id}" type="radio" class="variant_radiobutton" {if $product->variant->id==$v->id}checked{/if} {if $product->variants|count<2}style="display:none;"{/if}/>
</td>
<td>
{if $v->name}<label class="variant_name" for="product_{$v->id}">{$v->name}</label>{/if}
</td>
<td>
{if $v->compare_price > 0}<span class="compare_price">{$v->compare_price|convert}</span>{/if}
<span class="price">{$v->price|convert} <span class="currency">{$currency->sign|escape}</span></span>
</td>
</tr>
{/foreach}
</table>
<input type="submit" class="button" value="в корзину" data-result-text="добавлено"/>
</form>
<!-- Выбор варианта товара (The End) -->
{else}
Нет в наличии
{/if}
</div>
<!-- Описание товара (The End)-->
<!-- Дополнительные фото продукта -->
{if $product->images|count>1}
<div class="images">
{* cut удаляет первую фотографию, если нужно начать 2-й - пишем cut:2 и тд *}
{foreach $product->images|cut as $i=>$image}
<a href="{$image->filename|resize:800:600:w}" class="zoom" data-rel="group"><img src="{$image->filename|resize:95:95}" alt="{$product->name|escape}" /></a>
{/foreach}
</div>
{/if}
<!-- Дополнительные фото продукта (The End)-->
<p>&nbsp;</p>
{if $product->features}
<!-- Характеристики товара -->
<h2>Характеристики</h2>
<ul class="features">
{foreach $product->features as $f}
<li>
<label>{$f->name}</label>
<span>{$f->value}</span>
</li>
{/foreach}
</ul>
<!-- Характеристики товара (The End)-->
{/if}
<!-- Соседние товары /-->
<div id="back_forward">
{if $prev_product}
←&nbsp;<a class="prev_page_link" href="products/{$prev_product->url}">{$prev_product->name|escape}</a>
{/if}
{if $next_product}
<a class="next_page_link" href="products/{$next_product->url}">{$next_product->name|escape}</a>&nbsp;→
{/if}
</div>
</div>
<!-- Описание товара (The End)-->
{* Связанные товары *}
{if $related_products}
<h2>Так же советуем посмотреть</h2>
<!-- Список каталога товаров-->
<ul class="tiny_products">
{foreach $related_products as $product}
<!-- Товар-->
<li class="product">
<!-- Фото товара -->
{if $product->image}
<div class="image">
<a href="products/{$product->url}"><img src="{$product->image->filename|resize:200:200}" alt="{$product->name|escape}"/></a>
</div>
{/if}
<!-- Фото товара (The End) -->
<!-- Название товара -->
<h3><a data-product="{$product->id}" href="products/{$product->url}">{$product->name|escape}</a></h3>
<!-- Название товара (The End) -->
{if $product->variants|count > 0}
<!-- Выбор варианта товара -->
<form class="variants" action="/cart">
<table>
{foreach $product->variants as $v}
<tr class="variant">
<td>
<input id="related_{$v->id}" name="variant" value="{$v->id}" type="radio" class="variant_radiobutton" {if $v@first}checked{/if} {if $product->variants|count<2} style="display:none;"{/if}/>
</td>
<td>
{if $v->name}<label class="variant_name" for="related_{$v->id}">{$v->name}</label>{/if}
</td>
<td>
{if $v->compare_price > 0}<span class="compare_price">{$v->compare_price|convert}</span>{/if}
<span class="price">{$v->price|convert} <span class="currency">{$currency->sign|escape}</span></span>
</td>
</tr>
{/foreach}
</table>
<input type="submit" class="button" value="в корзину" data-result-text="добавлено"/>
</form>
<!-- Выбор варианта товара (The End) -->
{else}
Нет в наличии
{/if}
</li>
<!-- Товар (The End)-->
{/foreach}
</ul>
{/if}
<!-- Комментарии -->
<div id="comments">
<h2>Комментарии</h2>
{if $comments}
<!-- Список с комментариями -->
<ul class="comment_list">
{foreach $comments as $comment}
<a name="comment_{$comment->id}"></a>
<li>
<!-- Имя и дата комментария-->
<div class="comment_header">
{$comment->name|escape} <i>{$comment->date|date}, {$comment->date|time}</i>
{if !$comment->approved}ожидает модерации</b>{/if}
</div>
<!-- Имя и дата комментария (The End)-->
<!-- Комментарий -->
{$comment->text|escape|nl2br}
<!-- Комментарий (The End)-->
</li>
{/foreach}
</ul>
<!-- Список с комментариями (The End)-->
{else}
<p>
Пока нет комментариев
</p>
{/if}
<!--Форма отправления комментария-->
<form class="comment_form" method="post">
<h2>Написать комментарий</h2>
{if $error}
<div class="message_error">
{if $error=='captcha'}
Неверно введена капча
{elseif $error=='empty_name'}
Введите имя
{elseif $error=='empty_comment'}
Введите комментарий
{/if}
</div>
{/if}
<textarea class="comment_textarea" id="comment_text" name="text" data-format=".+" data-notice="Введите комментарий">{$comment_text}</textarea><br />
<div>
<label for="comment_name">Имя</label>
<input class="input_name" type="text" id="comment_name" name="name" value="{$comment_name}" data-format=".+" data-notice="Введите имя"/><br />
<input class="button" type="submit" name="comment" value="Отправить" />
<label for="comment_captcha">Число</label>
<div class="captcha"><img src="captcha/image.php?{math equation='rand(10,10000)'}" alt='captcha'/></div>
<input class="input_captcha" id="comment_captcha" type="text" name="captcha_code" value="" data-format="\d\d\d\d" data-notice="Введите капчу"/>
</div>
</form>
<!--Форма отправления комментария (The End)-->
</div>
<!-- Комментарии (The End) -->
{literal}
<script>
$(function() {
// Раскраска строк характеристик
$(".features li:even").addClass('even');
// Зум картинок
$("a.zoom").fancybox({ 'hideOnContentClick' : true });
});
</script>
{/literal}

View File

@@ -0,0 +1,158 @@
{* Список товаров *}
<!-- Хлебные крошки /-->
<div id="path">
<a href="/">Главная</a>
{if $category}
{foreach from=$category->path item=cat}
→ <a href="catalog/{$cat->url}">{$cat->name|escape}</a>
{/foreach}
{if $brand}
→ <a href="catalog/{$cat->url}/{$brand->url}">{$brand->name|escape}</a>
{/if}
{elseif $brand}
→ <a href="brands/{$brand->url}">{$brand->name|escape}</a>
{elseif $keyword}
→ Поиск
{/if}
</div>
<!-- Хлебные крошки #End /-->
{* Заголовок страницы *}
{if $keyword}
<h1>Поиск {$keyword|escape}</h1>
{elseif $page}
<h1>{$page->name|escape}</h1>
{else}
<h1>{$category->name|escape} {$brand->name|escape} {$keyword|escape}</h1>
{/if}
{* Описание страницы (если задана) *}
{$page->body}
{if $current_page_num==1}
{* Описание категории *}
{$category->description}
{/if}
{* Фильтр по брендам *}
{if $category->brands}
<div id="brands">
<a href="catalog/{$category->url}" {if !$brand->id}class="selected"{/if}>Все бренды</a>
{foreach name=brands item=b from=$category->brands}
{if $b->image}
<a data-brand="{$b->id}" href="catalog/{$category->url}/{$b->url}"><img src="{$config->brands_images_dir}{$b->image}" alt="{$b->name|escape}"></a>
{else}
<a data-brand="{$b->id}" href="catalog/{$category->url}/{$b->url}" {if $b->id == $brand->id}class="selected"{/if}>{$b->name|escape}</a>
{/if}
{/foreach}
</div>
{/if}
{* Описание бренда *}
{$brand->description}
{* Фильтр по свойствам *}
{if $features}
<table id="features">
{foreach $features as $f}
<tr>
<td class="feature_name" data-feature="{$f->id}">
{$f->name}:
</td>
<td class="feature_values">
<a href="{url params=[$f->id=>null, page=>null]}" {if !$smarty.get.$f@key}class="selected"{/if}>Все</a>
{foreach $f->options as $o}
<a href="{url params=[$f->id=>$o->value, page=>null]}" {if $smarty.get.$f@key == $o->value}class="selected"{/if}>{$o->value|escape}</a>
{/foreach}
</td>
</tr>
{/foreach}
</table>
{/if}
<!--Каталог товаров-->
{if $products}
{* Сортировка *}
{if $products|count>0}
<div class="sort">
Сортировать по
<a {if $sort=='position'} class="selected"{/if} href="{url sort=position page=null}">умолчанию</a>
<a {if $sort=='price'} class="selected"{/if} href="{url sort=price page=null}">цене</a>
<a {if $sort=='name'} class="selected"{/if} href="{url sort=name page=null}">названию</a>
</div>
{/if}
{include file='pagination.tpl'}
<!-- Список товаров-->
<ul class="products">
{foreach $products as $product}
<!-- Товар-->
<li class="product">
<!-- Фото товара -->
{if $product->image}
<div class="image">
<a href="products/{$product->url}"><img src="{$product->image->filename|resize:200:200}" alt="{$product->name|escape}"/></a>
</div>
{/if}
<!-- Фото товара (The End) -->
<div class="product_info">
<!-- Название товара -->
<h3 class="{if $product->featured}featured{/if}"><a data-product="{$product->id}" href="products/{$product->url}">{$product->name|escape}</a></h3>
<!-- Название товара (The End) -->
<!-- Описание товара -->
<div class="annotation">{$product->annotation}</div>
<!-- Описание товара (The End) -->
{if $product->variants|count > 0}
<!-- Выбор варианта товара -->
<form class="variants" action="/cart">
<table>
{foreach $product->variants as $v}
<tr class="variant">
<td>
<input id="variants_{$v->id}" name="variant" value="{$v->id}" type="radio" class="variant_radiobutton" {if $v@first}checked{/if} {if $product->variants|count<2}style="display:none;"{/if}/>
</td>
<td>
{if $v->name}<label class="variant_name" for="variants_{$v->id}">{$v->name}</label>{/if}
</td>
<td>
{if $v->compare_price > 0}<span class="compare_price">{$v->compare_price|convert}</span>{/if}
<span class="price">{$v->price|convert} <span class="currency">{$currency->sign|escape}</span></span>
</td>
</tr>
{/foreach}
</table>
<input type="submit" class="button" value="в корзину" data-result-text="добавлено"/>
</form>
<!-- Выбор варианта товара (The End) -->
{else}
Нет в наличии
{/if}
</div>
</li>
<!-- Товар (The End)-->
{/foreach}
</ul>
{include file='pagination.tpl'}
<!-- Список товаров (The End)-->
{else}
Товары не найдены
{/if}
<!--Каталог товаров (The End)-->

View File

@@ -0,0 +1,33 @@
{* Страница регистрации *}
{$meta_title = "Регистрация" scope=parent}
<h1>Регистрация</h1>
{if $error}
<div class="message_error">
{if $error == 'empty_name'}Введите имя
{elseif $error == 'empty_email'}Введите email
{elseif $error == 'empty_password'}Введите пароль
{elseif $error == 'user_exists'}Пользователь с таким email уже зарегистрирован
{elseif $error == 'captcha'}Неверно введена капча
{else}{$error}{/if}
</div>
{/if}
<form class="form register_form" method="post">
<label>Имя</label>
<input type="text" name="name" data-format=".+" data-notice="Введите имя" value="{$name|escape}" maxlength="255" />
<label>Email</label>
<input type="text" name="email" data-format="email" data-notice="Введите email" value="{$email|escape}" maxlength="255" />
<label>Пароль</label>
<input type="password" name="password" data-format=".+" data-notice="Введите пароль" value="" />
<div class="captcha"><img src="captcha/image.php?{math equation='rand(10,10000)'}"/></div>
<input class="input_captcha" id="comment_captcha" type="text" name="captcha_code" value="" data-format="\d\d\d\d" data-notice="Введите капчу"/>
<input type="submit" class="button" name="register" value="Зарегистрироваться">
</form>

View File

@@ -0,0 +1,39 @@
{* Шаблон страницы зарегистрированного пользователя *}
<h1>{$user->name|escape}</h1>
{if $error}
<div class="message_error">
{if $error == 'empty_name'}Введите имя
{elseif $error == 'empty_email'}Введите email
{elseif $error == 'empty_password'}Введите пароль
{elseif $error == 'user_exists'}Пользователь с таким email уже зарегистрирован
{else}{$error}{/if}
</div>
{/if}
<form class="form" method="post">
<label>Имя</label>
<input data-format=".+" data-notice="Введите имя" value="{$name|escape}" name="name" maxlength="255" type="text"/>
<label>Email</label>
<input data-format="email" data-notice="Введите email" value="{$email|escape}" name="email" maxlength="255" type="text"/></td>
<label><a href='#' onclick="$('#password').show();return false;">Изменить пароль</a></label>
<input id="password" value="" name="password" type="password" style="display:none;"/>
<input type="submit" class="button" value="Сохранить">
</form>
{if $orders}
<p></p>
<h2>Ваши заказы</h2>
<ul id="orders_history">
{foreach name=orders item=order from=$orders}
<li>
{$order->date|date} <a href='order/{$order->url}'>Заказ №{$order->id}</a>
{if $order->paid == 1}оплачен,{/if}
{if $order->status == 0}ждет обработки{elseif $order->status == 1}в обработке{elseif $order->status == 2}выполнен{/if}
</li>
{/foreach}
</ul>
{/if}

Binary file not shown.

After

Width:  |  Height:  |  Size: 886 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@@ -0,0 +1,65 @@
// Аяксовая корзина
$('form.variants').live('submit', function(e) {
e.preventDefault();
button = $(this).find('input[type="submit"]');
if($(this).find('input[name=variant]:checked').size()>0)
variant = $(this).find('input[name=variant]:checked').val();
if($(this).find('select[name=variant]').size()>0)
variant = $(this).find('select').val();
$.ajax({
url: "ajax/cart.php",
data: {variant: variant},
dataType: 'json',
success: function(data){
$('#cart_informer').html(data);
if(button.attr('data-result-text'))
button.val(button.attr('data-result-text'));
}
});
var o1 = $(this).offset();
var o2 = $('#cart_informer').offset();
var dx = o1.left - o2.left;
var dy = o1.top - o2.top;
var distance = Math.sqrt(dx * dx + dy * dy);
$(this).closest('.product').find('.image img').effect("transfer", { to: $("#cart_informer"), className: "transfer_class" }, distance);
$('.transfer_class').html($(this).closest('.product').find('.image').html());
$('.transfer_class').find('img').css('height', '100%');
return false;
});
/*
// Аяксовая корзина
$('a[href*="cart?variant"]').live('click', function(e) {
e.preventDefault();
//variant_id = $(this).attr('id');
href = $(this).attr('href');
pattern = /\/?cart\?variant=(\d+)$/;
variant_id = pattern.exec(href)[1];
link = $(this);
$.ajax({
url: "ajax/cart.php",
data: {variant: variant_id},
dataType: 'json',
success: function(data){
$('#cart_informer').html(data);
//if(link.attr('added_text'))
// link.html(link.attr('added_text'));
//link.attr('href', '/cart');
}
});
var o1 = $(this).offset();
var o2 = $('#cart_informer').offset();
var dx = o1.left - o2.left;
var dy = o1.top - o2.top;
var distance = Math.sqrt(dx * dx + dy * dy);
$(this).closest('.product').find('.image img').effect("transfer", { to: $("#cart_informer"), className: "transfer_class" }, distance);
$('.transfer_class').html($(this).closest('.product').find('.image').html());
$('.transfer_class').find('img').css('height', '100%');
return false;
});
*/

46
design/default/js/jquery-ui.min.js vendored Normal file
View File

@@ -0,0 +1,46 @@
/*
* jQuery UI Effects 1.8.16
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Effects/
*/
jQuery.effects||function(f,j){function m(c){var a;if(c&&c.constructor==Array&&c.length==3)return c;if(a=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c))return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10)];if(a=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c))return[parseFloat(a[1])*2.55,parseFloat(a[2])*2.55,parseFloat(a[3])*2.55];if(a=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c))return[parseInt(a[1],
16),parseInt(a[2],16),parseInt(a[3],16)];if(a=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c))return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)];if(/rgba\(0, 0, 0, 0\)/.exec(c))return n.transparent;return n[f.trim(c).toLowerCase()]}function s(c,a){var b;do{b=f.curCSS(c,a);if(b!=""&&b!="transparent"||f.nodeName(c,"body"))break;a="backgroundColor"}while(c=c.parentNode);return m(b)}function o(){var c=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,
a={},b,d;if(c&&c.length&&c[0]&&c[c[0]])for(var e=c.length;e--;){b=c[e];if(typeof c[b]=="string"){d=b.replace(/\-(\w)/g,function(g,h){return h.toUpperCase()});a[d]=c[b]}}else for(b in c)if(typeof c[b]==="string")a[b]=c[b];return a}function p(c){var a,b;for(a in c){b=c[a];if(b==null||f.isFunction(b)||a in t||/scrollbar/.test(a)||!/color/i.test(a)&&isNaN(parseFloat(b)))delete c[a]}return c}function u(c,a){var b={_:0},d;for(d in a)if(c[d]!=a[d])b[d]=a[d];return b}function k(c,a,b,d){if(typeof c=="object"){d=
a;b=null;a=c;c=a.effect}if(f.isFunction(a)){d=a;b=null;a={}}if(typeof a=="number"||f.fx.speeds[a]){d=b;b=a;a={}}if(f.isFunction(b)){d=b;b=null}a=a||{};b=b||a.duration;b=f.fx.off?0:typeof b=="number"?b:b in f.fx.speeds?f.fx.speeds[b]:f.fx.speeds._default;d=d||a.complete;return[c,a,b,d]}function l(c){if(!c||typeof c==="number"||f.fx.speeds[c])return true;if(typeof c==="string"&&!f.effects[c])return true;return false}f.effects={};f.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor",
"borderTopColor","borderColor","color","outlineColor"],function(c,a){f.fx.step[a]=function(b){if(!b.colorInit){b.start=s(b.elem,a);b.end=m(b.end);b.colorInit=true}b.elem.style[a]="rgb("+Math.max(Math.min(parseInt(b.pos*(b.end[0]-b.start[0])+b.start[0],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[1]-b.start[1])+b.start[1],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[2]-b.start[2])+b.start[2],10),255),0)+")"}});var n={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,
0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,
211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},q=["add","remove","toggle"],t={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};f.effects.animateClass=function(c,a,b,
d){if(f.isFunction(b)){d=b;b=null}return this.queue(function(){var e=f(this),g=e.attr("style")||" ",h=p(o.call(this)),r,v=e.attr("class");f.each(q,function(w,i){c[i]&&e[i+"Class"](c[i])});r=p(o.call(this));e.attr("class",v);e.animate(u(h,r),{queue:false,duration:a,easing:b,complete:function(){f.each(q,function(w,i){c[i]&&e[i+"Class"](c[i])});if(typeof e.attr("style")=="object"){e.attr("style").cssText="";e.attr("style").cssText=g}else e.attr("style",g);d&&d.apply(this,arguments);f.dequeue(this)}})})};
f.fn.extend({_addClass:f.fn.addClass,addClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{add:c},a,b,d]):this._addClass(c)},_removeClass:f.fn.removeClass,removeClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{remove:c},a,b,d]):this._removeClass(c)},_toggleClass:f.fn.toggleClass,toggleClass:function(c,a,b,d,e){return typeof a=="boolean"||a===j?b?f.effects.animateClass.apply(this,[a?{add:c}:{remove:c},b,d,e]):this._toggleClass(c,a):f.effects.animateClass.apply(this,
[{toggle:c},a,b,d])},switchClass:function(c,a,b,d,e){return f.effects.animateClass.apply(this,[{add:a,remove:c},b,d,e])}});f.extend(f.effects,{version:"1.8.16",save:function(c,a){for(var b=0;b<a.length;b++)a[b]!==null&&c.data("ec.storage."+a[b],c[0].style[a[b]])},restore:function(c,a){for(var b=0;b<a.length;b++)a[b]!==null&&c.css(a[b],c.data("ec.storage."+a[b]))},setMode:function(c,a){if(a=="toggle")a=c.is(":hidden")?"show":"hide";return a},getBaseline:function(c,a){var b;switch(c[0]){case "top":b=
0;break;case "middle":b=0.5;break;case "bottom":b=1;break;default:b=c[0]/a.height}switch(c[1]){case "left":c=0;break;case "center":c=0.5;break;case "right":c=1;break;default:c=c[1]/a.width}return{x:c,y:b}},createWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent();var a={width:c.outerWidth(true),height:c.outerHeight(true),"float":c.css("float")},b=f("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),
d=document.activeElement;c.wrap(b);if(c[0]===d||f.contains(c[0],d))f(d).focus();b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(e,g){a[g]=c.css(g);if(isNaN(parseInt(a[g],10)))a[g]="auto"});c.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})}return b.css(a).show()},removeWrapper:function(c){var a,b=document.activeElement;
if(c.parent().is(".ui-effects-wrapper")){a=c.parent().replaceWith(c);if(c[0]===b||f.contains(c[0],b))f(b).focus();return a}return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=k.apply(this,arguments),b={options:a[1],duration:a[2],callback:a[3]};a=b.options.mode;var d=f.effects[c];if(f.fx.off||!d)return a?this[a](b.duration,b.callback):this.each(function(){b.callback&&b.callback.call(this)});
return d.call(this,b)},_show:f.fn.show,show:function(c){if(l(c))return this._show.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(l(c))return this._hide.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(l(c)||typeof c==="boolean"||f.isFunction(c))return this.__toggle.apply(this,arguments);else{var a=k.apply(this,
arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c),b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c,a,b,d,e){if((a/=e/2)<1)return d/
2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c,a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+b},easeInQuint:function(c,a,b,
d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2,10*(a/e-1))+b},easeOutExpo:function(c,
a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a==e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)*a)+1)+b},easeInElastic:function(c,a,b,
d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);return-(h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g))+b},easeOutElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);return h*Math.pow(2,-10*a)*Math.sin((a*e-c)*2*Math.PI/g)+d+b},easeInOutElastic:function(c,a,b,d,e){c=1.70158;var g=
0,h=d;if(a==0)return b;if((a/=e/2)==2)return b+d;g||(g=e*0.3*1.5);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);if(a<1)return-0.5*h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)+b;return h*Math.pow(2,-10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)*0.5+d+b},easeInBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;return d*(a/=e)*a*((g+1)*a-g)+b},easeOutBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;return d*((a=a/e-1)*a*((g+1)*a+g)+1)+b},easeInOutBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;
if((a/=e/2)<1)return d/2*a*a*(((g*=1.525)+1)*a-g)+b;return d/2*((a-=2)*a*(((g*=1.525)+1)*a+g)+2)+b},easeInBounce:function(c,a,b,d,e){return d-f.easing.easeOutBounce(c,e-a,0,d,e)+b},easeOutBounce:function(c,a,b,d,e){return(a/=e)<1/2.75?d*7.5625*a*a+b:a<2/2.75?d*(7.5625*(a-=1.5/2.75)*a+0.75)+b:a<2.5/2.75?d*(7.5625*(a-=2.25/2.75)*a+0.9375)+b:d*(7.5625*(a-=2.625/2.75)*a+0.984375)+b},easeInOutBounce:function(c,a,b,d,e){if(a<e/2)return f.easing.easeInBounce(c,a*2,0,d,e)*0.5+b;return f.easing.easeOutBounce(c,
a*2-e,0,d,e)*0.5+d*0.5+b}})}(jQuery);
;/*
* jQuery UI Effects Transfer 1.8.16
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Effects/Transfer
*
* Depends:
* jquery.effects.core.js
*/
(function(e){e.effects.transfer=function(a){return this.queue(function(){var b=e(this),c=e(a.options.to),d=c.offset();c={top:d.top,left:d.left,height:c.innerHeight(),width:c.innerWidth()};d=b.offset();var f=e('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(a.options.className).css({top:d.top,left:d.left,height:b.innerHeight(),width:b.innerWidth(),position:"absolute"}).animate(c,a.duration,a.options.easing,function(){f.remove();a.callback&&a.callback.apply(b[0],arguments);
b.dequeue()})})}})(jQuery);
;

0
design/default/locked Normal file
View File

BIN
design/default/preview.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB