1. Как вывести в шаблоне значение пользовательского поля заказа
Для вывода данных из пользовательского поля используйте метод getCustomField
. Пример:
{{ order.getCustomField('some_code') }}
В примере some_code
— символьный код пользовательского поля.
2. Ошибка при попытке вывести поле заказа, содержащее дату
Речь о проблеме в случае, когда вы видите следующее сообщение об ошибке:
Object of class DateTime could not be converted to string
Дело в том, что при выводе в twig-шаблоне полей заказа (или клиента), которые содержат дату, требуется применять фильтр date
, чтобы указать формат вывода даты.
Пример:
{{ order.createdAt|date("d.m.Y") }}
3. Ошибка при попытке вывести поле, содержащее интервал дат
Речь о проблеме в случае, когда вы видите подобное сообщение об ошибке:
Calling "m" property on a "DateInterval" object is not allowed
Дело в том, что при выводе в twig-шаблоне полей, которые содержат интервал дат, требуется применять фильтр date
, чтобы указать формат вывода .
Пример:
{{ period|date("%m") }}
Подробное описание форматов вывода DateInterval можно найти по ссылке: http://php.net/manual/ru/dateinterval.format.php
4. Как вывести текущую дату
Для вывода текущей даты используйте фильтр date
следующим образом:
{{ "now"|date("d.m.Y") }}
5. Как вывести состав заказа в шаблоне
Для вывода состава заказа необходимо использовать цикл for
обращаясь к массиву order.availableOrderProducts
<table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr bgcolor="#E2E2E2">
<td align="center" style="border: 1pt solid #000000; border-right:none;">№</td>
<td align="center" style="border: 1pt solid #000000; border-right:none;">Наименование товара</td>
<td nowrap="" align="center" style="border: 1pt solid #000000; border-right:none;">Кол-во</td>
<td nowrap="" align="center" style="border: 1pt solid #000000; border-right:none;">Цена, руб</td>
<td nowrap="" align="center" style="border: 1pt solid #000000;">Сумма, руб</td>
</tr>
{% for op in order.availableOrderProducts %}
<tr valign="top">
<td bgcolor="#ffffff" style="border: 1pt solid #000000; border-right:none; border-top:none;">
{{ loop.index }}
</td>
<td bgcolor="#ffffff" style="border: 1pt solid #000000; border-right:none; border-top:none;">
{{ op }}
</td>
<td align="right" bgcolor="#ffffff" style="border: 1pt solid #000000; border-right:none; border-top:none;">
{{ op.quantity }}
</td>
<td align="right" bgcolor="#ffffff" style="border: 1pt solid #000000; border-right:none; border-top:none;">
{{ op.price|ru_currency('number', false) }}
</td>
<td align="right" bgcolor="#ffffff" style="border: 1pt solid #000000; border-top:none;">
{{ op.summ|ru_currency('number', false) }}
</td>
</tr>
{% endfor %}
<tr>
<td align="right" bgcolor="#ffffff" colspan="4" style="border: 1pt solid #000000; border-right:none; border-top:none;">
Итого:
</td>
<td align="right" bgcolor="#ffffff" style="border: 1pt solid #000000; border-top:none;">
{{ order.totalSumm|ru_currency('number', false) }}
</td>
</tr>
</table>
6. Как вывести картинку товара в шаблоне
Для вывода картинки товара необходимо внутри цикла for
, который перебирает массив с составом товаров, сделать вызов функции preview_image_tag
, передав в него первым параметром: url адрес изображения, вторым параметром: размер картинки в пикселях.
{{ preview_image_tag(op.offer.imageUrl, '100x100') }}
7. Как изменить шрифт в шаблоне письма/печатной форме
Для смены шрифта необходимо создать соответствующий класс стиля с подгрузкой самого шрифта с вашего сервера. Список шрифтов может включать одно или несколько названий, разделенных запятой. Пример, как это должно выглядеть в итоге:
@font-face {
font-family: "Bitstream Vera Serif Bold";
src: url("https://example.com/files/VeraSeBd.ttf")
}
body {
font-family: "Bitstream Vera Serif Bold", Times, serif;
}
8. Как вывести все товары в заказе
Вывести все товары в заказе можно через обращение к методу
{{ order.orderProducts|join(', ') }}
9. Как разделить сумму на рубли и копейки
Для разделения суммы на рубли и копейки:
{% set totalSumm = order.totalSumm|ru_currency('parted') %}
{{ totalSumm['integer'] }} - рубли
{{ totalSumm['fractional'] }} -копейки
10. Вывод свойств товара внутри массива
Пример вывода свойств товара внутри массива:
{% set props = op.offer|offer_properties %}{{ props.name_ro.value }}
В примере name_ro
- символьный код свойства.
11. Как вывести свойство товара
Пример вывода свойства товара:
{% for mas in op.offer|offer_properties %}
{% if mas.name == "размер" %}
{{ mas.name }} - {{ mas.value }}<br>
{% endif %}
{% endfor %}
12. Как вывести все кастомные свойства товара
Вывод всех кастомных свойств товаров:
{% for op in order.availableOrderProducts %}{% for prop in op.properties %}
{% for key, value in prop %}{{ key }} - {{value}} {% endfor %}<br>
{% endfor %}{% endfor %}
13. Как вывести значение кастомного свойства товара по его символьному коду
Вывод кастомного свойства товара по его символьному коду:
{% for op in order.availableOrderProducts %}
{% for od in op.properties %}
{% for key, val in od %}
{% if key == 'value' %}
{% set propvalue = val %}
{% endif %}
{% if key == 'code' and val == 'code_from_site' %}
Код товара: {{ propvalue }}
{% endif %}
{% endfor %}
{% endfor %}
{% endfor %}
14. Как вывести каталожные свойства, при условии, что известен код свойства
Первый вариант вывода каталожных свойств, если известен код свойства через
{% set props = op.offer|offer_properties %}
.
Далее необходимо выводить их по отдельности:
<td> {{ props.color.name }} - {{ props.color.value }} <td>
<td> {{ props.size.name }} - {{ props.size.value }} <td>
Ключи массива props
- это коды свойств.
Второй вариант вывода свойств:
{% for key, prop in op.offer.properties %}
{{ prop }}
{% endfor %}