Skip to content
  1. Компоненты
  2. MigxPageConfigurator
  3. Работа с контактами

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

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

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

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

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

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

Сниппет getContacts

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

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

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

php
[
  '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, например так:

fenom
{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>