Работа с контактами

16 февраля 2023, 23:00

Состав контактов

Скорее всего это может показаться странным, но к контактам я отнёс не только почту и телефон, но и ещё много чего. Всё это сделано для удобства редактирования и оптимизации вывода. В итоге, к контактам относятся:

  • телефоны
  • электронные почты
  • адреса
  • реквизиты
  • карты
  • социальные сети и мессенджеры
  • время работы

Каждый элемент списка имеет следующий набор полей:

  • type - определяет к какому типу относится данная запись
  • value - непосредственно значение, для телефона формируется дополнительный параметр formattedValue, которое хранит отформатированное значение телефона, при этом сам телефон должен быть записан только цифрами. Указать паттерн форматирования можно в системной настройке mpc_phone_format
  • caption - подпись к контакту
  • icon_class - класс иконки, задать доступные классы иконок можно в интерфейсе компонента Migx в конфигурации contacts в возможных значениях соответствующего поля
  • form - поле доступно всем типам, но актуально только для email, так как позволяет назначить email для отправки на него данных с определенных форм.

Сниппет getContacts

Для удобства вывода контактов на фронте в комплекте поставляется сниппет getContacts.

Параметр По умолчанию Описание
rid берётся из системной настройки mpc_contacts_page_id ID страницы с Контактами
tvname берётся из системной настройки mpc_contacts_tvname название TV типа migx хранящей контакты

Сниппет возвращает массив вида

[
    'phones' => [
        'Телефон' => [
            'value' => '79998887766',
            'formattedValue' => '8(999)888-77-66',
            'caption' => 'Телефон',
            'icon_class' => 'icon-phone',
            'form' => ''
            ],
        'Телефон2' => [
            'value' => '79998887766',
            'formattedValue' => '8(999)888-77-66',
            'caption' => 'Телефон2',
            'icon_class' => 'icon-phone',
            'form' => ''
            ]        
        ],
    'emails' => [],
    'socials' => [],
    'addresses' => [],           
    'maps' => [],           
    'worktime' => [],           
    'requisites' => [],           
]

Таким образом вы никак не ограничены в количестве реквизитов и можете легко получить к ним доступ, просто один раз вызвав сниппет getContacts, например так:

{set $contacts = 'getContacts' | snippet: []}
<div class="custom">
    <div>
        {$contacts['maps']['Карта']['value']}
    </div>
    <div class="table-responsive">
        <table class="table table-bordered table-striped">
            <tbody>
            {foreach $contacts['requisites'] as $requisite}
            <tr>
                <td><b>{$requisite['caption']}</b></td>
                <td>{$requisite['value']}</td>
            </tr>
            {/foreach}
            {foreach $contacts['phones'] as $phone}
            <tr>
                <td><b>{$phone['caption']}</b></td>
                <td>{$phone['formattedValue']}</td>
            </tr>
            {/foreach}
            {foreach $contacts['emails'] as $email}
            <tr>
                <td><b>{$email['caption']}</b></td>
                <td>{$email['value']}</td>
            </tr>
            {/foreach}
            </tbody>
        </table>
    </div>
</div>


Предыдущий документ
Работа с формами
Следующий документ
Работа с изображениями