Данные клиента в письме (e-mail). Minishop2. Изменяем чанк tpl.msEmail

Решение довольно простое, и я решил написать заметку по большей части для себя, так как периодически, когда надо для Заказчика передать данные клиента в email при оформлении заказа, то приходится периодически всё заново писать.

1. Открываем чанк tpl.msEmail
2. Находим
<!-- /body -->
<!-- footer -->
3. Вставляем между этими комментариями следующий код, спасибо Баха Волков за часть кода на Fenom:
<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">
                    <h3 style="{$style.h}{$style.h3}">Информация о клиенте:</h3>
                    <table style="width:80%;margin:auto;">
                        {if $delivery.name}<tr>
                            <td style="{$style.th};width: 200px; font-weight: 600;">
                                Способ доставки: 
                            </td>
                            <td style="{$style.th}">
                                {$delivery.name}
                            </td>
                        </tr>{/if}
                        {if $payment.name}<tr>
                            <td style="{$style.th};width: 200px; font-weight: 600;">
                                Способ оплаты: 
                            </td>
                            <td style="{$style.th}">
                                {$payment.name}
                            </td>
                        </tr>{/if}
                        {if $user.email}<tr>
                            <td style="{$style.th};width: 200px; font-weight: 600;">
                                E-mail: 
                            </td>
                            <td style="{$style.th}">
                                {$user.email}
                            </td>
                        </tr>{/if}
                        {foreach ['receiver', 'phone', 'index', 'region', 'city', 'street', 'building', 'room', 'comment', 'customfield'] as $field}
                            {if $address[$field]?}
                                <tr>
                                    <td style="{$style.th};width: 200px; font-weight: 600;">{('ms2_frontend_' ~ $field) | lexicon}: </td>
                                    <td style="{$style.th}">{$address[$field]}</td>
                                </tr>
                            {/if}
                        {/foreach}
                    </table>
                </div>
                <!-- /content -->
            </td>
            <td></td>
        </tr>
    </table>
4. Так же приведу пример 2 примера, на плейсхолдерах MODX и на Fenom. Данные варианты устаревшие и лучше не использовать.

Пример на плейсхолдерах MODX:

<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">
                    <h3 style="{$style.h}{$style.h3}">Информация о клиенте:</h3>
                    <table style="width:80%;margin:auto;">
                        [[+delivery.name:notempty=`<tr>
                            <td style="{$style.th};width: 200px; font-weight: 600;">
                                Способ доставки: 
                            </td>
                            <td style="{$style.th}">
                                [[+delivery.name]]
                            </td>
                        </tr>`]]
                        [[+payment.name:notempty=`<tr>
                            <td style="{$style.th};width: 200px; font-weight: 600;">
                                Способ оплаты: 
                            </td>
                            <td style="{$style.th}">
                                [[+payment.name]]
                            </td>
                        </tr>`]]
                        [[+user.email:notempty=`<tr>
                            <td style="{$style.th};width: 200px; font-weight: 600;">
                                E-mail: 
                            </td>
                            <td style="{$style.th}">
                                [[+user.email]]
                            </td>
                        </tr>`]]
                        [[+address.receiver:notempty=`<tr>
                            <td style="{$style.th};width: 200px; font-weight: 600;">
                                Имя: 
                            </td>
                            <td style="{$style.th}">
                                [[+address.receiver]]
                            </td>
                        </tr>`]]
                        [[+address.phone:notempty=`<tr>
                            <td style="{$style.th};width: 200px; font-weight: 600;">
                                Телефон: 
                            </td>
                            <td style="{$style.th}">
                                [[+address.phone]]
                            </td>
                        </tr>`]]
                        [[+address.index:notempty=`<tr>
                            <td style="{$style.th};width: 200px; font-weight: 600;">
                                Почтовый индекс: 
                            </td>
                            <td style="{$style.th}">
                                [[+address.index]]
                            </td>
                        </tr>`]]
                        [[+address.region:notempty=`<tr>
                            <td style="{$style.th};width: 200px; font-weight: 600;">
                                Область: 
                            </td>
                            <td style="{$style.th}">
                                [[+address.region]]
                            </td>
                        </tr>`]]
                        [[+address.city:notempty=`<tr>
                            <td style="{$style.th};width: 200px; font-weight: 600;">
                                Город: 
                            </td>
                            <td style="{$style.th}">
                                [[+address.city]]
                            </td>
                        </tr>`]]
                        [[+address.street:notempty=`<tr>
                            <td style="{$style.th};width: 200px; font-weight: 600;">
                                Улица: 
                            </td>
                            <td style="{$style.th}">
                                [[+address.street]]
                            </td>
                        </tr>`]]
                        [[+address.building:notempty=`<tr>
                            <td style="{$style.th};width: 200px; font-weight: 600;">
                                Дом: 
                            </td>
                            <td style="{$style.th}">
                                [[+address.building]]
                            </td>
                        </tr>`]]
                        [[+address.room:notempty=`<tr>
                            <td style="{$style.th};width: 200px; font-weight: 600;">
                                Квартира: 
                            </td>
                            <td style="{$style.th}">
                                [[+address.room]]
                            </td>
                        </tr>`]]
                        [[+address.comment:notempty=`<tr>
                            <td style="{$style.th};width: 200px; font-weight: 600;">
                                Комментарий: 
                            </td>
                            <td style="{$style.th}">
                                [[+address.comment]]
                            </td>
                        </tr>`]]
                        [[+address.customfield:notempty=`<tr>
                            <td style="{$style.th};width: 200px; font-weight: 600;">
                                Кастомное поле: 
                            </td>
                            <td style="{$style.th}">
                                [[+address.customfield]]
                            </td>
                        </tr>`]]
                    </table>
                </div>
                <!-- /content -->
            </td>
            <td></td>
        </tr>
    </table>
Пример на Fenom:

<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">
                    <h3 style="{$style.h}{$style.h3}">Информация о клиенте:</h3>
                    <table style="width:80%;margin:auto;">
                        {if $delivery.name}<tr>
                            <td style="{$style.th};width: 200px; font-weight: 600;">
                                Способ доставки: 
                            </td>
                            <td style="{$style.th}">
                                {$delivery.name}
                            </td>
                        </tr>{/if}
                        {if $payment.name}<tr>
                            <td style="{$style.th};width: 200px; font-weight: 600;">
                                Способ оплаты: 
                            </td>
                            <td style="{$style.th}">
                                {$payment.name}
                            </td>
                        </tr>{/if}
                        {if $user.email}<tr>
                            <td style="{$style.th};width: 200px; font-weight: 600;">
                                E-mail: 
                            </td>
                            <td style="{$style.th}">
                                {$user.email}
                            </td>
                        </tr>{/if}
                        {if $address.receiver}<tr>
                            <td style="{$style.th};width: 200px; font-weight: 600;">
                                Имя: 
                            </td>
                            <td style="{$style.th}">
                                {$address.receiver}
                            </td>
                        </tr>{/if}
                        {if $address.phone}<tr>
                            <td style="{$style.th};width: 200px; font-weight: 600;">
                                Телефон: 
                            </td>
                            <td style="{$style.th}">
                                {$address.phone}
                            </td>
                        </tr>{/if}
                        {if $address.index}<tr>
                            <td style="{$style.th};width: 200px; font-weight: 600;">
                                Почтовый индекс: 
                            </td>
                            <td style="{$style.th}">
                                {$address.index}
                            </td>
                        </tr>{/if}
                        {if $address.region}<tr>
                            <td style="{$style.th};width: 200px; font-weight: 600;">
                                Область: 
                            </td>
                            <td style="{$style.th}">
                                {$address.region}
                            </td>
                        </tr>{/if}
                        {if $address.city}<tr>
                            <td style="{$style.th};width: 200px; font-weight: 600;">
                                Город: 
                            </td>
                            <td style="{$style.th}">
                                {$address.city}
                            </td>
                        </tr>{/if}
                        {if $address.street}<tr>
                            <td style="{$style.th};width: 200px; font-weight: 600;">
                                Улица: 
                            </td>
                            <td style="{$style.th}">
                                {$address.street}
                            </td>
                        </tr>{/if}
                        {if $address.building}<tr>
                            <td style="{$style.th};width: 200px; font-weight: 600;">
                                Дом: 
                            </td>
                            <td style="{$style.th}">
                                {$address.building}
                            </td>
                        </tr>{/if}
                        {if $address.room}<tr>
                            <td style="{$style.th};width: 200px; font-weight: 600;">
                                Квартира: 
                            </td>
                            <td style="{$style.th}">
                                {$address.room}
                            </td>
                        </tr>{/if}
                        {if $address.comment}<tr>
                            <td style="{$style.th};width: 200px; font-weight: 600;">
                                Комментарий: 
                            </td>
                            <td style="{$style.th}">
                                {$address.comment}
                            </td>
                        </tr>{/if}
                        {if $address.customfield}<tr>
                            <td style="{$style.th};width: 200px; font-weight: 600;">
                                Кастомное поле: 
                            </td>
                            <td style="{$style.th}">
                                {$address.customfield}
                            </td>
                        </tr>{/if}
                    </table>
                </div>
                <!-- /content -->
            </td>
            <td></td>
        </tr>
    </table>
4. Готово :)

Кирилл
06 февраля 2020, 20:14
modx.pro
1
1 691
-3
Поблагодарить автора Отправить деньги

Комментарии: 9

Баха Волков
06 февраля 2020, 22:07
5
+12
Не не не, не делайте так, помните или почитайте о DRY. С парсером MODX все понятно, ей сложно помочь, но феном-то полноценный шаблонизатор:

{foreach ['receiver', 'phone', 'index', 'region', 'city', 'street', 'building', 'room', 'comment', 'customfield'] as $field}
    {if $address[$field]?}
        <tr>
            <td style="{$style.th};width: 200px; font-weight: 600;">{('ms2_frontend_' ~ $field) | lexicon}: </td>
            <td style="{$style.th}">{$address[$field]}</td>
        </tr>
    {/if}
{/foreach}

8 моих строчек против твоих 80-ти
    Кирилл
    07 февраля 2020, 10:51
    0
    Спасибо, так в разы лучше )
    Павел Бигель
    07 февраля 2020, 08:44
    0
    Кирилл, ваша компания точно занимается MODX?
      Кирилл
      07 февраля 2020, 10:53
      0
      Компания — да :))
      А я лично нет, не разрабатываю на MODX.
      Отсюда и говорю что простое решение.
        Павел Бигель
        07 февраля 2020, 10:55
        0
        Это не простое решение, это плохое решение.
        Это две разные вещи.

        Если не разрабатываете на MODX, то зачем выкладываете?
        Вы бы хоть у своих спросили.
          Кирилл
          07 февраля 2020, 11:08
          0
          Вы сейчас говорите про мягкое и теплое.

          Как бы вы сейчас не хейтили, но благодаря посту было подкинуто крутое и простое решение modx.pro/solutions/19671#comment-117616, а это уже развития сообщества
            Павел Бигель
            07 февраля 2020, 11:11
            0
            Да нет у меня никакого хейта.
            И вопрос был избит уже миллион раз.
      Руслан Сафин
      07 февраля 2020, 10:24
      0
      На основе стандартного чанка, дорабатывается за 10 минут. И стандартный парсер уже почти никто не использует
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      9