pas.order
Сниппет вывода оформленного заказа pas.order
Используется на странице оформления заказа.
Параметры
Параметр | По умолчанию | Описание |
---|---|---|
tpl | pas.get.order | Чанк оформления |
includeTVs | Список ТВ параметров для выборки, через запятую. Например: "action,time" дадут плейсхолдеры [[+action]] и [[+time]] . | |
includeThumbs | Список размеров превьюшек для выборки, через запятую. Например: "120x90,360x240" дадут плейсхолдеры [[+120x90]] и [[+360x240]] . Картинки должны быть заранее сгенерированы в галерее товара. |
Подсказка
Можно использовать и другие общие параметры pdoTools
Оформление
Сниппет рассчитывает на работу с чанком Fenom и передаёт в него 7 переменных:
order
- массив с данными заказа из объектаmsOrder
products
- массив заказанных товаров со всеми их свойствамиuser
- массив данных из объектовmodUser
иmodUserProfile
со всеми свойствами покупателяaddress
- массив данных из объектаmsAddress
со указанными данными для доставкиdelivery
- массив со свойствами выбранной доставки из объектаmsDelivery
payment
- массив со свойствами выбранной оплаты из объектаmsPayment
total
- массив с итоговыми данными заказа:cost
- общая стоимость заказаcart_cost
- отдельная стоимость заказанных товаровdelivery_cost
- отдельная стоимость доставкиcart_count
- количество заказанных товаров
Так же могут присутствовать и данные, переданные при вызове сниппета. Например, в чанке оформления новых писем может быть переменная payment_link
Плейсхолдеры
Вы можете увидеть все доступные плейсхолдеры заказа просто указав пустой чанк:
<pre>
{'!pas.get.order' | snippet : [
'tpl' => '',
]}
</pre>
Создание заказа
Данный сниппет рекомендуется вызывать в связке с другими на странице оформления заказа:
{'!pas.order' | snippet} <!-- Форма оформления заказа, скрывается после его создания -->
{'!pas.get.order' | snippet} <!-- Вывод информации о заказе, показывается после его создания -->
Оформление писем
Для оформления почтовых уведомлений покупателям используется сниппет msGetOrder, если вы включили их отправку в настройках статусов.
По умолчанию все письма расширяют один базовый почтовый шаблон tpl.msEmail
и меняют заданные в нём блоки:
logo
- логотип магазина со ссылкой на главную страницуtitle
- заголовок письмаproducts
- таблица заказанные товаровfooter
- ссылка на сайте в подвале письма
Идентифицировать заказы контента можно по полю context
заказа, и если нужно оформить данные заказы по своему. Например, заменим переменную products
из сниппета msGetOrder на products
из сниппета pas.get.order
{var $pas = $order.context == 'pas'}
{if $pas}
{var $tmp = '!pas.get.order' | snippet : [
'msorder' => $order.id,
'return' => 'data',
]}
{set $products = $tmp.products}
{/if}
Как видите, мы запустили на обработку сниппет pas.get.order
и заменили значение переменной products
. В зависимости от функционала сайта, вы можете переопределить шаблон tpl.msEmail
например так
{var $pas = $order.context == 'pas'}
{if $pas}
{var $tmp = '!pas.get.order' | snippet : [
'msorder' => $order.id,
'return' => 'data',
]}
{set $products = $tmp.products}
{/if}
{var $style = [
'logo' => 'display:block;margin: auto;',
'a' => 'color:#348eda;',
'p' => 'font-family: Arial;color: #666666;font-size: 12px;',
'h' => 'font-family:Arial;color: #111111;font-weight: 200;line-height: 1.2em;margin: 40px 20px;',
'h1' => 'font-size: 36px;',
'h2' => 'font-size: 28px;',
'h3' => 'font-size: 22px;',
'th' => 'font-family: Arial;text-align: left;color: #111111;',
'td' => 'font-family: Arial;text-align: left;color: #111111;',
]}
{var $site_url = ('site_url' | option) | preg_replace : '#/$#' : ''}
{var $assets_url = 'assets_url' | option}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>{'site_name' | option}</title>
</head>
<body style="margin:0;padding:0;background:#f6f6f6;">
<div style="height:100%;padding-top:20px;background:#f6f6f6;">
{block 'logo'}
{if !$pas}
<a href="{$site_url}">
<img style="{$style.logo}"
src="{$site_url}{$assets_url}components/minishop2/img/web/ms2_small@2x.png"
alt="{$site_url}"
width="120" height="90"/>
</a>
{/if}
{/block}
<!-- body -->
<table class="body-wrap" style="padding:0 20px 20px 20px;width: 100%;background:#f6f6f6;margin-top:10px;">
<tr>
<td></td>
<td class="container" style="border:1px solid #f0f0f0;background:#ffffff;width:800px;margin:auto;">
<div class="content">
<table style="width:100%;">
<tr>
<td>
<h3 style="{$style.h}{$style.h3}">
{block 'title'}
{if !$pas}
miniShop2
{else}
PayAndSee
{/if}
{/block}
</h3>
{block 'products'}
{if !$pas}
<table style="width:90%;margin:auto;">
<thead>
<tr>
<th> </th>
<th style="{$style.th}">{'ms2_cart_title' | lexicon}</th>
<th style="{$style.th}">{'ms2_cart_count' | lexicon}</th>
<th style="{$style.th}">{'ms2_cart_weight' | lexicon}</th>
<th style="{$style.th}">{'ms2_cart_cost' | lexicon}</th>
</tr>
</thead>
{foreach $products as $product}
<tr>
<td style="{$style.th}">
{if $product.thumb?}
<img src="{$site_url}{$product.thumb}"
alt="{$product.pagetitle}"
title="{$product.pagetitle}"
width="120" height="90"/>
{else}
<img src="{$site_url}{$assets_url}components/minishop2/img/web/ms2_small@2x.png"
alt="{$product.pagetitle}"
title="{$product.pagetitle}"
width="120" height="90"/>
{/if}
</td>
<td style="{$style.th}">
{if $product.id?}
<a href="{$product.id | url : ['scheme' => 'full']}"
style="{$style.a}">
{$product.name}
</a>
{else}
{$product.name}
{/if}
{if $product.options?}
<div class="small">
{$product.options | join : '; '}
</div>
{/if}
</td>
<td style="{$style.th}">{$product.count} {'ms2_frontend_count_unit' | lexicon}</td>
<td style="{$style.th}">{$product.weight} {'ms2_frontend_weight_unit' | lexicon}</td>
<td style="{$style.th}">{$product.price} {'ms2_frontend_currency' | lexicon}</td>
</tr>
{/foreach}
<tfoot>
<tr>
<th colspan="2"></th>
<th style="{$style.th}">
{$total.cart_count} {'ms2_frontend_count_unit' | lexicon}
</th>
<th style="{$style.th}">
{$total.cart_weight} {'ms2_frontend_weight_unit' | lexicon}
</th>
<th style="{$style.th}">
{$total.cart_cost} {'ms2_frontend_currency' | lexicon}
</th>
</tr>
</tfoot>
</table>
<h3 style="{$style.h}{$style.h3}">
{'ms2_frontend_order_cost' | lexicon}:
{if $total.delivery_cost}
{$total.cart_cost} {'ms2_frontend_currency' | lexicon} + {$total.delivery_cost}
{'ms2_frontend_currency' | lexicon} =
{/if}
<strong>{$total.cost}</strong> {'ms2_frontend_currency' | lexicon}
</h3>
{else}
<table style="width:90%;margin:auto;">
<thead>
<tr>
<th style="{$style.th}">{'payandsee_content' | lexicon}</th>
<th style="{$style.th}">{'payandsee_term' | lexicon}</th>
<th style="{$style.th}">{'payandsee_cost' | lexicon}</th>
</tr>
</thead>
{foreach $products as $row}
<tr>
<td style="{$style.th}">
<h4><a href="{$row.content_resource | url: ['scheme' => 'full']}" style="{$style.a}">{$row.content_name}</a></h4>
{if $row.content_description}
<div class="small">
<small>{$row.content_description}</small>
</div>
{/if}
</td>
<td style="{$style.th}">
{if $row.term_value?}
<div class="small">
{$row.term_value} - {$row.term_value | decl : (('payandsee_decl_date_' ~ $row.term_unit) | lexicon)}
</div>
{/if}
</td>
<td style="{$style.th}">
{$row.cost} {'payandsee_unit_cost' | lexicon}
</td>
</tr>
{/foreach}
<tfoot>
</tfoot>
</table>
<h3 style="{$style.h}{$style.h3}">
{'payandsee_order_cost' | lexicon}:
{if $total.delivery_cost}
{$total.cart_cost} {'payandsee_unit_cost' | lexicon} + {$total.delivery_cost}
{'payandsee_unit_cost' | lexicon} =
{/if}
<strong>{$total.cost}</strong> {'payandsee_unit_cost' | lexicon}
</h3>
{/if}
{/block}
</td>
</tr>
</table>
</div>
<!-- /content -->
</td>
<td></td>
</tr>
</table>
<!-- /body -->
<!-- footer -->
<table style="clear:both !important;width: 100%;">
<tr>
<td></td>
<td class="container">
<!-- content -->
<div class="content">
<table style="width:100%;text-align: center;">
<tr>
<td align="center">
<p style="{$style.p}">
{block 'footer'}
<a href="{$site_url}" style="color: #999999;">
{'site_name' | option}
</a>
{/block}
</p>
</td>
</tr>
</table>
</div>
<!-- /content -->
</td>
<td></td>
</tr>
</table>
<!-- /footer -->
</div>
</body>
</html>
Проверяется поле context
заказа и если это заказ магазина вы получите вывод товаров, иначе вывод подписки на контент.
Подробнее о расширении шаблонов вы можете прочитать в документации Fenom.