Часто возникающие вопросы
Скопировать ссылку на статью
Скопировано

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 %} 
Благодарим за отзыв.
Была ли статья полезна?
Нет
  • Рекомендации не помогли
  • Нет ответа на мой вопрос
  • Текст трудно понять
  • Не нравится описанный функционал
Да
Предыдущая статья
Отмена генерации Twig-шаблона
Могут возникать ситуации, когда требуется отменить генерацию шаблона. В статье описано, как это осуществить.