# Введение

art studio Morozov\&Pimnev

<div align="center"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-Mj-oVuJinWuJ-X3MkWZ%2F-Mj-pcWj3djKfmly5Q3p%2Fhostcms_logo.svg?alt=media&amp;token=fd26e40e-9e8c-4650-a1bb-3c3adb2198e3" alt=""></div>

####


# Покупка модуля

#### Шаг 1

В центре администрирования (далее ЦА) сайта переходим в раздел **«Магазин приложений»** (1) и в поле поиска вводим название модуля (2), нажимаем искать (3) или "Enter", на нужном модуле кликаем на кнопку **«Купить»** (4)

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-MjdqTiVRjAJWVeQWhIz%2F-MjdrshQZw_gAg1x2Ybd%2Fimage.png?alt=media&amp;token=3d30b2fb-bda6-458d-bf6a-40bc515b376e" alt=""></div>

#### Шаг 2

{% hint style="info" %}

#### Если модуль уже куплен, то пропускаем данный шаг

{% endhint %}

После вас перенаправит на страницу модуля на сайт [hostcms.ru](https://www.hostcms.ru/shop/market/) для завершения оформления покупки, выбираем дополнительные опции (2) если нужны и кликаем **«Купить для XXXXXX-X за 4 700 ₽»** (1)

{% hint style="danger" %}
— **XXXXXX-X !!очень важно чтобы номер лицензии совпадал с вашей лицензий сайта для которой покупаете**
{% endhint %}

У Вас должен быть зарегистрирован личный кабинет (далее ЛК) на сайте hostcms.ru и Вы должны быть в нем авторизованы. После покупки можно приступать к установке модуля (установка модуля описана в отдельном разделе для каждого модуля)

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-MjdvJ4whc6I_-c8TPHq%2F-Mjdw3h32o6F0JVDeCbV%2Fimage.png?alt=media&amp;token=56c83e1a-716d-4b44-a66b-32cdc5969c11" alt=""></div>


# Версия модуля

Версию модуля можно узнать в ЦА в разделе "Система" (1) → "Модули" (2), наберите в строке "Название" или "Путь к модулю" (3) ключ для поиска, нажмите Enter и вы увидите его версию (4)

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FRqFTxjPAZ1KgaUFrUFGU%2Fimage.png?alt=media&amp;token=833d7406-7ce8-4c11-b65f-5dd75db57c1d" alt=""></div>


# Версия системы

для вресий 6.5.0 и выше

#### Вариант 1

1. Ввойдите в панель администрирования `/admin/`
2. На главной странице найдите виджет "Системные характеристики"
3. Там будет строка с версией HostCMS

<figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FyuKnVvmjuaoNWDr4r5hC%2Fimage.png?alt=media&amp;token=9ce63945-9d56-49fc-bd63-7abda8e33cf0" alt=""><figcaption></figcaption></figure>

#### Вариант 2

1. Ввойдите в панель администрирования `/admin/`
2. Перейдите в раздел "Константы"
3. Найдите название `CURRENT_VERSION`, там будер версия HostCMS

<figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FGz2S3IbHA4WeJ5Ii7FJt%2Fimage.png?alt=media&amp;token=c7c65f98-787f-44bd-aaee-d7b3d530b92c" alt=""><figcaption></figcaption></figure>


# Обновление модуля

Загрузка и установка обновлений производится автоматически через центр администрирования.

Список обновлений доступен в разделе **Обслуживание** — **Обновления**. Обновить список обновлений можно кнопкой «Проверить обновления».

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FvMEYDQMCVLu0EL4wFrQV%2Fimage.png?alt=media&amp;token=a4a542d3-143f-4e7a-81d6-1630992ef237" alt=""></div>

### Установка обновления

Установка обновлений осуществляет от более ранних к более поздним, для установки нажмите кнопку **☑**, расположенную справа от описания обновления. При установке обновления модулей, новые версии модулей будут последовательно устанавливаться, пока не будет установлена последняя доступная версия модуля.


# Переустановить модуль

Чтобы переустановить модуль, нужно откатить версию модуля следующим образом.

Через FTP, [файловый менеджер](https://www.hostcms.ru/documentation/modules/filemanager/) или если редакция ниже Бизнеса, то через ссылку *`<название_сайта>`*`/admin/wysiwyg/filemanager/index.php,` найдите файл `module.php` в папке нужного модуля

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2F9klzn1WPkxKwB9sby4IT%2Fimage.png?alt=media&amp;token=bb11f6a1-06ba-40c7-9ec7-8c7b989514ea" alt=""><figcaption><p>файловый менеджер</p></figcaption></figure></div>

в файле замените `$version` на нужную

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2F7bcLscZQMUDp9a5nuP6I%2Fimage.png?alt=media&amp;token=530e4475-25aa-472d-9bf5-dd4146744a30" alt=""><figcaption></figcaption></figure></div>

Теперь через модуль ["Обновления"](/megapost/obnovlenie-modulya) вы можете поставить следующую доступную версию


# Оставить отзыв

asmp.su/bg

Мы будем благодарны за любой отзыв оставленный по нашим модулям/шаблонам, даже отрицательный, они помогают нам видеть, что модули полезены, их стоит развивать дальше или доработать

#### Как оставить отзыв?

1. Авторизуйтесь на сайте <https://www.hostcms.ru/users/>
2. Перейдите на нужный модуль, все наши модули можно посмотреть 👉 [тут](https://asmp.su/bg)
3. В самом конце старницы будет раздел **"Комментарии"**

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2Fa1MgSNC6wcdMImZB4C1P%2Fimage.png?alt=media&amp;token=2668475a-8277-46d7-a44a-c0f4dd0d4c4b" alt=""><figcaption></figcaption></figure></div>

4. в самом конце комментариев нажмите на кнопку **"Добавить комментарий"**

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FizrvDUWRh2CvdHBC4l8B%2Fimage.png?alt=media&amp;token=25a95310-8e3c-4f1c-8980-df81a4d682d6" alt=""><figcaption></figcaption></figure></div>

5. Заполните форму и нажмите **"Опубликовать"**

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2F1CzFXtGvKHWioVd6yvno%2Fimage.png?alt=media&amp;token=4a5bcfff-38fe-46c6-9d55-76ccb5ec082e" alt=""><figcaption></figcaption></figure></div>


# Продление периода технической поддержки

## Что такое период технической поддержки

В платной версии HostCMS после покупки лицензии период технической поддержки составляет **1 год**. По истечении этого срока его можно продлить.

## Стоимость продления технической поддержки

Стоимость зависит от редакции и периода с момента окончания лицензии.

{% hint style="success" %}
Действуют следующие тарифы:

* **в течение 14 дней до окончания периода** — льготный период: 20 % от стоимости лицензии;
* **в течение 30 дней после окончания периода** — 40 % от стоимости лицензии;
* **в любое другое время** — 60 % от стоимости лицензии.

**Пример** (для лицензии «Малый бизнес», стоимость — 16 900 руб.):

* период 14 дней — сумма продления 3 380 руб.;
* период 30 дней — сумма продления 6 760 руб.;
* в остальных случаях — сумма продления 10 140 руб.
  {% endhint %}

## Что дает продление технической поддержки HostCMS

1. Техническую поддержку и консультации по работе с системой в течение года.
2. Бесплатное обновление до новых версий системы в течение года.

## Для чего продлевать поддержку HostCMS

Продление поддержки обеспечивает:

* **экономию** — при заблаговременном продлении действует скидка 80 %;
* **защиту** от потенциальных новых уязвимостей;
* **актуальный функционал** — систему обновляют в соответствии с современными техническими требованиями (например, к хостингу или интегрированным сервисам);
* **совместимость** с новыми модулями и их версиями;
* **упрощение поиска исполнителей** — не все специалисты работают со старыми версиями системы;
* **снижение затрат на решение задач** — многие функции уже реализованы в новых обновлениях;
* **работу с современным функционалом** — система не устаревает и при необходимости модифицируется.

## Можно ли не продлевать поддержку

Да, можно. Однако мы не рекомендуем этого делать.

Ваш сайт продолжит работать в том состоянии, в котором он находился на момент окончания периода технической поддержки — при условии, что хостинг поддерживает текущую версию.

## **Примеры из практики**

1. **Клиент использовал старую версию «Бизнес» и дополнительный модуль.**

   * Модуль перестал работать — потребовалось обновление.
   * Обновление совместимо только с последней версией, а их вышло уже 10.
   * Постепенная установка обновлений (по одному) позволяет легче отслеживать изменения и решать вопросы с технической поддержкой.
   * Установка сразу 10 обновлений — значительный объём работ, так как изменения за месяцы или годы могут оказаться несовместимыми с одним из обновлений.

   **Выгода при продлении в льготный период:** 20 % от стоимости — 4 980 руб.\
   **Фактические затраты:** 14 940 руб. + 10 000 руб. (работа специалиста по установке обновлений и проверке совместимости).
2. **Клиент использовал старую версию «Корпорация».**

   * В новой версии появился нужный клиенту функционал.

   **Выгода при продлении в льготный период:** 20 % от стоимости — 7 180 руб.\
   **Фактические затраты:** 21 540 руб. + 5 000 руб. (работа специалиста по установке обновлений и проверке совместимости).
3. **Клиент решил перейти на PHP 8 на хостинге.**
   * Старая версия системы не поддерживала PHP 8.
   * Возникли проблемы в работе сайта.


# Вопросы, поддержка и предложения

**Вопросы (перед покупкой), предложения и поддержка/консультация (после покупки, нужно - версия модуля и HostCMS, адрес сайта, ключ модуля при покупке или номер лицензии HostCMS, дата приобретения модуля):**

* **Telegram:** [@morozovpimnev](https://t.me/morozovpimnev) *(высокое время ответа при поддержке)*
* **Whatsapp:** [+79122442150](https://wa.me/79122442150) *(среднее время ответа при поддержке)*
* **Онлайн чат:** [jivo.chat](https://jivo.chat/3IuhZocuYV) *(низкое время ответа при поддержке)*

**Вопросы (перед покупкой) и предложения:**

* **Email:** <info@morozovpimnev.ru> *(поддержка не осуществляется)*
* **Телефон:** +7 (343) 288-299-8 *(поддержка не осуществляется)*

Подписаться на наш канал: [**t.me/morozovpimnev\_n**](https://asmp.su/channel)


# AmoCRM

инструкция для v5.5 и HostCMS v7.1.4

Купить модуль 👉 <https://asmp.su/amocrm>

<div align="left"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FyH41Ex33I1hT9wO3CFG3%2Flogo.png?alt=media&amp;token=3d926e84-2586-4d09-b869-8915f67a35e4" alt=""></div>


# Создание ключа интеграции

В аккаунте **AmoCRM** перейдите в раздел **«amo МАРКЕТ»** и в меню нажмите **«+ Создать интеграцию»** -> **«Внешняя интеграция + Создать»**

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FQOuyfQTzA1jzbbbrsWjo%2Fimage.png?alt=media&amp;token=2407c8fb-4d1d-4623-8cc0-fcdb454bb260" alt=""><figcaption></figcaption></figure></div>

&#x20;Заполняете все необходие поля и нажмите сохранить

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FJIzsO2Avx1opgiutJurw%2Famocrm1.png?alt=media&amp;token=18790f15-dc86-4318-be31-855c40b3b678" alt=""></div>

* ***Ссылка для перенаправления** - http(s)://АДРЕС\_ВАШЕГО\_САЙТА/amocrm/api/*&#x20;
* ***Предоставить доступ** - Выбрать “Доступ к данным аккаунта”*
* ***Название интеграции** - любое (например: Мой сайт)*
* ***Описание** - любое (например: интеграция с HostCMS)*

После сохранения перейдите во вкладку **«Ключи и доступы»,** сгенерируйте "Долгосрочный токен" на максимальный срок, **Долгосрочный токен** Вам понадобятся для ввода в настройки модуля.

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2F9IDX89Em8RnsosdxnxRK%2Fimage.png?alt=media&amp;token=4aad5eca-ead6-4a3a-bf34-4cfefd047261" alt=""><figcaption></figcaption></figure></div>


# Установка модуля

*Перед установкой купите модуль (*[*инструкция*](/#pokupka-modulya)*)*

#### Шаг 1

В центре администрирования (далее ЦА) сайта переходим в раздел **«Магазин приложений»** (1) и в поле поиска вводим название модуля (2), нажимаем искать (3) или "Enter", на нужном модуле кликаем на кнопку **«Установить»** (4)

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FEs2hcMTSSNZXi6R5rm4t%2Fimage.png?alt=media&amp;token=5f466bbc-3423-43d9-8d55-121ae669c67e" alt="Магазин приложений"></div>

#### Шаг 2

В параметрах установки модуля вводим параметры и кликаем на **«Установить»**

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FFV3og1cfDQUUKKM4a0eh%2Fimage.png?alt=media&amp;token=7d45548e-518c-4f3d-972b-02c31ecdc2e4" alt=""><figcaption></figcaption></figure></div>

* ***Адрес своего аккаунта в AmoCRM субдомен** - если ссылка на личный кабинет в AmoCRM у вас <https://demo.amocrm.ru/>, то субдомен будет и нужно ввести в настройки - «demo» (без .amocrm.ru)*
* ***Ссылка для перенаправления** - http(s)://АДРЕС\_ВАШЕГО\_САЙТА/amocrm/api/*
* ***ID интеграции, Секретный ключ, Код авторизации*** ***(старый вариант) -** не заполняем*
* ***Долгосрочный токен (Рекомендуем)** - его можно получить в AmoCRM в разделе «Настройки» → «Интеграции» (см.* [Создание ключа интеграции](/amocrm/sozdanie-klyucha-integracii)*)*


# Добавление сета настроек

#### Шаг 1

В ЦА сайта переходим в раздел **Экспорт/Импорт** → **AmoCRM** → **Добавить** (добавляем сет настроек интеграции)

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FZcr9tGn1O7oAJZXplwxp%2Fimage.png?alt=media&amp;token=e1e4823e-844e-4e03-9adf-015708dc264f" alt=""><figcaption></figcaption></figure></div>

#### Шаг 2

В созданном сете заполните поля нужными данными

### Вкладка «Основные»

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2F3QQkR2yNSEAlJ0fUBv14%2Famocrm4.png?alt=media&amp;token=4bd99af8-4708-48ca-a46c-acfbca37e84a" alt="Вкладка «Основные»"></div>

* ***Наименование** - название сета настроек*
* ***Название сделки** - название которое будет передаваться сделке в AmoCRM*
* ***Активность** - активность настроек для передачи в AmoCRM*
* ***Обновление данных** - при обновлении объекта данных в HostCMS, обновленные данные будут передаваться в AmoCRM*

### Вкладка «Данные»

<div align="center" data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FUTa5E4EPnlxsyyL5KUX3%2Fscreenshot-market.morozovpimnev.ru-2022.08.18-21_53_36.png?alt=media&amp;token=f4b6cbd3-5dc2-4b78-a489-26ec62dbbfe2" alt=""></div>


# Пользователи сайта

{% code fullWidth="true" %}

```php
// перед отправкой письма пользователю о регистрации вставить след код, например в ТДС
Core::moduleIsActive('amocrm') && AmoCRM_Controller::siteuser($oSiteuser);
```

{% endcode %}


# События (хуки)

https\://www\.hostcms.ru/documentation/modules/core/events/

Для добавление в отправляемые данные своих данных можно использовать следующие хуки ([подробнее](https://www.hostcms.ru/documentation/modules/core/events/))

<pre class="language-php" data-line-numbers data-full-width="true"><code class="lang-php"><strong>// добавление данных в произвольные поля
</strong><strong>class My_AmoCRM
</strong>{
    static public function onBeforeLeadAdd($controller, $args)
    {
        $oEntity = $args[0]; // Shop_Order, Form_Fill или Siteuser
        $oAmoCRM = $args[1]; // сет настроек
        $id = $args[2]; // FALSE (add) или int (update)
        
        /** $args[3] - параметры,
         * добавление параметров в custom_fields_values
         */
        $args[3]['custom_fields_values'][] = array(
            'field_id' => 123456, // ID произвольного поля
            'values' => array(
                array(
                    'value' => '789', // значение
                    //'enum_code' => 'fax' // если есть
                )
            )
        );
    }
}

Core_Event::attach('AmoCRM_Controller.onBeforeShopLeadAdd', array('My_AmoCRM', 'onBeforeLeadAdd'));
Core_Event::attach('AmoCRM_Controller.onBeforeFormLeadAdd', array('My_AmoCRM', 'onBeforeLeadAdd'));
Core_Event::attach('AmoCRM_Controller.onBeforeSiteuserLeadAdd', array('My_AmoCRM', 'onBeforeLeadAdd'));
</code></pre>

## События отправки

{% code lineNumbers="true" fullWidth="true" %}

```php
/**
 * Создание заказа Shop_Payment_System_Handler::_processOrder()
 * @hostcms-event Shop_Payment_System_Handler.onAfterProcessOrder
 * Запустить самостоятельно в своей логике
 */
$oShop_Order = Core_Entity::factory('Shop_Order', 123);
$Shop_Payment_System_Handler = Shop_Payment_System_Handler::factory($oShop_Order->Shop_Payment_System);
$Shop_Payment_System_Handler->shopOrder($oShop_Order);
AmoCRM_Controller::onAfterProcessOrder($Shop_Payment_System_Handler);

/**
 * Создание формы Form_Controller_Show::process()
 * @hostcms-event Form_Controller_Show.onAfterProcess
 * Запустить самостоятельно в своей логике
 */
$oForm_Fill = Core_Entity::factory('Form_Fill', 123);
$oForm = $oForm_Fill->Form;
$Form_Controller_Show = new Form_Controller_Show($oForm);
AmoCRM_Controller::onAfterProcess($Form_Controller_Show, array($oForm_Fill));

/**
 * нет своего хука, перед отправкой письма пользователю о регистрации вставить след код, например в ТДС
 */
$oSiteuser = Core_Entity::factory('Siteuser', 123);
AmoCRM_Controller::siteuser($oSiteuser);
```

{% endcode %}


# Настройки

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FYqWztV0Jg0FgdYsc0ZE3%2Fimage.png?alt=media&amp;token=20591c4d-9084-40f4-a031-b19cada43609" alt=""><figcaption></figcaption></figure></div>

Внесенные при установке и дополнительные настройки можно изменить в ЦА сайта, переходим в раздел **Экспорт/Импорт** → **AmoCRM** → **Настройки**

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2Fvktngog8QRAZBSGidqBo%2Fimage.png?alt=media&amp;token=c83c2638-1cec-41b2-8c11-a295eaaadda8" alt=""><figcaption></figcaption></figure></div>

* ***Адрес своего аккаунта в AmoCRM субдомен -** Адрес своего аккаунта в AmoCRM субдомен (без .amocrm.ru)*
* ***Ссылка для перенаправления** - http(s)://АДРЕС\_ВАШЕГО\_САЙТА/amocrm/api/*
* ***ID интеграции, Секретный ключ, Код авторизации (старый вариант) -** не заполняем*
* ***Долгосрочный токен (Рекомендуем)** - его можно получить в AmoCRM в разделе «Настройки» → «Интеграции» (см.* [Создание ключа интеграции](/amocrm/sozdanie-klyucha-integracii)*)*
* ***Тип выгрузки:***
  * *При создании элемента - как только происходит процесс создания элемента в системе, элемент сразу выгуржается в CRM (может тормозить корзину)*
  * *По расписанию - через модуль* [*"Планировщик задач"*](/amocrm/planirovshik-zadach) *(выгрузка элементов происхдит по расписанию, рекомендуемый вариант)*
* ***Дата начала выгрузки по расписанию** - установите дату с которой вы хотите выгружать элементы по расписанию (т.е. после установки у вас может быть очень большая база с самого начала запуска сайта, дата позволяет выгрузить не все, а только с нужного времени)*


# Передача \_ga, gclid, \_ym\_uid, yclid

#### \_ym\_uid

\_ym\_uid (уникальный идентификатор пользователя, Yandex Client ID)

#### \_ga

\_ga (уникальный идентификатор пользователя, Google Analytics 4)

#### **Метка yclid**

**yclid (Yandex Click Identifier, Yandex Click ID)** - специальная метка с уникальным номером клика в Яндекс.Директе, которая добавляется в конец ссылки рекламного объявления и позволяет связывать визиты в Метрике с кликами по объявлению.

#### **Метка gclid**

**gclid (Google Click Identifier, Google Click ID)** - схожая по функционалу с Яндексом метка с уникальным номером клика в Google Рекламе, которая также добавляется в конец ссылки рекламного объявления и позволяет связывать сеансы в Google Analytics с кликами по объявлению. При использовании параметра gclid можно также импортировать сложные конверсии (онлайн и офлайн) в Google Ads.

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FdreSLuUjj4mddgqa7NAn%2Fimage.png?alt=media&amp;token=cc2d0d45-5441-4f68-82b4-36f69a2a5146" alt=""><figcaption></figcaption></figure></div>

Для передачи \_ga, gclid, \_ym\_uid, yclid нужно в сете настроек сопоставить их с вашими полями в AmoCRM

\_ga, \_ym\_uid - берется стандартно из куки сессии пользователя

gclid, yclid - для передачи меток нужно для начала сохранить их в куки, для этого нужно подключить js скрипт, он находится в `/hostcmsfiles/amocrm/script.js`


# AmoCRM pixel

https\://www\.amocrm.ru/developers/content/digital\_pipeline/site\_visit

#### Получение идентификатора посетителя

Для получения идентификатора посетителя нужно разместить на Вашем сайте следующий код:

{% code overflow="wrap" fullWidth="true" %}

```html
<script type="text/javascript" id="amo_pixel_identifier_js" async="async" src="https://piper.amocrm.ru/pixel/js/identifier/pixel_identifier.js"></script>
```

{% endcode %}

и подключить js скрипт, он находится в `/hostcmsfiles/amocrm/script.js`, теперь при передачи данных с сайта в AmoCRM будет пердаваться `visitor_uid`


# Планировщик задач

https\://www\.hostcms.ru/documentation/modules/schedule/

#### Шаг 1. Добавление вызова в cron

Выполнением действий, заданных в модуле **«Планировщик задач»**, осуществляется файлом `cron/schedule.php`, вызов которого необходимо добавить в cron. Рекомендуется запускать выполнение файла schedule.php раз в минуту.

Пример вызова: `/usr/bin/php /var/www/site.ru/httpdocs/cron/schedule.php`

Пример вызова с передачей php.ini: `/usr/bin/php --php-ini /etc/php.ini /var/www/site.ru/httpdocs/cron/schedule.php`

{% hint style="warning" %}
Реальный путь на сервере к корневой директории сайта и путь к PHP уточните в службе поддержки хостинга.
{% endhint %}

#### Шаг 2

Добавляем задачу, в основном меню выберите **Инструменты** → **Планировщик задач**, нажмите в меню на **+Задача**

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2F4lc7hEJvtI08HqFARy5v%2Fimage.png?alt=media&amp;token=2c63bc6d-30d4-4597-ad6f-0877332fefd2" alt=""><figcaption></figcaption></figure></div>

* ***Дата следующего выполнения задачи*** - Дата и время, когда следует выполнить задачу снова. После выполнения задачи к ее времени будет прибавлен установленный интервал, рассчитанное время будет записано в это поле.
* ***Дата добавления задачи*** - Дата и время, когда задача была добавлена.
* ***Интервал*** - Время, устанавливающее периодичность выполнения задачи (рекомендуем указывать `5 минут`).&#x20;
* ***Модуль*** - Модуль, у которого будет вызываться задача (выбираем `AmoCRM`).
* ***Действие*** - Действие модуля, которое будет вызывать задача (выбираем `Выгрузка элементов`).
* ***Идентификатор сущности*** - Идентификатор элемента, над которым нужно произвести действие (указываем ID сайта).
* ***Описание*** - Описание задачи.


# Отладка

{% hint style="danger" %}

### Внимание! Отладкой должен заниматься Ваш технический специалист.

{% endhint %}

### Выгрузка заказа

`request` - это запрос для выгрузки\
`response` - это ответ, если он 200-202 и нет ошибок, занчит все хорошо

Чтобы посмотреть запросы при выгрузке

{% tabs %}
{% tab title="Модуль "История изменений"" %}
Если стоит наш модуль ["История изменений"](https://asmp.su/changelog) то все намного проще, рекомендуем его ставить

После выгрузки заказа, в самом заказе, перейдите на вкладку "Журнал изменений" там будут все запросы/ответы по API

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2F3rsYBeXS846iOx9YvszL%2Fimage.png?alt=media&amp;token=aa44b450-9e2a-4fa3-afef-be20a421fbec" alt=""><figcaption></figcaption></figure></div>
{% endtab %}

{% tab title="Модуль "Журнал событий"" %}
Есил у вас редакция HostCMS.Бизнес и выше

Перйдите в модуль  **Система** →  ["Журнал событий"](https://www.hostcms.ru/documentation/modules/eventlog/) найдите логи связанные с Вашим заказом

обычно они выглядят следующим образом: `[513][amocrm][request] ...`\
где 513 - это номер заказа

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FuNK5BTMkHOZYb2zzekvH%2Fimage.png?alt=media&amp;token=ee87c2a5-bb4c-493c-8fdb-74a6104874af" alt=""><figcaption></figcaption></figure></div>
{% endtab %}

{% tab title="log.csv" %}
Если у вас редакция HostCMS.Малый Бизнес и ниже

Логи хранятся в файлах в директории **/hostcmsfiles/logs/(текущая дата).log.csv**

Откройте файл и найдите логи связанные с Вашим заказом

обычно они выглядят следующим образом: `[513][amocrm][request] ...`\
где 513 - это номер заказа
{% endtab %}
{% endtabs %}


# Bitrix24

инструкция для v3.2 и HostCMS v7.1.3

Купить модуль 👉 <https://asmp.su/bitrix24>

![](https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2F4ubBdVA5PLIabsVHNxaw%2Flogo.png?alt=media\&token=59a493f6-cb17-432b-a68e-267073ea4cb1)


# Создание ключа интеграции

Перейдите в раздел **«Приложения» → «Разработчикам» → «Готовые сценарии» → «Другое» → «Входящий вебхук»**, User ID (1) и Secret key (2) - эти данные Вам понадобятся для ввода в настройки модуля

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FUGEuLZOP1PBeKG6ryq7N%2Fbitrix24.png?alt=media&amp;token=47296302-207b-417e-8ed3-2aef7402ef13" alt=""></div>

В настройках прав выберите **«CRM (crm)**» и **«Пользователи (user)»** (3) и нажмите **«Сохранить»** (4)

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FAT0OwU1grxJRZh0BIvAY%2Fbitrix24_1.png?alt=media&amp;token=2ac4b239-3c6a-45ba-be15-066a79eb2c11" alt=""></div>

{% hint style="info" %}
Далее созданный доступ будет храниться у вас в разделе **«Приложения» → «Разработчикам» → «Интеграции»**
{% endhint %}


# Установка модуля

*Перед установкой купите модуль (*[*инструкция*](/#pokupka-modulya)*)*

#### Шаг 1

В центре администрирования (далее ЦА) сайта переходим в раздел **«Магазин приложений»** (1) и в поле поиска вводим название модуля (2), нажимаем искать (3), на нужном модуле кликаем на кнопку «Установить» (4)

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FIlTSDswmdmI1EX0XKBbU%2Fimage.png?alt=media&amp;token=59fde64f-521b-4cb2-b294-7cfd35992d40" alt=""></div>

#### Шаг 2

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2F6qCoJwKDkL4zeuQFqFS4%2Fimage.png?alt=media&amp;token=ded670fa-bb02-4180-890e-8c371c71ef58" alt=""><figcaption></figcaption></figure></div>

В параметрах установки модуля вводим параметры и кликаем на **«Установить»**

* ***Адрес своего аккаунта в Bitrix24** - Адрес своего аккаунта в Bitrix24 (например mycompany.bitrix24.ru или crm.mycompany.ru)*
* ***Код пользователя (User ID), Секретный ключ (Secret Key)** - эти данные нужно получить и ввести в Bitrix24 в разделе «Маркет» → «Разработчикам» → «Готовые сценарии» → «Другое» → «Входящий вебхук» (см.* [Создание ключа интеграции](/bitrix24/sozdanie-klyucha-integracii)*)*


# Добавление сета настроек

#### Шаг 1

В ЦА сайта переходим в раздел **Экспорт/Импорт** → **Bitrix24** → **Добавить** (добавляем сет настроек интеграции)

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2Fm1n5yZ1cYELt4GSzTGEN%2Fimage.png?alt=media&amp;token=7cf451ec-7e5c-4d7b-b269-a349cb29c786" alt=""><figcaption></figcaption></figure></div>

#### Шаг 2

В созданном сете заполните поля нужными данными

### Вкладка «Основные»

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2F5YcEGlwixCtpeUYqfsgh%2Fimage.png?alt=media&amp;token=f64b4b65-85d8-46a3-aed2-ed854c3b211a" alt=""></div>

### Вкладка «Данные»

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FrRrFjlliQykE0sEH7WUS%2Fscreenshot-market.morozovpimnev.ru-2022.08.19-12_29_00.png?alt=media&amp;token=dffbfce7-f4e4-4e35-ac0c-666f86713d7c" alt=""></div>


# События (хуки)

https\://www\.hostcms.ru/documentation/modules/core/events/

Для добавление в отправляемые данные своих данных можно использовать следующие хуки ([подробнее](https://www.hostcms.ru/documentation/modules/core/events/))

<pre class="language-php" data-line-numbers data-full-width="true"><code class="lang-php"><strong>// добавление данных в произвольные поля
</strong><strong>class My_Bitrix
</strong>{
    static public function onBeforeCrmLead($controller, $args)
    {
        $oEntity = $controller->getEntity(); // Shop_Order, Form_Fill
        $actionLead = $args[0]; // add или update
        
        /** $args[1] - параметры,
         * добавление параметров в fields
         */
        $args[1]['fields']['UF_CRM_1467910560'] = array('id' => 60);
    }
}

Core_Event::attach('Bitrix24_Controller.onBeforeCrmLead', array('My_Bitrix', 'onBeforeCrmLead'));
Core_Event::attach('Bitrix24_Controller.onBeforeCrmDeal', array('My_Bitrix', 'onBeforeCrmDeal'));
</code></pre>


# Настройки

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2F3DUwm3yTcQQneHaCM7mG%2Fimage.png?alt=media&amp;token=a8c49268-3354-47ee-9b97-e7612e5dc48b" alt=""><figcaption></figcaption></figure></div>

Внесенные при установке и дополнительные настройки можно изменить в ЦА сайта, переходим в раздел **Экспорт/Импорт** → **Bitrix24** → **Настройки**

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2F3PgI828g5A1geYRMyxyH%2Fimage.png?alt=media&amp;token=c5298228-2dae-4589-99b8-175fbf0edbbd" alt=""><figcaption></figcaption></figure></div>

* ***Адрес своего аккаунта в Bitrix24** - Адрес своего аккаунта в Bitrix24 (например mycompany.bitrix24.ru или crm.mycompany.ru)*
* ***Код пользователя (User ID), Секретный ключ (Secret Key)** - эти данные нужно получить и ввести в Bitrix24 в разделе «Маркет» → «Разработчикам» → «Готовые сценарии» → «Другое» → «Входящий вебхук» (см.* [Создание ключа интеграции](/bitrix24/sozdanie-klyucha-integracii)*)*
* ***Тип выгрузки:***
  * *При создании элемента - как только происходит процесс создания элемента в системе, элемент сразу выгуржается в CRM (может тормозить корзину)*
  * *По расписанию - через модуль* [*"Планировщик задач"*](/bitrix24/planirovshik-zadach) *(выгрузка элементов происхдит по расписанию, рекомендуемый вариант)*
* ***Дата начала выгрузки по расписанию** - установите дату с которой вы хотите выгружать элементы по расписанию (т.е. после установки у вас может быть очень большая база с самого начала запуска сайта, дата позволяет выгрузить не все, а только с нужного времени)*


# Планировщик задач

https\://www\.hostcms.ru/documentation/modules/schedule/

#### Шаг 1. Добавление вызова в cron

Выполнением действий, заданных в модуле **«Планировщик задач»**, осуществляется файлом `cron/schedule.php`, вызов которого необходимо добавить в cron. Рекомендуется запускать выполнение файла schedule.php раз в минуту.

Пример вызова: `/usr/bin/php /var/www/site.ru/httpdocs/cron/schedule.php`

Пример вызова с передачей php.ini: `/usr/bin/php --php-ini /etc/php.ini /var/www/site.ru/httpdocs/cron/schedule.php`

{% hint style="warning" %}
Реальный путь на сервере к корневой директории сайта и путь к PHP уточните в службе поддержки хостинга.
{% endhint %}

#### Шаг 2

Добавляем задачу, в основном меню выберите **Инструменты** → **Планировщик задач**, нажмите в меню на **+Задача**

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2Fpi9z1b3GipFH1FFrkhyO%2Fimage.png?alt=media&amp;token=aa9972e5-a897-495e-88ce-ad444c497702" alt=""><figcaption></figcaption></figure></div>

* ***Дата следующего выполнения задачи*** - Дата и время, когда следует выполнить задачу снова. После выполнения задачи к ее времени будет прибавлен установленный интервал, рассчитанное время будет записано в это поле.
* ***Дата добавления задачи*** - Дата и время, когда задача была добавлена.
* ***Интервал*** - Время, устанавливающее периодичность выполнения задачи (рекомендуем указывать `5 минут`).&#x20;
* ***Модуль*** - Модуль, у которого будет вызываться задача (выбираем `Битрикс24`).
* ***Действие*** - Действие модуля, которое будет вызывать задача (выбираем `Выгрузка элементов`).
* ***Идентификатор сущности*** - Идентификатор элемента, над которым нужно произвести действие (указываем ID сайта).
* ***Описание*** - Описание задачи.


# Отладка

{% hint style="danger" %}

### Внимание! Отладкой должен заниматься Ваш технический специалист.

{% endhint %}

### Выгрузка заказа

`request` - это запрос для выгрузки\
`response` - это ответ, если он 200-202 и нет ошибок, занчит все хорошо

Чтобы посмотреть запросы при выгрузке

{% tabs %}
{% tab title="Модуль "История изменений"" %}
Если стоит наш модуль ["История изменений"](https://asmp.su/changelog) то все намного проще, рекомендуем его ставить

После выгрузки заказа, в самом заказе, перейдите на вкладку "Журнал изменений" там будут все запросы/ответы по API

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FmNKnUF8kawu9KWeSbEKR%2Fimage.png?alt=media&amp;token=8df9c220-9ef3-4bbf-b975-5e720099e884" alt=""><figcaption></figcaption></figure></div>
{% endtab %}

{% tab title="Модуль "Журнал событий"" %}
Есил у вас редакция HostCMS.Бизнес и выше

Перйдите в модуль  **Система** →  ["Журнал событий"](https://www.hostcms.ru/documentation/modules/eventlog/) найдите логи связанные с Вашим заказом

обычно они выглядят следующим образом: `[513][bitrix24][request] ...`\
где 513 - это номер заказа

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FuNK5BTMkHOZYb2zzekvH%2Fimage.png?alt=media&amp;token=ee87c2a5-bb4c-493c-8fdb-74a6104874af" alt=""><figcaption></figcaption></figure></div>
{% endtab %}

{% tab title="log.csv" %}
Если у вас редакция HostCMS.Малый Бизнес и ниже

Логи хранятся в файлах в директории **/hostcmsfiles/logs/(текущая дата).log.csv**

Откройте файл и найдите логи связанные с Вашим заказом

обычно они выглядят следующим образом: `[513][bitrix24][request] ...`\
где 513 - это номер заказа
{% endtab %}
{% endtabs %}


# MegaPost

инструкция для v6.0 и HostCMS v7.1.4

Купить модуль 👉 <https://asmp.su/megapost>

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-MjEqrtcq8x_gpSptIzS%2F-MjErmGPA0es_dBLT2-c%2Fad_megapost.png?alt=media&amp;token=9491d560-caf6-4ccd-894a-f892ea146df8" alt=""></div>


# Технические требования

**PHP >= 7.2**

**jQuery >= 1.9.1**

**cURL >= 7.26.0**

**SOAPClient** (для DPD)

**memory limit >= 512Mb** (для Яндекс)


# Установка модуля

*Перед установкой купите модуль (*[*инструкция*](/master/pokupka-modulya)*)*

{% hint style="danger" %}
Для дальнейших действий нужны минимальные знания работы с **css/js**, **макетами**, **XSL-шаблонами (далее - XSL)**, **типовыми динамическими страницами (далее - ТДС)** в HostCMS. Работу должен выполнять Ваш программист или администратор сайта.
{% endhint %}

#### Шаг 1

В центре администрирования (далее ЦА) сайта переходим в раздел **«Магазин приложений»** (1) и в поле поиска вводим название модуля (2), нажимаем искать (3) или "Enter", на нужном модуле кликаем на кнопку **«Установить»** (4)

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-MjEqHEWbiXCfzY2G6eS%2F-MjEq_3ke-0P7_tFuB2A%2Fimage.png?alt=media&amp;token=1c27c347-6dd7-4b39-b5e1-0e9fc28d2886" alt="Магазин приложений"></div>

#### Шаг 2

В параметрах установки модуля вводим параметры и кликаем на **«Установить»**

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-MjErtB1aXeUgvJng8VE%2F-MjEsdITCSnPRwsOLXi5%2Fimage.png?alt=media&amp;token=8025608e-708e-433d-8497-c0d7be0033af" alt="Параметры установки"></div>

* ***Магазин** - выбор магазина, к которому будут установлены доставки*
* ***API-ключ Яндекс.Карт** - код ключа для работы карт с точками ПВЗ*&#x20;
* ***Установить XSL шаблоны** - устанавливает примеры шаблонов в соответствующем разделе с текущей датой\**
* ***Установить ТДС** - устанавливает примеры шаблонов в соответствующем разделе с текущей датой\**
* ***Установить пример Макета** - устанавливает пример макета в соответствующем разделе с текущей датой\**
* ***Установить "СДЭК", "Почта Россия" и др.** - устанавливает обработчики доставки в соответствующем разделе с текущей датой*

{% hint style="info" %}
\*например: МагазинДоставки \[MEGAPOST] \[05.06.2020 13:00:24]\
СДЭК \[05.06.2020 13:00:24]
{% endhint %}


# Создание ключа API

#### Шаг 1

Перейдите в [Яндекс.Кабинет](https://developer.tech.yandex.ru/) разработчика и нажмите на кнопку **«Получить API»** <img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-MjEwCYImegHeug3Ntiu%2F-MjEyEsK7TRHsdvgi-jA%2Fimage.png?alt=media&amp;token=e8155ca0-bc23-45d5-8ed7-d2d4e13fa4d3" alt="" data-size="line">&#x20;

#### Шаг 2

В форме **«Подключить API»** в разделе **«Карты»** выберите **«JavaScript API и HTTP Геокодер»** (1) и нажмите **«Продолжить»** (2)

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-MjEyhI37SfaTkekDMUl%2F-MjEz30NCVyZPX--DR_g%2Fimage.png?alt=media&amp;token=d03538f2-7905-4f71-9189-81d18b7d5419" alt="форма "></div>

{% hint style="warning" %}
Если у Вас нет пункта **«JavaScript API и HTTP Геокодер»**, значит у Вас уже был подключен этот вариант и дальше ничего делать не нужно, просто возьмите API-ключ оттуда &#x20;
{% endhint %}

#### Шаг 3

Заполните форму и нажмите **«Продолжить»**

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-MjEyhI37SfaTkekDMUl%2F-MjFBvGOWKy0o7NBgCKD%2Fimage.png?alt=media&amp;token=2e415667-19e0-4fa8-9a57-6463e167aa5b" alt=""></div>

* ***ФИО** - ваше ФИО*
* ***Email для связи** - ваш email*
* ***Телефон** - ваш телефон*
* ***Название компании** - ваша компания*
* ***Вы планируете использовать API в открытой или закрытой системе?** - "В открытой"*
* ***Вы планируете использовать API в платном или бесплатном проекте?** - "В бесплатном"*
* ***Вы планируете отображать данные на карте или будете использовать только геокодирование?** - "Буду отображать данные на карте"*
* ***Ссылка на ваш сайт, где будет использоваться API** - ссылка на сайт*
* ***Краткое описание сервиса** - "Интернет магазин, карта используется в корзине для выбора ПВЗ"*

#### Шаг 4

Если все успешно, то будет сообщение **«API интерфейс подключен»**, нажмите **«Перейти к API»**

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-MjFCzqpjIg83aXFjx1N%2F-MjFD9d_Fuqrf9hJ7v1u%2Fimage.png?alt=media&amp;token=39858648-aaed-46db-af35-f694a5290b65" alt=""></div>

#### Шаг 5

Скопируйте Ваш API-ключ (1)

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-MjFCzqpjIg83aXFjx1N%2F-MjFDqckLodgyie-5tvN%2Fimage.png?alt=media&amp;token=9741c625-ed39-48e5-9b5c-a7621e48d1a4" alt=""></div>

{% hint style="warning" %}
Чтобы обезопасить Ваш API-ключ, рекомендуется привязать его к Вашему сайту, где он будет использоваться, нажмите **«Изменить»** и следуйте шагу 6
{% endhint %}

#### Шаг 6 (не обязательный)

В поле **"Ограничение по IP-адресам"** введите IP адрес Вашего сервера\* или в поле **"Ограничение по HTTP Referer"** введите адрес Вашего сайта (Без обозначения протокола, порта и url. По одному значению в каждой строке. Например, yandex.ru или яндекс.рф) или в обоих полях сразу

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-MjFCzqpjIg83aXFjx1N%2F-MjFE_SAwT7yx7nRHcBB%2Fimage.png?alt=media&amp;token=9607d7fd-8bf4-4035-a86b-39b568f2adc6" alt=""></div>

{% hint style="info" %}
\*IP адрес сервера можно узнать на сайте [2ip.ru](https://2ip.ru/lookup/)
{% endhint %}


# DaData

https\://asmp.su/dadata

Создание ключа API для интеграции выбора города

1. Зарегистрируйтесь на сайте [DaData](https://asmp.su/dadata)
2. В личное кабинете скопируйте API-ключ

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FJCC8ZM885R7AuwOu0z5E%2Fimage.png?alt=media&amp;token=43965c9f-a2b3-45a1-9110-42830b3af0e1" alt=""><figcaption></figcaption></figure></div>

{% hint style="success" %}
Лимиты при тарифе «Бесплатный» - 10 000 запросов на в день.
{% endhint %}


# Настройки макета

{% hint style="danger" %}
Для дальнейших действий нужны минимальные знания работы с **макетами**, **XSL-шаблонами (далее - XSL)**, **типовыми динамическими страницами (далее - ТДС)** в HostCMS. Работу должен выполнять Ваш программист или администратор сайта.
{% endhint %}

В главном макете Вашего сайта укажите функцию **MegaPost\_GeoIp::getCountryLocationCity()** (php код перед \<head>) и css стили/js скрипты для работы модуля (обычно в пределах тега \<head>\</head>)

**MegaPost\_GeoIp::getCountryLocationCity()** - для автоопределение города посетителя и записи в сессию (можно не указывать)

{% tabs %}
{% tab title="php Core\_Page" %}
{% code lineNumbers="true" fullWidth="true" %}

```php
<?php
	// GeoIP определяет текущий город и сохраняет в $_SESSION['ASMP_City']
	MegaPost_GeoIp::getCountryLocationCity();
?>
<head>
	<!-- ... ваш код title и тд -->
	<?php
		Core_Page::instance()
			/* ... тут ваши css ... */
			->css('/hostcmsfiles/megapost/css/megapostXXXX.css')
			->showCss();
	?>
	<script type="text/javascript">var apikeymap = 'APIKEY_YMAP';</script>
	<?php
		Core_Page::instance()
			/* ... тут ваши js ... */
			/* все js megapost должны быть подключены после jQuery */
			->js('/hostcmsfiles/megapost/js/megapost.min.js')
			->js('/hostcmsfiles/megapost/js/mp.autocomplete.js')
			->js('/hostcmsfiles/megapost/js/megapost-scriptXXXX.js')
			->showJs();
	?>
</head>
```

{% endcode %}
{% endtab %}

{% tab title="html inline" %}
{% code lineNumbers="true" fullWidth="true" %}

```php
<?php
	// GeoIP определяет текущий город и сохраняет в $_SESSION['ASMP_City']
	MegaPost_GeoIp::getCountryLocationCity();
?>
<head>
	<!-- тут ваш код, css и js -->
	<link rel="stylesheet" type="text/css" href="/hostcmsfiles/megapost/css/megapost9999.css" />
	
	<script type="text/javascript">var apikeymap = 'APIKEY_YMAP';</script>
	
	<!-- все js megapost должны быть подключены после jQuery -->
	<script src="/hostcmsfiles/megapost/js/mp.autocomplete.min.js"></script>
	<script src="/hostcmsfiles/megapost/js/megapost.min.js"></script>
	<script src="/hostcmsfiles/megapost/js/megapost-script9999.js"></script>
</head>
```

{% endcode %}
{% endtab %}
{% endtabs %}

{% hint style="danger" %}
**Готовый пример можно увидеть в демо макете созданном после установки модуля**

в css и js файлах **XXXX** - Ваш уникальный номер файла при установке, посмотреть можно в папке **/hostcmsfiles/megapost/\*/**, т.к. все файлы без уникального номера при обновлении будут заменяться на новые

**APIKEY\_YMAP** - ваш API ключ Яндекс Карт&#x20;
{% endhint %}

### Настройки в JS / megapost-scriptXXXX.js

{% code overflow="wrap" lineNumbers="true" fullWidth="true" %}

```javascript
callback: '/megapost/callback/' // путь callback командера для ajax MegaPost_Command_Controller
jMForm: '[data-megapost=true]' // селектор формы для инициалзиации MegaPost
mblock: '#mpDelivery' // селектор блока инициализации карты
cartOneStep: '[data-cartOneStep=true]' // селектор блока корзины
addressOneStep: '[data-addressOneStep=true]' // селектор блока контактных данных и адреса
deliveryOneStep: '[data-deliveryOneStep=true]' // селектор блока доставки
paymentSystemOneStep: '[data-paymentSystemOneStep=true]' // селектор блока оплаты
cityNameDiv: '.shop_country_location_city_div' // селектор блока города
inputCityName: 'input#shop_country_location_city_name' // селектор поля ввода города для подключени autocomplete
boxLoaderDelivery: '.boxLoaderDelivery' // селектор блока расчета доставок в карточке товара
boxLoaderPVZDelivery: '.boxLoaderPVZDelivery' // селектор блока расчета доставок с картой на отдельной странице
otherCityNameDiv: '.other_city_name_div' // селектор блока произвольного ввода города
otherCityTxt: '<span class="other_city">Ввести другой город (если в списке нет нужного)</span>' // селектор блока корзины
otherCity: true // показывать пункт "Ввести другой город", true - да, false - нет
svgLoader: '<svg class="loader" xmlns="http://www.w3.org/2000/svg" height="10" viewBox="0 0 100 20" fill="currentColor"><g transform="translate(20 10)"><circle r="6"><animateTransform attributeName="transform" begin="-0.375s" calcMode="spline" dur="1s" keySplines="0.3 0 0.7 1;0.3 0 0.7 1" keyTimes="0;0.5;1" repeatCount="indefinite" type="scale" values="0;1;0"/></circle></g><g transform="translate(40 10)"><circle r="6"><animateTransform attributeName="transform" begin="-0.25s" calcMode="spline" dur="1s" keySplines="0.3 0 0.7 1;0.3 0 0.7 1" keyTimes="0;0.5;1" repeatCount="indefinite" type="scale" values="0;1;0"/></circle></g><g transform="translate(60 10)"><circle r="6"><animateTransform attributeName="transform" begin="-0.125s" calcMode="spline" dur="1s" keySplines="0.3 0 0.7 1;0.3 0 0.7 1" keyTimes="0;0.5;1" repeatCount="indefinite" type="scale" values="0;1;0"/></circle></g><g transform="translate(80 10)"><circle r="6"><animateTransform attributeName="transform" begin="0s" calcMode="spline" dur="1s" keySplines="0.3 0 0.7 1;0.3 0 0.7 1" keyTimes="0;0.5;1" repeatCount="indefinite" type="scale" values="0;1;0"/></circle></g></svg>' // иконка прелоадера расчета доставок
// БЛОК ЦЕН
getTotalAmount: '[data-gettotalamount]' // сеелктора блока откуда берем стоимости товаров без скидки
getDiscountAmount: '[data-getdiscountamount]' // сеелктора блока блок откуда берем скидки
setTotalAmount: '[data-settotalamount]' // сеелктора блока куда вставлять сумму товаров без скидки
setDiscountAmount: '[data-setdiscountamount]' // сеелктора блока блок куда вставлять сумму скидки
setDeliveryAmount: '[data-setdeliveryamount]' // сеелктора блока куда вставлять сумму доставки
setDeliveryCashAmount: '[data-setdeliverycashamount]' // сеелктора блока куда вставлять сумму наложки
setTotalSum: '[data-settotalsum]' // сеелктора блока куда вставлять итоговую сумму заказа с учетом скидки и доставки
```

{% endcode %}


# Подключение XSL и ТДС

{% hint style="info" %}
Все примеры **XSL-шаблонов** и ТДС находятся в одноименных папках, под названием **"megapost"** соответсвующего раздела
{% endhint %}

В структуре сайта отредактируйте раздел **"Корзина" (cart)** (у Вас может называться по другому), со следующими настройками:

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FD02ME7Op3tK3WVCEIL7O%2Fimage.png?alt=media&amp;token=3022e45f-2012-40c9-8c0a-200f4e7b6e46" alt="Редактирование узла структуры &#x22;Корзина&#x22;"></div>

* **Раздел ТДС** - megapost
* **Страница ТДС** - Интернет-магази корзина \[MEGAPOST] \[ДАТА\_ШАБЛОНА]
* **Кол-во шагов в корзине** - Один, Два или Четыре (Один - все оформление проходит на одной странице, Два - на первом шаге корзина, на втором оформление заказа, Четыре - пошаговое оформление заказа: Корзина->Контакты/Адрес->Способы доставка->Способы оплаты)
* **XSL корзины** - megapost->МагазинКорзина \[MEGAPOST] \[ДАТА\_ШАБЛОНА]
* **XSL адрес доставки** - megapost->МагазинАдресДоставки \[MEGAPOST] \[ДАТА\_ШАБЛОНА]
* **XSL доставок** - megapost->МагазинДоставки \[MEGAPOST] \[ДАТА\_ШАБЛОНА]
* **XSL платежной системы** - megapost->МагазинПлатежнаяСистема \[MEGAPOST] \[ДАТА\_ШАБЛОНА]

В структуре сайта отредактируйте раздел, к которому у Вас подключен **Интернет-Магазин (shop)** (у Вас может называться по другому), со следующими настройками:

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FW6w7HBzxsOx7Da5RDaYz%2Fimage.png?alt=media&amp;token=3c257828-579b-4e0d-b3b9-7ee9f958d523" alt=""><figcaption><p>Редактирование узла структуры "Каталог"</p></figcaption></figure></div>

* **XSL письма администартору** - megapost->ПисьмоАдминистратору \[MEGAPOST] \[ДАТА\_ШАБЛОНА]
* **XSL письма пользователю** - megapost->ПисьмоПользователю \[MEGAPOST] \[ДАТА\_ШАБЛОНА]

#### XSL-шааблон последнего шага уже оформленного заказа

Стандартно он вызывается и генерируется из обработчика платежнйо системы в getNotification(), где и указывается XSL-шаблон "ОплатаПриПолучении" (у вас он может называться по другому),  в какждом используемом Вами обработчике оплаты указать следующий "ОплатаПриПолучении \[MEGAPOST] \[ДАТА\_ШАБЛОНА]"

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FAM298E4pr6UgYZTuL0J8%2Fimage.png?alt=media&amp;token=28a7bba1-05ee-4852-ba9e-ddc06f6a77e8" alt=""><figcaption></figcaption></figure></div>


# События (хуки) и др

https\://www\.hostcms.ru/documentation/modules/core/events/

#### 1. Хуки для контроллеров корзины

Т.к. в корзине в 1 шаг все блоки подгружаются ajax и для облегчения интеграции (исключаем работу в ТДС) их формирование идет в файле **MegaPost\_Command\_Controller**, который нельзя модифицировать, но можно использовать хуки ([подробнее](https://www.hostcms.ru/documentation/modules/core/events/))

{% code lineNumbers="true" fullWidth="true" %}

```php
// хук для доступа к Shop_Cart_Controller_Show
class My_MegaPost
{
    static public function onBeforeCartShow($controller, $args)
    {
        $Shop_Cart_Controller_Show = $args[0];
        
        $Shop_Cart_Controller_Show
            ->itemsProperties(FALSE)
            ->checkStock(TRUE);
    }
}

Core_Event::attach('MegaPost_Command_Controller.onBeforeCartShow', array('My_MegaPost', 'onBeforeCartShow'));

// хук для доступа к MegaPost_Shop_Delivery_Controller_Show
class My_MegaPost
{
    static public function onBeforeDeliveryShow($controller, $args)
    {
        $Shop_Delivery_Controller_Show = $args[0];
        
        $Shop_Delivery_Controller_Show
            ->shopDeliveries()
                ->queryBuilder()
                    ->where('shop_deliveries.id','NOT IN', array(123))
		    ->setOr()
		    ->where('shop_deliveries.id','IN', array(456));
    }
}

Core_Event::attach('MegaPost_Command_Controller.onBeforeDeliveryShow', array('My_MegaPost', 'onBeforeDeliveryShow'));

// хук для доступа к Shop_Payment_System_Controller_Show
class My_MegaPost
{
    static public function onBeforePaymentSystemShow($controller, $args)
    {
        $Shop_Payment_System_Controller_Show = $args[0];
        
        $Shop_Payment_System_Controller_Show
            ->shopPaymentSystems()
                ->queryBuilder()
                    ->where('shop_payment_systems.id','NOT IN', array(123))
		    ->setOr()
		    ->where('shop_payment_systems.id','IN', array(456));
    }
}

Core_Event::attach('MegaPost_Command_Controller.onBeforePaymentSystemShow', array('My_MegaPost', 'onBeforePaymentSystemShow'));
```

{% endcode %}

#### 2. Остаток на складе

Указать для корзины для всего сайта без хуков и ТДС проверку остатка на складе, можно разместив в файле **bootstrap.php** следующий код

{% code lineNumbers="true" fullWidth="true" %}

```php
// Проверять остаток на складе при добавлении в корзину
$bCheckStock = TRUE;

$oShop_Cart_Controller = Shop_Cart_Controller::instance();
$oShop_Cart_Controller->checkStock($bCheckStock);
```

{% endcode %}

#### 3. Изменение данных расчета доставок

Данный хук позволяет для каждого расчета, получить и изменить данные перед передачей в корзину или вовсе не выводить его (нужно вернуть `FALSE`)

{% code lineNumbers="true" fullWidth="true" %}

```php
class My_MegaPost
{
    static public function onAfterHandlerObject($handler, $args)
    {
        list($object, $Megapost_Condition) = $args;
        
        // доставка ID 1 && курьер && тариф
        if($handler->shop_delivery_id == 1 && $objcet->type == 0 && $objcet->tariffId == 2)
        {
            $objcet->price = 0; // изменим цену
        }
		
    	return NULL; // возвращает объект с данными расчета
    	// return FALSE; // не возвращает расчет
    }
}

Core_Event::attach('Megapost_Handler.onAfterHandlerObject', array('My_MegaPost', 'onAfterHandlerObject'));
```

{% endcode %}


# Настройка MegaPost

Перейдите в раздел **Контент** → **Интернет-магазины**. Выберите магазин, перейдите в список типов доставки **Справочники** → **Доставкии** → **MegaPost Настройки** и настройте нужные параметры

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-Mjc9cNYwQFk_lM4-rhR%2F-MjcdOeZ65wdZ5bUmP1m%2Fimage.png?alt=media&amp;token=3b7057b4-63bc-4be5-9cd1-4077031d3261" alt=""></div>

### Вкладка «Общие»

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FfRWLEqvinDz72BS9xs2Q%2Fimage.png?alt=media&amp;token=600300c4-6334-4f36-8aff-ce761ef4e8ba" alt=""><figcaption></figcaption></figure></div>

* **Ключ API ключ Яндекс.Карт** - ключ для работы Яндекс Карт (как получить ключ [подробнее](/megapost/sozdanie-klyucha-api))
* **Кол-во город в подсказках** - кол-во выпадающих город при вводе названия
* **Сервис КЛАДР** - сервис для поиска городов
  * HostCMS - справочник городов HostCMS
  * [DaData](https://asmp.su/dadata) (как получить ключ [подробнее](/megapost/dadata))
* **Ваш токен (dadata.ru)** - обязательный если используете сервис dadata (можно получить бесплатный)
* **Формат вывода подсказок** - задает формат вывода подсказок, по умолчанию `{postcode}, {region_abbr}, {district_abbr}, {city_abbr}, {settlement_abbr}`
* **Использовать полный поиск по адресу** - делает возможность в строке города поиск по улице/дом, автоматически подставляются в соовтетствующие поля улица/дом
* **Показывать ПВЗ региона** - делает возможность например, при выборе города Москва, показывать ПВЗ не только Москвы, но и населенных пунктов входящих в регион Москва или по Екатеринбургу - всех ПВЗ Свердловской области
* **Статус для выгрузки заказа по API** - если доставка в модуле поддерживает выгрузку заказа в ЛК транспортной компании, то при изменение статуса на указанный происходит выгрузка данного заказа (если статус не указан, то выгрузка происходить не будет)
* **Статус для вызова курьера по API** - если доставка в модуле поддерживает вызов курьера транспортной компании, то при изменение статуса на указанный происходит формирование заявки на вызов курьера (если статус не указан, то ничего не происходит)
* **Хранилище кэша** - хранилище для кэшированния данных от транспортных компаний при расчете (рекомендуем "megapost" 30 дней) в редакции "Бизнес" и выше
* **Округление цены доставки** - "До десятых" (312 -> 320)/"Сотых" (312 -> 400)
* **Объединять сумму наложенного платежа со стоимостью доставки в общую сумму** - при указании данного параметра в заказе будет одна позиция как "Доставка" с суммированной ценой, иначе НП отдельной позицией (при условии что настройки НП применяются для данного заказа)
* **Поле для расчета веса, длины, ширины, высоты** - возможный выбор выбора поля веса и габаритов откуда брать значение, либо основные поля (вес, длина, ширина, глубина) товара, либо из дополнительного свойства (Название/XML-тег доп. свойства должно состоять из одноименного названия/поля основного свойства товара и быть типом "Целое число" или "Число с плавающей запятой" *Например: "Вес товара"/"weight\_item"*) (Например: если габариты упаковки хранятся в доп. свойствах)
* **Поле для расчета объема** - в обработчиках доставки где вместо отдельных габаритов можно передавать общий объем товара (например: СДЭК), который хранится в доп. свойстве (Например: если у вас нет габаритов, а только объем в доп. свойстве)

#### ПВЗ: общие настройки элемента

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FOwGqz4fxA6kEYAvMgWjF%2Fimage.png?alt=media&amp;token=889d85c1-4736-4956-9640-843f2db73084" alt=""><figcaption><p>ПВЗ: общие настройки элемента</p></figcaption></figure></div>

*Т.к. самовывоза нет как элемента в ЦА и он объединяет все доставки в ПВЗ на карте, то и логика его формирования в XSL шаблоне другая, настроить вывод его стандартных данных можно следующими настройками*

* **Название элемента** - название пункта, которое будет выводится в корзине
* **Зависимые поля** - поля, которые будут отображаться для обязательного ввода в корзине, при выборе данного элемента
* **Изображение** - изображение пункта, которое будет выводится в корзине
* **Порядок сортировки** - сортировка пункта, для общей сортировки со всеми доставками

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FTkg78t3JTycG9qsc2cF5%2Fimage.png?alt=media&amp;token=04c69fc6-3e4b-4724-b4e7-0d67245936ce" alt=""><figcaption><p>Трек номер</p></figcaption></figure></div>

* **XSL шаблон доставок для товара** - шаблон для отображения расчета доставок на странице товара
* **XSL шаблон вывода карты ПВЗ** - шаблон для отображения карты ПВЗ
* **Показывать ошибки доставки (только админам)** - отображает краткие ошибки доставко при расчете в корзине, отображаются только для авторизированных в ЦА
* **Выводить логи в консоль браузера (только админам)** - отображает подробные логи расчетов по API [в консоле браузера](https://support.morozovpimnev.ru/megapost/otladka), отображаются только для авторизированных в ЦА

#### Трек Номер

* **Статус для отправки письма** - при изменение статуса на указанный происходит оптравка письма на Email пользователю/администратору с данными трек номера и инфомрацией где его отследить
* **XSL шаблон письма пользователю** - шаблон письма информации по трек номеру пользователю
* **XSL шаблон письма администратору** - шаблон письма информации по трек номеру администратору


# СДЭК

{% embed url="<https://www.cdek.ru/ru/>" %}

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FU4UViwdqZgucIf0zGY4f%2Fimage.png?alt=media&amp;token=8496c086-8958-4c64-ad74-89d7527269b2" alt=""><figcaption></figcaption></figure></div>

* **ID города-отправителя** - внутренний идентификатор города СДЭК из которого происходит отправка, узнать можно [тут](https://market.morozovpimnev.ru/cdek/)
* **Логин (Account), Пароль (Account)** - сгенерированные ключи доступа API, получить можно в ЛК СДЭК в разделе ["Интеграция"](https://lk.cdek.ru/integration/index)

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FtUA42VkmqBVdJBwFiLmc%2Fimage.png?alt=media&amp;token=af01ac06-079e-4448-b7d3-65e0c61d0faa" alt=""><figcaption></figcaption></figure></div>

#### Настройка выгрузки в ЛК (личный кабинет СДЭК / создание накладной)

* **Объявленная стоимость товара** - при 0 выгружает товары с ценой указанные в заказе, при указании больше 0 выгружает товарам указанную цену объявленной стоимости товара&#x20;
* ~~**Передавать полную стоимость товара**~~ - не используется
* **ФИО контактного лица, Телефон конатктного лица, Адрес отправителя** - данные для выгрузки накладной и вызова курьера
* **Код ПВЗ СДЭК** - код пункта приема, если вы сдаете отправления сами
* **Дополнительные услуги** - услуги которые будут выгруженные для заказа в ЛК СДЭК (ПРИМЕРКА  \[TRYING\_ON], ЧАСТИЧНАЯ ДОСТАВКА \[PART\_DELIV])

#### Настройки товаров по умолчанию

* **Вес, Длина, Ширина, Высота** - вес и габариты товара по умолчанию, если их нет у самого товара, то будут рассчитываться по указанным

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-Mjbl_s5H0PjU7OZBZpV%2F-MjbmX1yH7JXXvZ34Avx%2F%D1%81%D0%B4%D1%8D%D0%BA2.png?alt=media&amp;token=66e649fa-c751-42fe-a3c2-6d35da3321bd" alt="Настройки для курьера"></div>

* **Активность** - активность типа доставки
* **+ к цене доставки** - указанная сумма прибавляется к исходной сумме доставки
* **+ % цены доставки** - процент прибавляется к исходной сумме доставки (высчитывается от суммы доставки)
* **Наценка от суммы заказа** - процент прибавляется к исходной сумме доставки (высчитывается от суммы заказа)
* **+ к начальной дате** - прибавляет указанное кол-во дней к исходному минимальному кол-ву дней доставки (например 1 день, если отгрузка происходит не в день заказа)
* **+ к конечной дате** - прибавляет указанное кол-во дней к исходному максимальному кол-ву дней доставки (например 1 день, если отгрузка происходит не в день заказа)
* **+ к весу заказа** - прибавляет дополнительный вес к исходному весу заказа для расчета (например 50гр для упаковки)
* **Страны, Области, Города (если пусто, то применяется ко всем)** - расчет доставки будет выводится только для указанных местоположений (**"НЕ"** - расчет доставки не выводится для указанных местоположений), если ничего не указывать, доставка рассчитывается для всех¹ (например если в у Вас своя собственная доставка по городу и вы не хотите выводить сторонние ТК, укажите город и поставьте галочку "НЕ")
* **Платежные системы** - указания доступности оплат для типа доставки (например если в [общих настройках](https://www.hostcms.ru/documentation/modules/shop/references/delivery/delivery-and-payment-systems-relations/) для доставки выбраны "Наличные" и "Онлайн оплата", то можно указать Курьеру "Онлайн оплата" и для данного типа доставки будет доступна только она)²
* **Тариф** - тарифы для расчета
* **По приоритету** - если галочка стоит, то будет выводится расчет первого доступного тарифа, иначе расчеты по всем выбранным тарифам

{% hint style="warning" %}
¹при указании города, не обязательно для него указывать и страну и область, можно указать только город, данные поля работаю как самостоятельные настройки\
²не указывайте все те же платежные системы, что указаны в [общих настройках](https://www.hostcms.ru/documentation/modules/shop/references/delivery/delivery-and-payment-systems-relations/)  доставки, указывайте только для ограничения для того или иного типа доставки
{% endhint %}

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-Mjbl_s5H0PjU7OZBZpV%2F-MjbmZwxom2uB-hlYz0W%2F%D1%81%D0%B4%D1%8D%D0%BA3.png?alt=media&amp;token=a1042018-bca0-4cf0-b515-f2cf093b28ea" alt="Настройки для ПВЗ, Наложенный платеж"></div>

* *см. Настройки для курьера*
* **Вывод типа ПВЗ** - выводит на карте Склады/Постаматы/Все
* \[По приоритету] - по умолчанию на карте выводится расчет первого доступного тарифа

#### Наложенный платеж (НП)

* **Формула** - используется для Почты России
* **Процент** - процент НП
* **Тип** - расчет НП от "суммы товары + доставка"/"только товары"/"только доставка"
* **Не включать стоимость доставки в оплату заказа** - отображает расчет цены доставки в корзине для информации, но при создании заказа сумма доставки не будет попадать
* **Налог** - НДС в процентах для доставки (входит в стоимость)


# Почта России

{% embed url="<https://www.pochta.ru/>" %}

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FHjqdusstR4MogLTon8V4%2Fimage.png?alt=media&amp;token=2d982064-e48b-41ee-aff3-55b23402ae72" alt="Основные настройки, Настройка выгрузки в ЛК, Настройки товаров по умолчанию"></div>

* **Индекс места отправления** - индекс почтового отделения отправления посылки, для юридических лиц с договором нужно указывать индекс из ЛК Почты России (ПР) раздел "Настройки" → ["Сервис"](https://otpravka.pochta.ru/settings#/service-settings) (ОПС обслуживания) т.к. некоторые тарифы считают только с ним
* **ИНН-договор** - ваш "инн-договор" (через дефис) для расчета индивидуальных тарифов

#### Настройка выгрузки в ЛК (личный кабинет ПР/ создание отправлений)

* **Логин, Пароль** - логин и пароль от ЛК ПР <https://otpravka.pochta.ru/>
* **Токен авторизации** - получить можно в ЛК ПР раздел "Настройки" → ["API"](https://otpravka.pochta.ru/settings#/api-settings)
* **Категория РПО** - категория регистрируемого почтового отправление, уточните у Вашего менеджера (обычно "Простое" \[SIMPLE])
* **Вид РПО** - вид регистрируемого почтового отправление, уточните у Вашего менеджера (обычно "Посылка "нестандартная"" \[POSTAL\_PARCEL])

#### Настройки товаров по умолчанию

* **Вес** - вес товара по умолчанию, если его нет у самого товара, то будут рассчитываться по указанному

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-MjcmpGjDjRAyg6Y7bA8%2F-MjcnpQMumxKO4HLBs3J%2Fimage.png?alt=media&amp;token=162008f5-385b-41c8-932b-f5217313b38d" alt="Внутренние отправления"></div>

* **Активность** - активность типа доставки
* **+ к цене доставки** - указанная сумма прибавляется к исходной сумме доставки
* **+ % цены доставки** - процент прибавляется к исходной сумме доставки (высчитывается от суммы доставки)
* **Наценка от суммы заказа** - процент прибавляется к исходной сумме доставки (высчитывается от суммы заказа)
* **+ к начальной дате** - прибавляет указанное кол-во дней к исходному минимальному кол-ву дней доставки (например 1 день, если отгрузка происходит не в день заказа)
* **+ к конечной дате** - прибавляет указанное кол-во дней к исходному максимальному кол-ву дней доставки (например 1 день, если отгрузка происходит не в день заказа)
* **+ к весу заказа** - прибавляет дополнительный вес к исходному весу заказа для расчета (например 50гр для упаковки)
* **Страны, Области, Города (если пусто, то применяется ко всем)** - расчет доставки будет выводится только для указанных местоположений (**"НЕ"** - расчет доставки не выводится для указанных местоположений), если ничего не указывать, доставка рассчитывается для всех \* (например если в у Вас своя собственная доставка по городу и вы не хотите выводить сторонние ТК, укажите город и поставьте галочку "НЕ")
* **Платежные системы** - указания доступности оплат для типа доставки (например если в [общих настройках](https://www.hostcms.ru/documentation/modules/shop/references/delivery/delivery-and-payment-systems-relations/) для доставки выбраны "Наличные" и "Онлайн оплата", то можно указать Курьеру "Онлайн оплата" и для данного типа доставки будет доступна только она) \*\*
* **Тариф** - тарифы для расчета
* **Опись вложения \[22], Проверка комплектности \[38], СМС-уведомления \[44]** - дополнительные услуги, которые нужно учитывать при расчете суммы доставки
* **Корпоративный клиент \[28]**  - если расчет суммы доставки нужен как юр. лица с договором ПР

{% hint style="warning" %}
\* при указании города, не обязательно для него указывать и страну и область, можно указать только город, данные поля работаю как самостоятельные настройки\
\*\* не указывайте все те же доставки, что указаны в [общих настройках](https://www.hostcms.ru/documentation/modules/shop/references/delivery/delivery-and-payment-systems-relations/)  доставки, указывайте только для ограничения для того или иного типа доставки
{% endhint %}

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FZBYfPtcj8frJHlL0BVXm%2Fimage.png?alt=media&amp;token=720d1b82-7351-4373-b0a0-03090988a72e" alt=""><figcaption><p>Постоматы</p></figcaption></figure></div>

* *см. Внутренние отправления*

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-MjcmpGjDjRAyg6Y7bA8%2F-MjcoAyprd5rEGxCacFq%2Fimage.png?alt=media&amp;token=90e040cf-4bc9-4c4b-8059-f347e60d0ad0" alt="Настройки для международного"></div>

* *см. Внутренние отправления*
* **Вариант пересылки** - учитывается для расчета стоимости доставки "наземным путём"/"по возможности воздушным путём"/"только воздушным путём"

#### Наложенный платеж (НП)

* **Формула** - формула расчета НП для отправителей как физ. лицо и юр. лицо с договором ПР
* **Процент** - процент НП
* **Тип** - расчет НП от "суммы товары + доставка"/"только товары"/"только доставка"
* **Не включать стоимость доставки в оплату заказа** - отображает расчет цены доставки в корзине для информации, но при создании заказа сумма доставки не будет попадать
* **Налог** - НДС в процентах для доставки (входит в стоимость)


# Boxberry

{% embed url="<https://boxberry.ru/>" %}

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2F0cJ4TKC43iTCuo4wyBpr%2Fimage.png?alt=media&amp;token=ba30c740-1ef6-4c18-a0e7-1d10260850fa" alt=""><figcaption></figcaption></figure></div>

* **API token** - сгенерированные ключи доступа API, получить можно в ЛК Boxberry в разделе "Инфоцентр" → ["Интеграция"](https://account.boxberry.ru/client/infoblock/index?tab=api\&api=methods) (вкладка Методы API)

#### Настройка выгрузки в ЛК (личный кабинет Boxberry / создание накладной)

* **Общая (объявленная) стоимость** - при 0 выгружает товары с ценой указанные в заказе, при указании больше 0 выгружает заказу указанную объявленную стоимость
* ~~**Передавать полную стоимость товара**~~ - не используется
* **Код пункта приема** - код пункта приема, если вы сдаете отправления сами, узнать можно [тут](https://market.morozovpimnev.ru/boxberry/)

#### Настройки товаров по умолчанию

* **Вес** - вес товара по умолчанию, если его нет у самого товара, то будут рассчитываться по указанному

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-Mjc0BnZ6bN8xCRGJLMW%2F-Mjc0vusOkbQu7BT45dQ%2Fimage.png?alt=media&amp;token=38518bc6-b8e8-4a0c-bfff-26b8584a7eca" alt="Настройки для курьера"></div>

* **Активность** - активность типа доставки
* **+ к цене доставки** - указанная сумма прибавляется к исходной сумме доставки
* **+ % цены доставки** - процент прибавляется к исходной сумме доставки (высчитывается от суммы доставки)
* **Наценка от суммы заказа** - процент прибавляется к исходной сумме доставки (высчитывается от суммы заказа)
* **+ к начальной дате** - прибавляет указанное кол-во дней к исходному минимальному кол-ву дней доставки (например 1 день, если отгрузка происходит не в день заказа)
* **+ к конечной дате** - прибавляет указанное кол-во дней к исходному максимальному кол-ву дней доставки (например 1 день, если отгрузка происходит не в день заказа)
* **+ к весу заказа** - прибавляет дополнительный вес к исходному весу заказа для расчета (например 50гр для упаковки)
* **Страны, Области, Города (если пусто, то применяется ко всем)** - расчет доставки будет выводится только для указанных местоположений (**"НЕ"** - расчет доставки не выводится для указанных местоположений), если ничего не указывать, доставка рассчитывается для всех \* (например если в у Вас своя собственная доставка по городу и вы не хотите выводить сторонние ТК, укажите город и поставьте галочку "НЕ")
* **Платежные системы** - указания доступности оплат для типа доставки (например если в [общих настройках](https://www.hostcms.ru/documentation/modules/shop/references/delivery/delivery-and-payment-systems-relations/) для доставки выбраны "Наличные" и "Онлайн оплата", то можно указать Курьеру "Онлайн оплата" и для данного типа доставки будет доступна только она) \*\*

{% hint style="warning" %}
\*при указании города, не обязательно для него указывать и страну и область, можно указать только город, данные поля работаю как самостоятельные настройки\
\*\*не указывайте все те же доставки, что указаны в [общих настройках](https://www.hostcms.ru/documentation/modules/shop/references/delivery/delivery-and-payment-systems-relations/)  доставки, указывайте только для ограничения для того или иного типа доставки
{% endhint %}

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-Mk8ZuSLlV7eTOQBoa2D%2F-Mk8_KP9X9twR_evWZVq%2Fimage.png?alt=media&amp;token=8af6f28a-b09c-46cb-a752-6794e477e9e2" alt="Настройки для ПВЗ, Наложенный платеж"></div>

* *см. Настройки для курьера*

#### Наложенный платеж (НП)

* **Формула** - используется для Почты России
* **Процент** - процент НП
* **Тип** - расчет НП от "суммы товары + доставка"/"только товары"/"только доставка"
* **Не включать стоимость доставки в оплату заказа** - отображает расчет цены доставки в корзине для информации, но при создании заказа сумма доставки не будет попадать
* **Налог** - НДС в процентах для доставки (входит в стоимость)


# DPD

{% embed url="<https://www.dpd.ru/>" %}

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-Mk8_h3dQ5_y5_utw-GK%2F-Mk8aAiMJOgewMW76r7E%2Fimage.png?alt=media&amp;token=59664099-f12d-47c4-96ba-7285432a4a0c" alt="Основные настройки, Настройка выгрузки в ЛК, Настройки товаров по умолчанию"></div>

* **ID города отправления** - внутренний идентификатор города DPD из которого происходит отправка, узнать можно [тут](https://market.morozovpimnev.ru/dpd/)
* **Ваш клиентский номер в системе DPD** - уникальный идентификатор "Клиента", можно скопировать в ЛК DPD (1)
* **Номер ключа для интеграции** - сгенерированные ключи доступа API, получить можно в ЛК DPD в разделе ["Получение ключа интеграции"](https://www.dpd.ru/ols/order/personal/integrationKey.do2)

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-Mk8_h3dQ5_y5_utw-GK%2F-Mk8jSvfFmXjss8hu-h7%2Fimage.png?alt=media&amp;token=a84ea38e-47ae-49e9-a568-f675ebf109c5" alt=""></div>

#### Настройка выгрузки в ЛК (личный кабинет DPD/ создание накладной)

* **Код терминала отправления** - уникальный идентификатор терминала DPD можно узнать [тут](https://market.morozovpimnev.ru/dpd/#dpdpvz), если вы сами довозите до терминала то укажите, если вы отдаёте от двери то оставьте пустым (от этого зависит расчет цены доставки и параметры отгрузки)
* **Контактное лицо, Контактный телефон** - контакты отправителя для указания в накладной отгрузки
* **Название страны, города, улицы, дома, офиса, квартиры забора** - адрес для указания в накладной отгрузки (если вы сами довозите до терминала то оставьте пустыми, если вы отдаёте от двери то укажите, при указании параметра "Код терминала отправления" - данные игнорируются)

#### Настройки товаров по умолчанию

* **Вес, Объем** - вес и объем (высчитывается из параметров ДШВ товара, если они есть) товара по умолчанию, если их нет у самого товара, то будут рассчитываться по указанным

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-Mk8lnVXMyuTTt4W7QIe%2F-Mk8m6FbU2CMwZhWS4-1%2Fimage.png?alt=media&amp;token=6bd9e9d7-6275-4bdd-bece-5d2cd5c97577" alt="Настройки для курьера"></div>

* **Активность** - активность типа доставки
* **+ к цене доставки** - указанная сумма прибавляется к исходной сумме доставки
* **+ % цены доставки** - процент прибавляется к исходной сумме доставки (высчитывается от суммы доставки)
* **Наценка от суммы заказа** - процент прибавляется к исходной сумме доставки (высчитывается от суммы заказа)
* **+ к начальной дате** - прибавляет указанное кол-во дней к исходному минимальному кол-ву дней доставки (например 1 день, если отгрузка происходит не в день заказа)
* **+ к конечной дате** - прибавляет указанное кол-во дней к исходному максимальному кол-ву дней доставки (например 1 день, если отгрузка происходит не в день заказа)
* **+ к весу заказа** - прибавляет дополнительный вес к исходному весу заказа для расчета (например 50гр для упаковки)
* **Страны, Области, Города (если пусто, то применяется ко всем)** - расчет доставки будет выводится только для указанных местоположений (**"НЕ"** - расчет доставки не выводится для указанных местоположений), если ничего не указывать, доставка рассчитывается для всех \* (например если в у Вас своя собственная доставка по городу и вы не хотите выводить сторонние ТК, укажите город и поставьте галочку "НЕ")
* **Платежные системы** - указания доступности оплат для типа доставки (например если в [общих настройках](https://www.hostcms.ru/documentation/modules/shop/references/delivery/delivery-and-payment-systems-relations/) для доставки выбраны "Наличные" и "Онлайн оплата", то можно указать Курьеру "Онлайн оплата" и для данного типа доставки будет доступна только она) \*\*
* **Тариф** - тарифы для расчета

{% hint style="warning" %}
\*при указании города, не обязательно для него указывать и страну и область, можно указать только город, данные поля работаю как самостоятельные настройки\
\*\*не указывайте все те же доставки, что указаны в [общих настройках](https://www.hostcms.ru/documentation/modules/shop/references/delivery/delivery-and-payment-systems-relations/)  доставки, указывайте только для ограничения для того или иного типа доставки
{% endhint %}

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-Mk8lnVXMyuTTt4W7QIe%2F-Mk8mOTQ8sGz6nopdFVJ%2Fimage.png?alt=media&amp;token=fbfa5105-7f33-4fd0-bcd5-bc726e376946" alt="Настройки для ПВЗ, Наложенный платеж"></div>

* *см. Настройки для курьера*

#### Наложенный платеж (НП)

* **Формула** - используется для Почты России
* **Процент** - процент НП
* **Тип** - расчет НП от "суммы товары + доставка"/"только товары"/"только доставка"
* **Не включать стоимость доставки в оплату заказа** - отображает расчет цены доставки в корзине для информации, но при создании заказа сумма доставки не будет попадать
* **Налог** - НДС в процентах для доставки (входит в стоимость)


# ПЭК

{% embed url="<https://pecom.ru>" %}

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FuVudgreR2sjotYpCStQB%2Fimage.png?alt=media&amp;token=3324efdc-56c3-4d0a-8d00-5e4931725c69" alt="Основные настройки, Настройка выгрузки в ЛК, Настройки товаров по умолчанию"></div>

* **Код города отправителя** - внутренний идентификатор города ПЭК из которого происходит отправка, узнать можно [тут](https://market.morozovpimnev.ru/pecom/)
* **Логин** - Ваш логин в ЛК ПЭК
* **API ключ** - сгенерированные ключи доступа API, получить можно в ЛК ПЭК в разделе ["Регистрационные данные"](https://kabinet.pecom.ru/profile) → "Ключи API"

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FcWBqmABbJBVkiIslEGIy%2Fimage.png?alt=media&amp;token=30b6fabe-4a90-4cb3-a9ce-d3527884664b" alt=""></div>

#### Настройка выгрузки в ЛК (личный кабинет ПЭК / создание накладной)

* **Город отправителя, Телефон отправителя, Контактное лицо отправителя** - контакты отправителя для указания в накладной отгрузки
* **Идентификатор склада** - внутренний ID склада отправления ПЭК, узнать можно [тут](https://market.morozovpimnev.ru/pecom/#warehouseId)

#### Настройки товаров по умолчанию

* **Вес, Длина, Ширина, Высота** - вес и габариты товара по умолчанию, если их нет у самого товара, то будут рассчитываться по указанным


# Деловые линии

{% embed url="<https://www.dellin.ru/>" %}

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FmYXm0qaytJuABHaRgzi0%2Fimage.png?alt=media&amp;token=f0bbc6ce-5f4d-42c0-af82-888782452dc8" alt=""><figcaption></figcaption></figure></div>

* **Ключ приложения** - Ключ приложения. Для получения ключа необходимо пройти регистрацию [тут](https://dev.dellin.ru/registration/)
* **КЛАДР города-отправителя** - код КЛАДР города отправления посылки
* **Логин/Пароль от Личного кабинета** - (необязательно) требуется для учета индивидуальных скидок

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2F5vp5flfSrBuaojoLl0Pp%2Fimage.png?alt=media&amp;token=886e808a-accc-495e-977a-b21361dc02da" alt=""><figcaption></figcaption></figure></div>

#### Настройка выгрузки в ЛК

* ID терминала отправки - код пункта приема

#### Настройки товаров по умолчанию

* **Вес, Объем** - вес и габариты товара по умолчанию, если их нет у самого товара, то будут рассчитываться по указанным

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FeIPJ1vrjNV0X9Dmtrugg%2Fimage.png?alt=media&amp;token=e6eee38a-7f81-45f2-af10-18f6b21bc2ee" alt=""><figcaption></figcaption></figure></div>


# Энергия

{% embed url="<https://nrg-tk.ru/>" %}

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FHzJVBMknsAUQDePh2Sda%2Fimage.png?alt=media&amp;token=b2ee8e74-a59c-40fa-bae4-d4b1c77284cc" alt=""><figcaption><p>Основные настройки, Настройка выгрузки в ЛК, Настройки товаров по умолчанию</p></figcaption></figure></div>

* **Код города отправителя** - внутренний идентификатор города Энергия из которого происходит отправка, узнать можно [тут](https://market.morozovpimnev.ru/nrgtk/)
* **API токен** - сгенерированные ключи доступа API, получить можно в ЛК Энергия в разделе ["Ключ разработчика"](https://clients.nrg-tk.ru/token)

#### Настройки товаров по умолчанию

* **Вес, Длина, Ширина, Высота** - вес и габариты товара по умолчанию, если их нет у самого товара, то будут рассчитываться по указанным

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FXxeoYfqGxMYOiOdVoZSP%2Fimage.png?alt=media&amp;token=f3baa3d8-a2a2-40b0-8c3e-6b31426c8742" alt=""><figcaption><p>Настройки для курьера</p></figcaption></figure></div>

* **Активность** - активность типа доставки
* **+ к цене доставки** - указанная сумма прибавляется к исходной сумме доставки
* **+ % цены доставки** - процент прибавляется к исходной сумме доставки (высчитывается от суммы доставки)
* **Наценка от суммы заказа** - процент прибавляется к исходной сумме доставки (высчитывается от суммы заказа)
* **+ к начальной дате** - прибавляет указанное кол-во дней к исходному минимальному кол-ву дней доставки (например 1 день, если отгрузка происходит не в день заказа)
* **+ к конечной дате** - прибавляет указанное кол-во дней к исходному максимальному кол-ву дней доставки (например 1 день, если отгрузка происходит не в день заказа)
* **+ к весу заказа** - прибавляет дополнительный вес к исходному весу заказа для расчета (например 50гр для упаковки)
* **Страны, Области, Города (если пусто, то применяется ко всем)** - расчет доставки будет выводится только для указанных местоположений (**"НЕ"** - расчет доставки не выводится для указанных местоположений), если ничего не указывать, доставка рассчитывается для всех \* (например если в у Вас своя собственная доставка по городу и вы не хотите выводить сторонние ТК, укажите город и поставьте галочку "НЕ")
* **Платежные системы** - указания доступности оплат для типа доставки (например если в [общих настройках](https://www.hostcms.ru/documentation/modules/shop/references/delivery/delivery-and-payment-systems-relations/) для доставки выбраны "Наличные" и "Онлайн оплата", то можно указать Курьеру "Онлайн оплата" и для данного типа доставки будет доступна только она) \*\*
* **Тариф** - тарифы для расчета


# Яндекс

{% embed url="<https://dostavka.yandex.ru/>" %}

{% hint style="danger" %}
ВНИМАНИЕ! Для работы и отображения ПВЗ требуется более 400Мб памяти на сервере иначе возможны проблемы в работе сайта
{% endhint %}

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FaLbQh1SrygNSaujmvu2r%2Fimage.png?alt=media&amp;token=63ebbdfe-09d7-45f6-b56f-50ab8cb38054" alt=""><figcaption></figcaption></figure></div>

* **API токен** - сгенерированные ключи доступа API, получить можно в ЛК Яндекс Доставки в [Профиль](https://dostavka.yandex.ru/account2/profile) (Токен для API нажмите Получить)
* **Адрес точки отправления для Express** - полный адрес откуда будет забор товара курьером для доставки по городу Express
* ID ПВЗ отправления для Доставки в др. город - идентификатор пункта забора для доставки в другие города, можно узнать у своего менеджера или найти [тут](https://market.morozovpimnev.ru/yandex/)

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FQ6bHubX1zcf4kHirALLO%2Fimage.png?alt=media&amp;token=e5877cf5-6ea8-45cd-916c-9572b183b2ff" alt=""><figcaption></figcaption></figure></div>

#### Настройки товаров по умолчанию

* **Вес, Длина, Ширина, Высота** - вес и габариты товара по умолчанию, если их нет у самого товара, то будут рассчитываться по указанным

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FuR3n6OoovsgcIdaMSgZM%2Fimage.png?alt=media&amp;token=f845beb0-dc81-452f-81e0-949a58e938c5" alt=""><figcaption></figcaption></figure></div>

* **Активность** - активность типа доставки
* **+ к цене доставки** - указанная сумма прибавляется к исходной сумме доставки
* **+ % цены доставки** - процент прибавляется к исходной сумме доставки (высчитывается от суммы доставки)
* **Наценка от суммы заказа** - процент прибавляется к исходной сумме доставки (высчитывается от суммы заказа)
* **+ к начальной дате** - прибавляет указанное кол-во дней к исходному минимальному кол-ву дней доставки (например 1 день, если отгрузка происходит не в день заказа)
* **+ к конечной дате** - прибавляет указанное кол-во дней к исходному максимальному кол-ву дней доставки (например 1 день, если отгрузка происходит не в день заказа)
* **+ к весу заказа** - прибавляет дополнительный вес к исходному весу заказа для расчета (например 50гр для упаковки)
* **Страны, Области, Города (если пусто, то применяется ко всем)** - расчет доставки будет выводится только для указанных местоположений (**"НЕ"** - расчет доставки не выводится для указанных местоположений), если ничего не указывать, доставка рассчитывается для всех¹ (например если в у Вас своя собственная доставка по городу и вы не хотите выводить сторонние ТК, укажите город и поставьте галочку "НЕ")
* **Платежные системы** - указания доступности оплат для типа доставки (например если в [общих настройках](https://www.hostcms.ru/documentation/modules/shop/references/delivery/delivery-and-payment-systems-relations/) для доставки выбраны "Наличные" и "Онлайн оплата", то можно указать Курьеру "Онлайн оплата" и для данного типа доставки будет доступна только она)²
* **Тариф** - тарифы для расчета³

{% hint style="warning" %}
¹при указании города, не обязательно для него указывать и страну и область, можно указать только город, данные поля работаю как самостоятельные настройки\
²не указывайте все те же платежные системы, что указаны в [общих настройках](https://www.hostcms.ru/documentation/modules/shop/references/delivery/delivery-and-payment-systems-relations/)  доставки, указывайте только для ограничения для того или иного типа доставки

³Для тарифа Express - такси по городу, должна быть включена настройка ["**Использовать полный поиск по адресу**"](/megapost/nastroika-megapost#vkladka-obshie) т.к. расчет идет по полному адресу
{% endhint %}


# Мой склад \[HostCMS]

​Вывод своих пунктов выдачи (собственных магазинов)

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2Fk7bw2Q6aU5wXAMhnwixO%2Fimage.png?alt=media&amp;token=3531e351-c7fc-48b7-a8a7-fab79934c530" alt=""></div>

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2F0Dq88gv07twcQL2AppWM%2Fimage.png?alt=media&amp;token=fd952a4c-b1fe-40ba-8556-cf54c427fa7e" alt="Основные настройки"></div>

* **Вид** - отображение пунктов в корзине, *Списком:* выводит как обычные доставки для курьера, *Карта:* все офисы отображаются на одной карте при выборе пункта "Самовывоз из пункта выдачи"
* **Объект** - *Доставка:* условия доставки (можно применять условия, например самовывоз с собственного склада только при заказе от 5000 руб.), *Склады:* Интернет-магазины - Склады
* **Дней доставки от/до** - мин. и макс. время когда можно получить заказ самовывозом

#### Пример заполнения "Список условий доставки" \*

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FboTCsQYWTaDSQMUUnkGk%2Fimage.png?alt=media&amp;token=2bc62ae6-88ad-44b9-9622-2ded617fcc97" alt="Список условий доставки"></div>

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2F1s2bEFdrvdtpZREtHm1j%2Fimage.png?alt=media&amp;token=e6d9fa82-8f73-45c4-97b3-0a8ef0e808a8" alt="Редактирование информации об условии доставки"></div>

{% hint style="info" %}
\*для вида **"Карта"**, координаты заполняются в поле **"Сроки доставки"** в виде *ШИРОТА,ДОЛГОТА* (через запятую), "Описание" заполняется в следующей последовательности, каждое с новой строки:

*Телефон*\
*Время работы*\
*Комментарий*&#x20;
{% endhint %}

#### Пример заполнения "Склады" \*\*

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FCAPLkAWGjndtgC4DHIAR%2Fimage.png?alt=media&amp;token=f26d5d6a-5772-4e49-bcfa-ff91160d8520" alt="Склады"></div>

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FT0eXAfBCJqua6eRrjFpp%2Fimage.png?alt=media&amp;token=90ce5329-a4f0-4633-bde7-43b88162bcf2" alt="Редактирование склада"></div>


# 5POST

{% embed url="<https://fivepost.ru/>" %}

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FGx9OiLDwkAGnNqFjfwRI%2Fimage.png?alt=media&amp;token=9033a31f-569f-452c-a269-14873c217974" alt=""><figcaption></figcaption></figure></div>

API ключ - приходит на почту указанную при регистрации в архиве, пароль от архива приходит в SMS на телефон указанный при регистрации

ID склада отгрузки - код вашег скада созданого в ЛК 5POST ["Мои склады"](https://fivepost.ru/partners-portal/warehouses)

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2F3J6I1RPdhL5kT7BTeeq4%2Fimage.png?alt=media&amp;token=0569846c-15aa-4836-8b76-8e33ddbfea48" alt=""><figcaption></figcaption></figure></div>


# ЖелДорЭкспедиция

{% embed url="<https://www.jde.ru/>" %}

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FtFKqvrlBXf8LllQCDU6x%2Fimage.png?alt=media&amp;token=b81686fe-8ad1-4569-9315-03638773ce6f" alt=""><figcaption></figcaption></figure></div>

* **Код города отправления** - идентификатор города отправителя, можно узнать у своего менеджера или найти [тут](https://market.morozovpimnev.ru/jde/)
* **User-id / API-ключ** - сгенерированные API ключи доступа, получить можно в ЛК ЖелДорЭкспедиция в [Настройки / API](https://i.jde.ru/cabinet/settings/)


# MegaPost условия

Перейдите в раздел **Контент** → **Интернет-магазины**. Выберите магазин, перейдите в список типов доставки **Справочники** → **Доставки** → **MegaPost Настройки** → **MegaPost условия** → **Добавить**

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-MjdUdtVPTRJNiTyaj6V%2F-MjdVTJWWJK63iUbqboe%2Fimage.png?alt=media&amp;token=e4163e84-4be7-493a-99ea-6d22f8b8b1ad" alt=""></div>

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-MjdUdtVPTRJNiTyaj6V%2F-MjdW6_3jHGa5IT0EscT%2Fimage.png?alt=media&amp;token=a1546745-894a-4737-93d3-3a9a8429c2e6" alt="Добавление информации об условии доставки"></div>

* **Название** - название условия доставки (любое)
* **Страна, Область, Город** - местоположение к которому применяется условие (**"НЕ"** - исключается)
* **Вес заказа от/до** - вес при котором условие будет выполняться
* **Цена заказа от/до** - сумма заказа при которой условие будет выполняться
* **Сумма доставки от/до** - сумма доставки при которой условие будет выполняться
* **Условие применяется для** - тип доставки для которого применятся условие "Курьерская доставка"/"Самовывоз (ПВЗ)"/"Для всех" *(к типу "Курьерская доставка" относится и "Внутренние отправления" Почты России)*
* **Тип цены** - расчет цены доставки при выполнении условия (Процент - прибавляемый процент к доставке от суммы доставки, Сумма - целое число прибавляемое к сумме доставки, Скидка - скидка на сумму доставки)
* **Цена доставки** - число для вычисления "типа цены"
* **Исходная цена** - отменяет настройки параметра "типа цены"
* Активно - активность условия
* **Не показывать расчёт** - при попадание под условие по текущим параметрам не будет выводить доставку (Например: для заказов весом выше 25кг)
* **Тариф** - применяемость условия под конкретный тариф (Например: тариф "4030" Почты России)
* **Оператор** - применяемость условия под конкретного оператора (для агрегаторов/сервисов доставки, которые объединяют в себе разные ТК)
* **Доставки для которых будет применяться условие (если пустое поле, то применяется для всех)** - доставки для условия
* **Платежные системы** - при указании платежных систем, при попадание под условие по текущим параметрам, будут выводится свои платежные системы


# Зависимые поля

Зависмие поля, это поля, котрые отображаются для обязательного заполнения, после выбора конкретной доставки (`div.delivery_filed`)

Поля настраиваются в элемент доставки при ее редактировании, выбор осуществляется поиском при вводе названия или названия поля в базе mysql, возможно добавления доп. свойств

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FhpyfvkZSYoocWIMqOskH%2Fimage.png?alt=media&amp;token=1ccb2ee6-a86c-4ce7-944d-f98aab6eb336" alt=""><figcaption><p>Редактирование доставки</p></figcaption></figure></div>

Зависмые поля попадают в XML данные доставки в тэг `<dependent_fields>`, вывод в XSL шаблоне можно посмотреть в исходнике шаблона **МагазинДоставки \[MEGAPOST]**

{% code lineNumbers="true" fullWidth="true" %}

```html
<shop_delivery id="123">
   ...
   <dependent_fields>
      <field>surname</field>
      <field>patronymic</field>
      <field>address</field>
      <field>house</field>
      <field>flat</field>
   </dependent_fields>
</shop_delivery>
```

{% endcode %}


# Тип платежной системы

В зависимости от типа оплаты, доступен различный функционал

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2F8U9vgevFy2B5AApLyBjY%2Fimage.png?alt=media&amp;token=8db826fa-9754-446a-87f3-955f6b688531" alt=""><figcaption><p>Справочник платежных систем</p></figcaption></figure></div>

При выборе в корзине оплаты с типом:

#### Наличные (тип 0)

Производится расчет наложенного платежа, в зависимости от [настроек выбранной доставки](https://support.morozovpimnev.ru/megapost/nastroika-megapost/sdek#nalozhennyi-platezh-np) и добавляется к сумме заказа

#### Счет (тип 3)

Происходит отображение блока (`div.payment_filed`) с полями для заполнения юр. данных (компания, инн, кпп), вывод в XSL шаблоне можно посмотреть в исходнике шаблона **МагазинПлатежнаяСистема \[MEGAPOST]**


# Карточка товара

### Вывод расчета доставок в карточке товара

На странице товара нужно вставить html код в любое место (см. код ниже), куда скрипт будет подгружать расчет доставки (где 123 - ID товара)

{% code title="МагазинТовар" lineNumbers="true" fullWidth="true" %}

```markup
<div class="boxLoaderDelivery" data-shopitemid="123"></div>
```

{% endcode %}

{% hint style="info" %}
XSL-шаблон доставок указывается в [Настройках MegaPost](https://support.morozovpimnev.ru/megapost/nastroika-megapost#vkladka-obshie) -> "**XSL шаблон доставок для товара**"
{% endhint %}


# Вывод карты ПВЗ

### Вывод карты ПВЗ на странице

На странице (например страница доставки) нужно вставить html код в любое место (см. код ниже), куда скрипт будет подгружать карту с ПВЗ (где 123 - ID вашего магазина)

{% code title="Страница доставки" lineNumbers="true" fullWidth="true" %}

```markup
<div class="boxLoaderPVZDelivery" data-shopid="123"></div>
```

{% endcode %}

{% hint style="info" %}
XSL-шаблон карты ПВЗ указывается в [Настройках MegaPost](https://support.morozovpimnev.ru/megapost/nastroika-megapost#vkladka-obshie) -> "**XSL шаблон вывода карты ПВЗ**"
{% endhint %}


# Выгрузка заказов в ЛК

У некоторых доставок реализована выгрузка заказов с сайта в личный кабинет транспортных компаний в ручном режиме.

Выгрузка происходи при изменении статуса заказа на тот, который указан в [Настройка MegaPost](/megapost/nastroika-megapost) параметр **"Статус для выгрузки заказа по API"** (если статус не указан, то выгрузка происходить не будет).

После успешной выгрузки\* должен вернуться трек номер, который сохраняется в дополнительное свойство заказа "Номер отправления", который вы можете уже использовать в своих целях (например вывести в XSL-шаблоне и делать отправку клиенту)

{% hint style="danger" %}
Все логи выгрузки записываются в **«Журнал событий»**\*, можно ознакомиться для анализа ошибок.\
*\*модуль доступен в редакции **HostCMS.Бизнес**, для младшей редакции смотрите файлы в директории **/hostcmsfiles/logs/(текущая дата).log.csv***
{% endhint %}

### Выгрузка заказа сразу после создания заказа

{% hint style="danger" %}
Это нестандартный функционал, хук приведен для примера и стандартно должен работать, если что то не работает, то произведите тестирования кода со своим администартором сайта
{% endhint %}

— в корне сайта в файле **bootstrap.php** разместите следующий код:

{% code lineNumbers="true" fullWidth="true" %}

```php
class My_Shop_Order_Observer
{
  static public function onAfterProcessOrder($object, $args)
  {
    $oShop_Order = $object->getShopOrder();
    $oShop_Order_Before = clone $oShop_Order;

    $oShop_Order->shop_order_status_id = 123; // статус из настроек megapost
    $oShop_Order->save();
    
    $handler = Shop_Payment_System_Handler::factory($oShop_Order->Shop_Payment_System);
    $handler->shopOrderBeforeAction($oShop_Order_Before)->shopOrder($oShop_Order);
    
    MegaPost_Observer::onBeforeChangedOrder($handler, array('edit'));
  }
}

Core_Event::attach('Shop_Payment_System_Handler.onAfterProcessOrder', array('My_Shop_Order_Observer', 'onAfterProcessOrder'));
```

{% endcode %}


# Изменение названий тарифов

Посмотреть все названия можно в файле */modules/megapost/i18n/ru.php*, для их изменения можно воспользоваться стандартной [интернационализацией](https://www.hostcms.ru/documentation/modules/additional/i18n/) HostCMS (Расширение языковых файлов для модулей), в корне сайта в файле **bootstrap.php** разместите следующий код:

{% code title="bootstrap.php" lineNumbers="true" fullWidth="true" %}

```php
/* 
 * в файле ru.php было
 * 'pochta_tariff_0_4030' => "Посылка нестандартная"
 * 'pochta_tariff_0_23030' => "Посылка онлайн обыкновенная"
 */
 
Core_I18n::instance()->expandLng('megapost',
	array(
		'pochta_tariff_0_4030' => 'Посылка обычная',
		'pochta_tariff_0_23030' =>  'Посылка онлайн',
	)
);
```

{% endcode %}


# Город для расчета

Если вы все сделали как в [Настройки макета](/megapost/nastroiki-maketa) и указали код **MegaPost\_GeoIp::getCountryLocationCity()**, то при первом заходе в сессию (ASMP\_City) посетителя сохраняется вся информацию по его местоположению для дальнейшего расчета доставок, при любом изменении города сессия перезаписывается

{% code lineNumbers="true" fullWidth="true" %}

```php
print_r($_SESSION['ASMP_City']);

/*
Array
(
    [ip] => 192.168.0.1
    [city] => Екатеринбург
    [region] => Свердловская область
    [country_iso] => RU
    [country] => Россия
    [shop_country_id] => 175
    [shop_country_location_id] => 55
    [region_id] => 66
    [region_kladr] => 6600000000000
    [shop_country_location_city_id] => 1888
    [postcode] => 620033
    [kladr] => 6600000100000
)
*/
```

{% endcode %}

Если вы хотите подставить свой город, то можно сделать следующее, после вызова **MegaPost\_GeoIp::getCountryLocationCity()**, разместите следующий код

{% tabs %}
{% tab title="из справочника HostCMS" %}
{% code lineNumbers="true" fullWidth="true" %}

```php
if(!isset($_SESSION['ASMP_City']))
{
    $oShop_Country_Location_City = Core_Entity::factory('Shop_Country_Location_City', 123); // где 123 - ID города
    $_SESSION['ASMP_City'] = MegaPost_GeoIp::makeCity($oShop_Country_Location_City);
}

MegaPost_GeoIp::getCountryLocationCity();
```

{% endcode %}
{% endtab %}

{% tab title="любой другой город" %}
{% code lineNumbers="true" fullWidth="true" %}

```php
if(!isset($_SESSION['ASMP_City']))
{
    $aReturn = array(
        'city' => 'Екатеринбург',
        'region' => 'Свердловская область',
        'country' => 'Россия',
        'country_iso' => 'RU',
        'kladr' => 6600000100000,
        'region_kladr' => 6600000000000,
        'region_id' => 66,
    );
    
    $_SESSION['ASMP_City'] = $aReturn;
}

MegaPost_GeoIp::getCountryLocationCity();
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Добавление доставки

### Добавление типа доставки (по формуле)

Обновите модуль до последней доступной версии ([как обновить](/megapost/obnovlenie-modulya))

Перейдите в раздел  (:house: **Домой** / **Интернет-магазины** / **Демонстрационный магазин**\* / **Типы доставки**) и нажмите **«Добавить»** (1)

{% hint style="warning" %}
\*у Вас может быть свое название магазина
{% endhint %}

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-MjcwvxieIUxgRJUqnwx%2F-MjcxfrMFYXKMcbrV8-6%2Fimage.png?alt=media&amp;token=d0354d8f-ece3-447b-9b79-4e913c0bb3df" alt="Типы доставки"></div>

Заполните нужные поля, выберите **"По формуле"** и в поле **"Код обработчика"** код\*, нажмите **"Сохранить" \*\***

{% hint style="success" %}
**\***&#x41A;од обработчика для конкретной доставки и конкретной версии можно получить по ссылке <https://asmp.su/bn>
{% endhint %}

{% hint style="danger" %}
**\*\*Внимание не забудьте поменять в коде у Shop\_Delivery\_Handler ID на правильные**\
— Обработчик доставки представляет собой класс, унаследованный от **Shop\_Delivery\_Handler**, имя класса зависит от идентификатора доставки по схеме **Shop\_Delivery\_Handler{ID}**
{% endhint %}

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-MjcxuTcGsfkwLPfb6mO%2F-MjcyTPJUSIOWmismy3B%2Fimage.png?alt=media&amp;token=61b25cef-c2fc-44af-bd32-406cbe06aadc" alt=""></div>

Перейдите в [«MegaPost настройки»](/megapost/nastroika-megapost) и в новой вкладке доставки, настройте параметры


# Шаблон карточки заказа

Свой шаблон с данными из MegaPost можно настроить следующим образом

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FZKSqP6ssS7hb7hHNgNzz%2Fimage.png?alt=media&amp;token=ddc271de-afc6-47e5-ad74-8427cf33aa19" alt=""><figcaption></figcaption></figure></div>

Создайте константу `SHOP_ORDER_CARD_XSL`, внесите в нее название XSL-шаблона "МагазинКарточкаЗаказа \[MEGAPOST] \[ДАТА\_ШАБЛОНА]"

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FsFkhG4x0XSNen1JdwJv8%2Fimage.png?alt=media&amp;token=a5df0f4a-7d82-41ed-9b6a-0700dd5dc15a" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}
Все примеры **XSL-шаблонов** находятся в одноименных папках, под названием **"megapost"** соответсвующего раздела
{% endhint %}


# MegaPost\_Command\_Controller

Все ajax запросы идут через командер MegaPost\_Command\_Controller

* **getCity** - Список городов
* **setCity** - Сохранение выбранного города в сессии
* **cartOneStep** - Показ корзины/пересчет корзины
* **deliveryOneStep** - Показ списка доставок
* **paymentSystemOneStep** - Показ списка оплат
* **deliveryCalculate/deliveryPVZCalculate** - Калькулятор доставки на странице товара и показ карты на отдельной странице

Если вы хотите изменить/заменить его, то в [настрйоках JS](https://support.morozovpimnev.ru/megapost/pages/mXnQ4DBffGA3IvxheBNV#nastroiki-v-js-megapost-scriptxxxx.js) в параметре `callback` указываете свой путь и в `bootstrap.php` размещаете свой обработчик **route**

{% code lineNumbers="true" fullWidth="true" %}

```php
Core_Router::add('megapost/callback', '/megapost/mycallback/')
    ->controller('MegaPost_Command_MyController');
```

{% endcode %}

Создайте файл `/modules/megapost/command/mycontroller.php` с class `MegaPost_Command_MyController` и внесите нужные изменения


# Работа с Яндекс картой (ymaps)

Получить доступ к методам карты **ymaps** можно следующим образом:

{% code lineNumbers="true" fullWidth="true" %}

```javascript
setTimeout(
    function(){
        var mymaps = MegaPostClient.Init.jMblock.data('megapost').getMap(); // возвращает ymaps, если карта была создана, иначе будет ошибка 
        mymaps.map.behaviors.disable('scrollZoom'); // например, отключаем скролл карт
}, 1000);
```

{% endcode %}

{% hint style="info" %}
данный код лучше использовать в файле /hostcmsfiles/megapost/js/megapost-script9999.js (9999 - Ваш уникальный номер файла при установке), в блоке функции **getMblock**
{% endhint %}

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FYx924vTUJiftoacOp7AT%2Fimage.png?alt=media&amp;token=90171368-6cb4-4111-a8a1-3da7fd731aa3" alt=""></div>


# Core\_Http

https\://www\.hostcms.ru/api7/classes/Core-Http-Curl.html

Модуль использует стандартный функционал HostCMS Core\_Http Curl для запросов к API сервисов

Иногда необходимо внести некоторые настройки в curlcache options, когда сервис не отвечает и отдает статуст 0

в файл `/modules/core/config/http.php` в curlcache нужно в массив options нужно внести следующее:

{% code fullWidth="true" %}

```php
CURLOPT_VERBOSE => TRUE,
CURLOPT_SSL_VERIFYHOST => FALSE,
CURLOPT_SSL_VERIFYPEER => FALSE,
```

{% endcode %}


# Content Security Policy

Для работы яндекс карты и других ее плагинов в ЦА в файл `/modules/core/config/config.php` нужно внести следующее:

{% code overflow="wrap" fullWidth="true" %}

```php
'backendContentSecurityPolicy' => "default-src 'self' www.hostcms.ru www.youtube.com youtube.com api-maps.yandex.ru; script-src 'self' 'unsafe-inline' 'unsafe-eval' blob: *.cloudflare.com *.kaspersky-labs.com api-maps.yandex.ru suggest-maps.yandex.ru *.maps.yandex.net yandex.ru yastatic.net; img-src 'self' chart.googleapis.com data: blob: www.hostcms.ru api-maps.yandex.ru *.maps.yandex.net yandex.ru; font-src 'self'; connect-src 'self' blob: api-maps.yandex.ru suggest-maps.yandex.ru *.maps.yandex.net yandex.ru *.taxi.yandex.net; style-src 'self' 'unsafe-inline' blob:; frame-src 'self' www.hostcms.ru api-maps.yandex.ru; child-src 'self' www.hostcms.ru api-maps.yandex.ru",
```

{% endcode %}

Если у вас уже там существуют свои настройки, то ниже приведен отдельный список настроек для [Яндекс](https://yandex.ru/dev/jsapi-v2-1/doc/ru/v2-1/dg/concepts/load#using-csp)

В таблице ниже приведены правила, которые необходимо добавить в политику приложения для работы c API. Правила перечисляются отдельно для каждой директивы. Обратите внимание на многоточия в примерах — это означает, что правила, необходимые для работы с API, приведены без учета других правил, которые разработчик может задать для своего приложения. Если для какой-либо директивы в политике будет разрешена загрузка из любых источников (например, 'img-src \*;'), то для этой директивы соответствующие правила API можно не задавать.

<table data-header-hidden><thead><tr><th width="159.5999755859375">Директива</th><th>Правила, которые требуется добавить в директиву</th></tr></thead><tbody><tr><td><code>img-src</code></td><td><p>Для директивы <code>img-src</code> в список разрешенных источников необходимо добавить домены:</p><ul><li><code>https://*.maps.yandex.net</code> (для загрузки тайлов);</li><li><code>api-maps.yandex.ru</code> (для загрузки курсоров и т. п.);</li><li><code>enterprise.api-maps.yandex.ru</code> (для загрузки курсоров в платной версии API);</li><li><code>https://yandex.ru</code>.</li></ul><p>С этих доменов будут загружаться изображения API. Кроме того, некоторые изображения API вставляются через data:URL, поэтому в директиве <code>img-src</code> также необходимо указать протокол <strong>data:</strong>.</p><pre><code>img-src data: https://*.maps.yandex.net api-maps.yandex.ru ...;
</code></pre></td></tr><tr><td><code>frame-src</code></td><td><p>В директиве <code>frame-src</code> должены быть разрешены домены</p><ul><li><code>https://api-maps.yandex.ru</code></li><li><code>https://enterprise.api-maps.yandex.ru</code> (для платной версии API)</li></ul><p>С этих доменов будут загружаться компоненты API, которые размещаются во фреймах (например, блок «Открыть в Яндекс Картах»):</p><pre><code>frame-src https://api-maps.yandex.ru ...;
frame-src https://enterprise.api-maps.yandex.ru ...;
</code></pre><p>Примечание</p><p>Директива <code>frame-src</code> используется в CSP версии 1.0; в версии 2.0 эта директива заменена на <code>child-src</code>. Однако некоторые браузеры еще не поддерживают CSP 2.0, поэтому для обеспечения кроссбраузерной совместимости в политике рекомендуется указывать обе эти директивы:</p><pre><code>frame-src https://api-maps.yandex.ru ...;
child-src https://api-maps.yandex.ru ...;
frame-src https://enterprise.api-maps.yandex.ru ...;
child-src https://enterprise.api-maps.yandex.ru ...;
</code></pre></td></tr><tr><td><code>script-src</code></td><td><p>В директиве <code>script-src</code> нужно добавить следующие домены:</p><ul><li><code>https://api-maps.yandex.ru</code></li><li><code>https://enterprise.api-maps.yandex.ru</code> (для платной версии API)</li><li><code>https://suggest-maps.yandex.ru</code></li><li><code>https://*.maps.yandex.net</code></li><li><code>https://yandex.ru</code></li><li><code>https://yastatic.net</code></li></ul><p>С этих доменов будут загружаться модули API. Кроме того, для работы с шаблонами в директиве <code>script-src</code> рекомендуется включить поддержку 'unsafe-eval’ (это необходимо для работы условных операторов).</p><pre><code>script-src 'unsafe-eval' https://api-maps.yandex.ru
 https://suggest-maps.yandex.ru https://*.maps.yandex.net
 https://yandex.ru ...;
</code></pre></td></tr><tr><td><code>connect-src</code></td><td><p>Для директивы <code>connect-src</code> следует разрешить домены:</p><ul><li><code>https://api-maps.yandex.ru</code></li><li><code>https://enterprise.api-maps.yandex.ru</code> (для платной версии API)</li><li><code>https://suggest-maps.yandex.ru</code></li><li><code>https://*.maps.yandex.net</code></li><li><code>https://yandex.ru</code></li><li><code>https://*.taxi.yandex.net</code></li></ul><pre><code>connect-src https://api-maps.yandex.ru
 https://suggest-maps.yandex.ru https://*.maps.yandex.net
 https://yandex.ru ...;
</code></pre></td></tr><tr><td><code>style-src</code></td><td><p>Для загрузки стилей API в директиве <code>style-src</code> необходимо указать протокол <strong>blob:</strong>.</p><pre><code>style-src: blob: ...;
</code></pre><p>API будет подключать стили на страницу через элемент &#x3C;\link>, содержащий blob URL нужного стиля. Если в приложении использование blob невозможно, то для корректной работы с API в директиве <code>style-src</code> можно указать nonce-значение, сгенерированное на стороне клиента. В этом случае API будет подключать стили через inline-элемент &#x3C;\style nonce="...">.</p><pre><code>style-src 'nonce-&#x3C;токен>' ...;
</code></pre><p>Это же значение следует передать в параметре <code>csp</code> при подключении API:</p><p>Для бесплатной версии API:</p><pre><code>https://api-maps.yandex.ru/2.1/?apikey=&#x3C;API-ключ>&#x26;lang=ru_RU&#x26;csp[style_nonce]=&#x3C;токен>
</code></pre><p>Для платной версии API:</p><pre><code>https://enterprise.api-maps.yandex.ru/2.1/?apikey=&#x3C;API-ключ>&#x26;lang=ru_RU&#x26;csp[style_nonce]=&#x3C;токен>
</code></pre><p>Следует иметь в виду, что атрибут <code>nonce</code> реализован в CSP 2.0 и не поддерживается в версии 1.0. Однако в некоторых браузерах еще не включена поддержка CSP 2.0, поэтому для обеспечения кроссбраузерной совместимости в <code>style-src</code> рекомендуется использовать протокол blob:.</p></td></tr></tbody></table>

Если для какого-либо ресурса API политика определена неправильно, то карта (либо ее объекты) будут отображаться некорректно. При этом API не отслеживает, для каких ресурсов политика задана неверно. Чтобы получить информацию о том, какие ресурсы карты не могут быть загружены, можно воспользоваться директивой [report-uri](https://developer.mozilla.org/en-US/docs/Web/Security/CSP/CSP_policy_directives#report-uri).

Ниже приведен пример политики, в которой определены правила для работы с API, а также другие правила приложения:

{% code fullWidth="true" %}

```
Content-Security-Policy:
  img-src data: https://*.maps.yandex.net https://api-maps.yandex.ru https://yandex.ru 'self';
  child-src https://api-maps.yandex.ru;
  frame-src https://api-maps.yandex.ru;
  script-src https://api-maps.yandex.ru https://suggest-maps.yandex.ru http://*.maps.yandex.net https://yandex.ru https://yastatic.net 'self';
  connect-src https://api-maps.yandex.ru https://suggest-maps.yandex.ru https://*.maps.yandex.net https://yandex.ru https://*.taxi.yandex.net;
  style-src blob:;
```

{% endcode %}


# Обновление модуля

* Перейдите в раздел "Обслуживание" → **"Обновления"**
* Установите поочередно обновления **"MegaPost"** до последней версии\*
* В Ваших текущих используемых XSL-шаблонах, ТДС, css/js проверить недостающие новые изменения и добавить если такие имеются (если после обновления все работает, то можно пропустить этот шаг)
* Перейдите в раздел  (:house: **Домой** / **Интернет-магазины** / **Демонстрационный магазин**\*\* / **Типы доставки**) из последней копии по дате обработчиков доставки (2) скопируйте **"Код обработчика"** и замените его в текущем используемой обработчике доставки (1)\*\*\*, после чего удалите копии (3)
* Использование нового js скрипта модуля если у вас был подключен */hostcmsfiles/megapost/js/megapost-script9999.js* (где **9999** уникальный номер файла при установке, посмотреть можно в папке */hostcmsfiles/megapost/\*/*), то подключить нужно самый последний созданный по дате скрипт с другим уникальный номером (если после обновления все работает, то можно пропустить этот шаг)
* Проверить [«MegaPost настройки»](/megapost/nastroika-megapost), пересохраните (при необходимости внесите их снова)

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-MjchnX0rTRAcgUKH9dK%2F-Mjck2FVBMbXJUi9DB3H%2Fimage.png?alt=media&amp;token=2933d18d-047f-408b-9539-9d1def85fee3" alt="Копии обработчиков доставки после обновления"></div>

{% hint style="warning" %}
\*При обновлении/удалении текущие используемые XSL-шаблоны, ТДС, css/js и обработчики доставки не заменяются/удаляются, а создаются как новые (копии) с текущей датой (например: МагазинДоставки \[MEGAPOST] \[05.06.2020 13:00:24] / СДЭК \[05.06.2020 13:00:24]) для каждой установленной версии\
\*\*у Вас может быть свое название магазина
{% endhint %}

{% hint style="danger" %}
**\*\*\* Внимание не забудьте поменять в коде у Shop\_Delivery\_Handler ID на правильные (1)**\
— Обработчик доставки представляет собой класс, унаследованный от **Shop\_Delivery\_Handler**, имя класса зависит от идентификатора доставки по схеме **Shop\_Delivery\_Handler{ID}**
{% endhint %}

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-MjchnX0rTRAcgUKH9dK%2F-Mjcl-ON8nDs-qdF1VWT%2Fimage.png?alt=media&amp;token=c5e0b34b-8d8e-4d9d-8ee8-942c1a4dfeb5" alt="Код обработчика доставки по формуле"></div>

{% hint style="danger" %}
**ВНИМАНИЕ!** После обновления, не оставляйте копии обработчиков доставки, удаляйте их!
{% endhint %}


# Отладка

{% hint style="danger" %}

### Внимание! Отладкой должен заниматься Ваш технический специалист.

{% endhint %}

### Расчет доставки

Авторизуйтесь в ЦА сайта, откройте в браузере **"Консоль JavaScript"** **Ctrl + Shift + J** (для Яндекс.Браузера/Chrome) и перейдите в корзину, дождитесь расчета, после чего Вы увидите данные отправленных и пришедших запросов

{% hint style="info" %}
Для вывода данных в Настройках MegaPost должен быть включен параметр ["Выводить логи в консоль браузера"](/megapost/nastroika-megapost#pvz-obshie-nastroiki-elementa)
{% endhint %}

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FRy2w865GP9CGRbKHtNtY%2Fimage.png?alt=media&amp;token=d3fade3c-8339-4c72-a1c1-6e3340b79bc1" alt=""><figcaption></figcaption></figure></div>

Кажада доставка подписана и все запросы/ответы разворачиваются\
request - это запрос для расчета\
response - это ответ, если он 200-202 и нет ошибок, занчит все хорошо

так же в конце выводится общее время расчета каждой доставки (например 1.033 с.)

### Выгрузка заказа

Чтобы посмотреть запросы при выгрузке

{% tabs %}
{% tab title="Модуль "История изменений"" %}
Если стоит наш модуль ["История изменений"](https://asmp.su/changelog) то все намного проще, рекомендуем его ставить

После выгрузки заказа, в самом заказе, перейдите на вкладку "Журнал изменений" там будут все запросы/ответы по API к транспортной компании

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FxGAnyVJKY4EpP8ct6Gtk%2Fimage.png?alt=media&amp;token=e619cb68-c287-4bce-82fb-6b0c253c6a80" alt=""><figcaption></figcaption></figure></div>
{% endtab %}

{% tab title="Модуль "Журнал событий"" %}
Есил у вас редакция HostCMS.Бизнес и выше

Перйдите в модуль  **Система** →  ["Журнал событий"](https://www.hostcms.ru/documentation/modules/eventlog/) найдите логи связанные с Вашим заказом

обычно они выглядят следующим образом: `[513][cdek][request] ...`\
где 513 - это номер заказа

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FJlkXKcjP2LK4KeDaDsRs%2Fimage.png?alt=media&amp;token=a6520f96-02c4-48ad-94cd-a623adf8254d" alt=""><figcaption></figcaption></figure></div>
{% endtab %}

{% tab title="log.csv" %}
Если у вас редакция HostCMS.Малый Бизнес и ниже

Логи хранятся в файлах в директории **/hostcmsfiles/logs/(текущая дата).log.csv**

Откройте файл и найдите логи связанные с Вашим заказом

обычно они выглядят следующим образом: `[513][cdek][request] ...`\
где 513 - это номер заказа
{% endtab %}
{% endtabs %}


# Возможные ошибки

### 1. Ошибка при нажатии на "MegaPost Настройки"

— Удалите все копии/ненужные доставки в корзину, оставьте только те которые используете

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-MjhAK723J_WCdtmkeju%2F-MjhBBa0ihJ6xo0DrvQm%2Fimage.png?alt=media&amp;token=95ea9650-0226-4610-ba84-f5702cab8e87" alt=""></div>

### 2. Дублирование названия доставки в заказе

— в корне сайта в файле **bootstrap.php** разместите следующий код:

{% code title="bootstrap.php" lineNumbers="true" fullWidth="true" %}

```php
Core_I18n::instance()->expandLng('shop_delivery',
	array(
		'delivery_with_condition' => 'Доставка "%1$s"'
	)
);
```

{% endcode %}

### 3. Не работают условия по городам

— Перейдите в раздел  (:house: **Домой** / **Интернет-магазины** / **Справочник стран**), найдите нужный город и убедитесь что у него заполнено поле КЛАДР (если не заполнен - заполните его, при вводе названия города, реализованы выпадающие подсказки уже с КЛАДР и индексом, при нажатии автоматом заполняют нужные поля)

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-Mkkq_A-zmXQryW25BSL%2F-MkkqvnE0QjVZ2qwV_b8%2Fimage.png?alt=media&amp;token=19c6e599-f8ed-4890-b2fe-bbde18463c96" alt=""></div>

### 4. Query error 42S22: SQLSTATE\[42S22]: Column not found: 1054 Unknown column 'megapost\_conditions.min\_weight' in 'where clause'.

выполните SQL запрос:

{% code lineNumbers="true" fullWidth="true" %}

```sql
ALTER TABLE `megapost_conditions` ADD `max_weight` DECIMAL(14,2) NOT NULL DEFAULT '0.00' AFTER `name`;
ALTER TABLE `megapost_conditions` ADD `min_weight` DECIMAL(14,2) NOT NULL DEFAULT '0.00' AFTER `max_weight`;
ALTER TABLE `megapost_conditions` ADD `price_initial` TINYINT(1) NOT NULL DEFAULT '0' AFTER `price`;
ALTER TABLE `megapost_conditions` ADD `max_delivery_price` DECIMAL(14,2) NOT NULL DEFAULT '0.00' AFTER `min_price`;
ALTER TABLE `megapost_conditions` ADD `min_delivery_price` DECIMAL(14,2) NOT NULL DEFAULT '0.00' AFTER `max_delivery_price`;
ALTER TABLE `megapost_conditions` ADD `option` TINYINT(1) NOT NULL DEFAULT '0' AFTER `min_delivery_price`;
ALTER TABLE `megapost_conditions` ADD `tariff` MEDIUMTEXT NULL DEFAULT NULL AFTER `type`;
ALTER TABLE `megapost_conditions` ADD `operator` MEDIUMTEXT NULL DEFAULT NULL AFTER `tariff`;
```

{% endcode %}

### 5. Ошибка при нажатии на "MegaPost условия"

— В разделе "Модули" выкл и вкл. снова модуль MegaPost

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2F2ukQbn2DkfXhomXYPyZ4%2Fimage.png?alt=media&amp;token=2394167b-d204-4194-9506-a3c50586fc7f" alt=""></div>

### 6. Почты России: ошибка 406 /1.0/unloading-passport/

Обратиться к Вашему менеджеру ПР, указать ошибку и попросить перезагрузить API с их стороны (т.к. ваш ЛК работает со старой версией API), а так же попросить увеличить лимиты

### 6.1. Почта России: ошибка 400

Ошибка расчета: неверное значение параметра при расчете.\
Нужно смотреть ответ от Почты, в нем будет конкретная ошибка

### 7. Почта России: не совпадают расчеты на сайте и в ЛК ПР

Перейдите в официальный тарификатор Почты России <https://tariff.pochta.ru/> выберите нужный тариф и введите параметры, чтобы у Вас получился нужный расчет, потом перенесите эти же параметры в [настройки MegaPost](/megapost/nastroika-megapost/pochta-rossii)

### 8. Boxberry: Неверный код пункта приема.

В ЛК Boxberry "Мой профиль" → ["Информация о магазине"](https://account.boxberry.ru/client/profile/index?tab=store-info) заполните "Пункт приема"

### 9. Не работает расчет для Москвы и Санкт-Петербурга

Если в расчете задействованы стандартные справочники регионов и городов HostCMS, то обычно Москва и Санкт-Петербург лежат в регионах с кодом региона 50 и 47 соответсвтенно

— создайте для них отдельные регионы с кодом региона 77 и 78 и перенесите города (получится что город Москва теперь будет в регине Москва)

{% code overflow="wrap" fullWidth="true" %}

```sql
// для быстрого массового переноса городов у которых кладр начинается на 77 в новый регион, где 999 - новый ID региона, а 111 - старый ID региона
UPDATE shop_country_location_cities SET shop_country_location_id = 999 WHERE shop_country_location_id = 111 AND kladr LIKE "77%"
```

{% endcode %}

### 10. Ошибка при открытии настроек MegaPost. Exception: property\_exists(): Argument #1 ($object\_or\_class) must be of type object|string, null given

<figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FakaVErnmspjy7NLKfmrE%2Fimage.png?alt=media&amp;token=07496752-0d17-4753-83e9-1ca4a0b4403e" alt=""><figcaption></figcaption></figure>

**В коде у какого-то обработчика Shop\_Delivery\_Handler ID не правильный** класс, унаследованный от **Shop\_Delivery\_Handler**, имя класса зависит от идентификатора доставки по схеме **Shop\_Delivery\_Handler{ID}**

### 11. checkMemoryLimit: There are not enough 195212512 bytes of memory to read the file!

Текущей памяти на сервере не достаточно и нужно увеличить лимит памяти `memory_limit`,  через `php.ini` или `.htaccess` (уточните у своего хостинг провайдера)

### 12. Ошибка "Доступ к модулю "megapost" запрещен

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FOBxzYbz4OcqRboWwiU8D%2Fimage.png?alt=media&amp;token=49e9f560-4971-4441-aa53-9553fb9dda9d" alt=""><figcaption></figcaption></figure></div>

Ошибка говорит о том, что у пользователя нет прав доступа к модулю и его действиям

Подробнее тут: [Политика безопасности и права доступа](https://www.hostcms.ru/documentation/modules/company/security/)

1. Нужно включить разрешение к модулю "megapost" в Права доступа к модулям
2. Нужно включить разрешение на действия в форме ID=75 (Оформленные заказы) "megapost" в **Права доступа к действиям формам**


# RetailCRM

инструкция для v5.3 и HostCMS v7.1.4

Купить модуль 👉 <https://asmp.su/_retailcrm>

<div align="left"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-Mj-oVuJinWuJ-X3MkWZ%2F-Mj-p_nk6SIES7xuv3JD%2FRetailCRM_horiz.svg?alt=media&amp;token=4f2adbd1-1b81-4ebe-bcd2-bb59cb0b61ec" alt=""></div>


# Создание ключа доступа к API

В аккаунте **RetailCRM** перейдите в раздел **«Настройки»** → **«Интеграция»** → **«Ключи доступа к API»** и нажмите **«Добавить»**

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-Mj-uCiHrn14tN7dwMOk%2F-Mj-vkX4-zp6E_cmMnk_%2Fimage.png?alt=media&amp;token=af85f8eb-cb20-4c56-9406-5d1f560a5b63" alt="Новый ключ API"></div>

* ***Ключ** - это Ваш ApiKey*
* ***Активность** - включено*
* ***Комментарий** - любой текст*
* ***Тип доступа** - подойдет любой вариант*
* ***Разрешенные методы API** - включить все галочки*


# Установка модуля

*Перед установкой купите модуль (*[*инструкция*](/#pokupka-modulya)*)*

{% hint style="danger" %}
Для дальнейших действий нужны минимальные знания работы с **типовыми динамическими страницами (далее - ТДС)** в HostCMS. Работу должен выполнять Ваш программист или администратор сайта.
{% endhint %}

#### Шаг 1

В центре администрирования (далее ЦА) сайта переходим в раздел **«Магазин приложений»** (1) и в поле поиска вводим название модуля (2), нажимаем искать (3) или "Enter", на нужном модуле кликаем на кнопку **«Установить»** (4)

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-Mj-jHku50yQx-mrS4O6%2F-Mj-lkTNboQXSJDOLy5Q%2Fimage.png?alt=media&amp;token=d97f38fc-a200-4b3e-8e92-676b2ae7edc9" alt="Магазин приложений"></div>

#### Шаг 2

В параметрах установки модуля вводим параметры и кликаем на **«Установить»**

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-Mj-pp2Ym-7EYsTwN0rZ%2F-Mj-qv8qnkLzYHw6ZjvQ%2Fimage.png?alt=media&amp;token=90a8c0d1-9b68-45a6-a4aa-2ecc202ab036" alt="Параметры установки &#x22;retailCRM&#x22;"></div>

* ***Адрес своего аккаунта в retailCRM субдомен** - если ссылка на личный кабинет в RetailCRM у вас <https://demo.retailcrm.ru/>, то субдомен будет и нужно ввести в настройки - «demo» (без .retailcrm.ru)*
* ***ApiKey** - ключ доступа можно создать или получить в RetailCRM в разделе «Настройки» → «Интеграция» → «Ключи доступа к API» (см.* [Создание ключа доступа к API](/retailcrm/sozdanie-klyucha-dostupa-k-api)*)*


# Добавление магазина

#### Шаг 1

В ЦА сайта переходим в раздел **Экспорт/Импорт → retailCRM → Добавить** (1)

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-Mj0LuFpwWwoLueN5bVC%2F-Mj0MM4yGfklWaUsusen%2Fimage.png?alt=media&amp;token=c9cc6f9e-69f5-4061-a048-e3988da37f82" alt=""></div>

#### Шаг 2

В созданном магазине заполните поля нужными данными

### Вкладка «Основные»

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2F8AaDZ8PTNndCn9hSW0zD%2Fimage.png?alt=media&amp;token=db4797b1-5c47-46c9-b4e4-3c3ae5822762" alt=""><figcaption></figcaption></figure></div>

* ***Объект данных** - интернет-магазин из которого выгружать заказы в RetailCRM*&#x20;
* ***Магазин в RetailCRM** - магазин RetailCRM в который выгружать заказы с сайта*&#x20;
* *Обновление заказов - имеет 4 варианта: Не обновлять - при обновлении заказов в HostCMS/RetailCRM, обновленные данные не будут передаваться в HostCMS/RetailCRM; Обновлять из HostCMS - при обновлении заказов в HostCMS, обновленные данные будут передаваться в RetailCRM; Обновлять из retailCRM - при обновлении заказов в RetailCRM, обновленные данные будут передаваться в HostCMS (нужно настроить* [*триггер*](/retailcrm/nastroika-triggera-dlya-sozdaniya-obnovleniya-zakazov-iz-retailcrm-v-hostcms) *`isUpdate`); Двухсторонний обмен - при обновлении заказов в HostCMS/RetailCRM, обновленные данные будут передаваться в HostCMS/RetailCRM (нужно настроить триггер см. стр. 9);*&#x20;
* ***Склад в RetailCRM*** - *Склад отгрузки (требуется в некоторых моментах связанных с расчетом доставки)*
* ***Создавать заказы в HostCMS созданные в retailCRM** - созданные новые заказы в RetailCRM будут созданы как новые заказы в HostCMS \[нужно настроить* [*триггер*](/retailcrm/nastroika-triggera-dlya-sozdaniya-obnovleniya-zakazov-iz-retailcrm-v-hostcms) *`isCreate`]*
* ***Закупочная цена** - при настроенном обновлении каталога с помощью ICML, будет передана выбранная цена как закупочная*&#x20;
* ***Активность** - активность магазина для передачи в RetailCRM*

#### Статусы, Оплаты, Доставки

{% hint style="info" %}
Для передачи правильных данных - настройте их соответствие, при передаче данных, которым не настроено соответствие, будет ошибка, которую можно увидеть в **«Журнале событий»**\* и заказ не создастся в RetailCRM
{% endhint %}

{% hint style="warning" %}
\* модуль доступен в редакции **HostCMS.Бизнес**, для младшей редакции смотрите файлы в директории **/hostcmsfiles/logs/(текущая дата).log.csv**
{% endhint %}

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-Mj0Oufmbm_co6jIBJm4%2F-Mj0QttqNJbrHTZhRBTK%2Fimage.png?alt=media&amp;token=1cc549a7-e281-458c-9231-e2f594cf2ae0" alt="Статусы"></div>

* ***Статусы HostCMS/Статусы retailCRM** - данные в HostCMS, который соответствует данным в RetailCRM*

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-Mj0R-3VuGcrXFsrWPyr%2F-Mj0SHUJkX_V-91o08ks%2Fimage.png?alt=media&amp;token=60eb71b2-12bb-4cfa-8d0d-19254766dfae" alt="Оплаты"></div>

* ***Платежные системы HostCMS/Типы оплат retailCRM** - данные в HostCMS, который соответствует данным в RetailCRM*

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-Mj0ShjN_Yxp6a8TTtSU%2F-Mj0SpZ9j0yGGCH6ULjn%2Fimage.png?alt=media&amp;token=4766a5e7-9bef-4bfc-9078-c94b2f4b516c" alt="Доставки"></div>

* ***Доставки HostCMS/Доставки retailCRM** - данные в HostCMS, который соответствует данным в RetailCRM*

### Вкладка «Поля»

#### Физическое лицо, Юридическое лицо / Индивидуальный предприниматель, Адрес доставки, Другое

Для передачи правильных данных - настройте их соответствие, в поля заказа в RetailCRM можно передать любые данные из HostCMS, в том числе дополнительные свойства заказа и готовые наборы:

* **ФИО** (объеденная строка из фамилии, имени и отчества)
* **Модуль «MegaPost»** (объеденная строка из кода ПВЗ, адрес ПВЗ, тариф и тд)
* **Полный адрес** (объеденная строка из улица, дом и квартира)

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-Mj0UjFQEmp6-A8urCN-%2F-Mj0VHAf6gyQ9a9K0mxQ%2Fscreenshot-xn--80aff1anfpi.xn--p1ai-2021.09.07-23_23_47.png?alt=media&amp;token=fda4a2e6-31b0-4d6d-b3d5-5c0bf372452b" alt="Поля"></div>


# Экспорт товаров в RetailCRM через ICML

Формат ICML является расширением формата YML. Он позволяет выгружать техническую информацию о товарах в систему (ID и XML ID товаров, информация об остатках), а также сложную структуру каталогов с торговыми предложениями (SKU).

Для формирования ICML-файла экспорта в RetailCRM создайте узел в структуре сайта под узлом интернет-магазина (стандартно узел имеет путь */shop/*), укажите для созданного узла название раздела, например, **retailcrm**, заполните основные атрибуты страницы, выберите раздел типовой динамической страницы **«RetailCRM»**, страницу **«Обмен с retailCRM»**. Выберите из выпадающего списка магазин, для которого необходимо создать экспорт.

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-Mj0Vw5Lb6M9fvWU2Ctf%2F-Mj0WqcuUcieW8_T92rd%2Fimage.png?alt=media&amp;token=988ec66d-eacc-4557-8bd2-44b996950e61" alt="Добавление раздела"></div>

В аккаунте RetailCRM в разделе **«Настройки»** → **«Магазины»**, во вкладке **«Каталог»** укажите адрес страницы (1), например, *<http://www.site.ru/shop/retailcrm/>*

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-Mj0XA1jToZIE0YFeu4c%2F-Mj0Xu6G2F3xtj1N6mgN%2Fimage.png?alt=media&amp;token=6ec597e2-127c-44e2-b6f0-c0f3ddeb0de6" alt="URL ICML-файла"></div>

> <https://xn--80aff1anfpi.xn--p1ai/shop/retailcrm/>
>
> *пример ICML файла*

### Управление свойствами товаров, экспортируемыми в RetailCRM <a href="#mcetoc_1ba9tdn2l6" id="mcetoc_1ba9tdn2l6"></a>

Опция **itemsProperties()** контроллера **retailCRM\_Controller\_ICML** позволяет управлять списком дополнительных свойств, указываемых для товара при экспорте в RetailCRM.

А коде настроек типовой динамической страницы можно включить экспорт дополнительных свойств товаров:

{% code lineNumbers="true" fullWidth="true" %}

```php
$retailCRM_Controller_ICML = new retailCRM_Controller_ICML($oShop);		
$retailCRM_Controller_ICML
  ->itemsProperties(TRUE)
  ->show();
```

{% endcode %}

или ограничить по ID список экспортируемых свойств:

{% code lineNumbers="true" fullWidth="true" %}

```php
$retailCRM_Controller_ICML = new retailCRM_Controller_ICML($oShop);			
$retailCRM_Controller_ICML
  ->itemsProperties(array(17,19))
  ->show();
```

{% endcode %}

Опция **itemsForbiddenProperties()** контроллера **`retailCRM_Controller_ICML`** позволяет управлять списком дополнительных свойств, которые требуется исключить при экспорте в RetailCRM

{% code lineNumbers="true" fullWidth="true" %}

```php
$retailCRM_Controller_ICML = new retailCRM_Controller_ICML($oShop);
$retailCRM_Controller_ICML
    ->itemsForbiddenProperties(array(11, 12))
    ->show();
```

{% endcode %}

### Экспорт товаров, присутствующих на складе

Опция **checkRest(TRUE)** позволяет выгружать только те товары, которые присутствуют на складах.

{% code lineNumbers="true" fullWidth="true" %}

```php
$retailCRM_Controller_ICML = new retailCRM_Controller_ICML($oShop);
$retailCRM_Controller_ICML
    ->checkRest(TRUE)
    ->show();
```

{% endcode %}

### Группировка модификаций

Опция **groupModifications(TRUE)** объединяет все предложения, которые являются вариациями одной модели (модификации).

{% code lineNumbers="true" fullWidth="true" %}

```php
$retailCRM_Controller_ICML = new retailCRM_Controller_ICML($oShop);
$retailCRM_Controller_ICML
    ->groupModifications(TRUE)
    ->show();
```

{% endcode %}

### Экспорт модификаций <a href="#mcetoc_1ba9tdn2l8" id="mcetoc_1ba9tdn2l8"></a>

Стандартно модификации не экспортируются совместно с товарами, управлять экспортом модификаций позволяет опция **modifications()** контроллера **retailCRM\_Controller\_ICML**

{% code lineNumbers="true" fullWidth="true" %}

```php
$retailCRM_Controller_ICML = new retailCRM_Controller_ICML($oShop);
$retailCRM_Controller_ICML
    ->modifications(TRUE)
    ->show();
```

{% endcode %}

### Создание статичных ICML-файлов через CRON для больших магазинов

Добавьте в CRON на хостинге вызов файла **cron/retailcrm.php**. Проверьте работу, в корневой директории будут создаваться XML-файлы по схеме **retailcrm1.xml**, где 1 — идентификатор магазина.

{% tabs %}
{% tab title="CRON задача" %}
{% code lineNumbers="true" fullWidth="true" %}

```bash
# каждый день в 00:00
0 0 * * * /usr/bin/php /var/www/web/sites/site.ru/cron/retailcrm.php
```

{% endcode %}
{% endtab %}
{% endtabs %}

В аккаунте RetailCRM в разделе **«Настройки»** → **«Магазины»**, во вкладке **«Каталог»** укажите адрес страницы, например, *<http://www.site.ru/retailcrm1.xml>*


# Настройка триггера для создания/обновления заказов из RetailCRM в HostCMS

https\://docs.retailcrm.ru/Developers/Automation/ObjectReference

Если в настройках магазина включена опция **«Обновлять из retailCRM»** или **«Двухсторонний обмен»**, в RetailCRM в разделе **«Автоматизация»** → **«Триггеры»** создайте триггер:

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-Mj0jWV4Dd4GyqhPXYdK%2F-Mj0l4m3P5SCb_-PJ_Ed%2Fscreenshot-morozovpimnev.retailcrm.ru-2021.09.08-00_36_39.png?alt=media&amp;token=89427be4-78d0-41cd-84cb-493473430add" alt="Триггер"></div>

* ***Активность** - ВКЛ*
* ***Название** - любое (например: "Изменение заказа \[сайт]")*
* ***Символьный код** - любое (например: "izmenenie-zakaza-site")*
* ***Порядок** - любой (например: "990")*
* ***Событие** - "Изменение заказа"*
* ***Условие** - "Редактор"*
* ***Условие применения триггера** - запросить в ТП*&#x20;
* ***Действие** - "Выполнить HTTP-запрос"*

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-Mj0jWV4Dd4GyqhPXYdK%2F-Mj0nt9zDLynDQZdygUv%2Fimage.png?alt=media&amp;token=83579a41-391f-424f-b794-f52a033f7577" alt="Выполнить HTTP-запрос"></div>

* ***Адрес** - http(s)://АДРЕСВАШЕГОСАЙТА/retailcrm/api/*
* ***HTTP метод** - "POST"*
* ***HTTP-заголовки** - Должно быть 2 заголовка:*
  * *Заголовок: APIKEY | Значение: ВАШAPIКЛЮЧ (который вводили в модуле при установке )*
  * *Заголовок: Content-Type | Значение: application/json*

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-Mj0qMIt0MNIlgFZHqf6%2F-Mj0qfO2jd1q15Ajy91y%2Fimage.png?alt=media&amp;token=0efecd95-9232-45b6-8f9f-40cd36405f5b" alt=""></div>

* ***Передавать параметры** - "Указать тело запроса самостоятельно"*
* ***Тело запроса** - запросить в ТП* [*https://t.me/morozovpimnev*](https://t.me/morozovpimnev)

{% hint style="warning" %}
В теле запроса можно удалить ненужные поля, которые не хотите обновлять, кроме:

**id, isCreate, isUpdate, isDelete, site, number**
{% endhint %}

{% hint style="info" %}
Документация по работе с объектами, с которыми можно работать в триггерах <https://docs.retailcrm.ru/Developers/Automation/ObjectReference>
{% endhint %}


# Выгрузка ранее сделанных заказов в RetailCRM

В ЦА сайта переходим в раздел **«retailCRM»** и нажимаем **«Выгрузить заказы»**, после выбора диапазона дат заказов и магазина, можно нажать **«Выгрузить»**

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-Mj0qlmFxdlUtXbaVeJS%2F-Mj0r_ogafIjsDAdMumm%2Fimg-2021-09-08-01-05-11.png?alt=media&amp;token=5fef31da-28db-4fc0-a94b-823590f3995e" alt="Выгрузить заказы"></div>


# События (хуки)

https\://www\.hostcms.ru/documentation/modules/core/events/

Для добавление в отправляемые данные своих данных можно использовать следующие хуки ([подробнее](https://www.hostcms.ru/documentation/modules/core/events/))

<pre class="language-php" data-line-numbers data-full-width="true"><code class="lang-php"><strong>// добавление данных в произвольные поля
</strong><strong>class My_RetailCRM
</strong>{
    static public function onBeforeCreateOrder($controller, $args)
    {
        $oShop_Order = $args[0]; // Shop_Order_Model
        $oRetailCRM = $args[1]; // RetailCRM_Model
        
        /** $args[2] - параметры,
         * добавление параметров в customFields
         */
        $args[2]['customFields']['dop_pole'] = '123';
    }
}

Core_Event::attach('retailCRM_Controller.onBeforeCreateOrder', array('My_RetailCRM', 'onBeforeCreateOrder'));
</code></pre>


# Настройки

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FqpO1aEka29Ih7J7MB0NR%2Fimage.png?alt=media&amp;token=0ee4d60c-ca50-4076-a456-18694e982d2a" alt=""><figcaption></figcaption></figure></div>

Внесенные при установке и дополнительные настройки можно изменить в ЦА сайта, переходим в раздел **«retailCRM»** -> **«Настройки»**

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FLECaDVYQREUPbptawbEK%2Fimage.png?alt=media&amp;token=1027caea-5b76-4c77-8a26-e5a10e398c1c" alt=""><figcaption></figcaption></figure></div>

*
* ***Адрес своего аккаунта в retailCRM субдомен** - если ссылка на личный кабинет в RetailCRM у вас <https://demo.retailcrm.ru/>, то субдомен будет и нужно ввести в настройки - «demo» (без .retailcrm.ru)*
* ***ApiKey** - ключ доступа можно создать или получить в RetailCRM в разделе «Настройки» → «Интеграция» → «Ключи доступа к API» (см.* [Создание ключа доступа к API](/retailcrm/sozdanie-klyucha-dostupa-k-api)*)*
* ***Тип выгрузки:***
  * *При создании элемента - как только происходит процесс создания элемента в системе, элемент сразу выгуржается в CRM (может тормозить корзину)*
  * *По расписанию - через модуль* [*"Планировщик задач"*](/retailcrm/planirovshik-zadach) *(выгрузка элементов происхдит по расписанию, рекомендуемый вариант)*
* ***Дата начала выгрузки по расписанию** - установите дату с которой вы хотите выгружать элементы по расписанию (т.е. после установки у вас может быть очень большая база с самого начала запуска сайта, дата позволяет выгрузить не все, а только с нужного времени)*
* ***Идентификатор торгового предложения (по умочланию Идентификатор \[id])\****

{% hint style="warning" %}
\*Важно! Обратите внимание, что идентификатор торгового предложения должен быть уникальным, и если при генерации скопировать идентификатор товара в идентификатор торгового предложения, то идентификатор может совпасть с идентификатором другого торгового предложения, это может привести к неисправимым последствиям.
{% endhint %}


# Планировщик задач

https\://www\.hostcms.ru/documentation/modules/schedule/

#### Шаг 1. Добавление вызова в cron

Выполнением действий, заданных в модуле **«Планировщик задач»**, осуществляется файлом `cron/schedule.php`, вызов которого необходимо добавить в cron. Рекомендуется запускать выполнение файла schedule.php раз в минуту.

Пример вызова: `/usr/bin/php /var/www/site.ru/httpdocs/cron/schedule.php`

Пример вызова с передачей php.ini: `/usr/bin/php --php-ini /etc/php.ini /var/www/site.ru/httpdocs/cron/schedule.php`

{% hint style="warning" %}
Реальный путь на сервере к корневой директории сайта и путь к PHP уточните в службе поддержки хостинга.
{% endhint %}

#### Шаг 2

Добавляем задачу, в основном меню выберите **Инструменты** → **Планировщик задач**, нажмите в меню на **+Задача**

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FjOx70NSdZVWfVrmJWSi6%2Fimage.png?alt=media&amp;token=c61e6fd7-e0c5-4048-a49d-d48b7a3f2591" alt=""><figcaption></figcaption></figure></div>

* ***Дата следующего выполнения задачи*** - Дата и время, когда следует выполнить задачу снова. После выполнения задачи к ее времени будет прибавлен установленный интервал, рассчитанное время будет записано в это поле.
* ***Дата добавления задачи*** - Дата и время, когда задача была добавлена.
* ***Интервал*** - Время, устанавливающее периодичность выполнения задачи (рекомендуем указывать `5 минут`).&#x20;
* ***Модуль*** - Модуль, у которого будет вызываться задача (выбираем `retailCRM`).
* ***Действие*** - Действие модуля, которое будет вызывать задача (выбираем `Выгрузка элементов`).
* ***Идентификатор сущности*** - Идентификатор элемента, над которым нужно произвести действие (указываем ID сайта).
* ***Описание*** - Описание задачи.


# Отладка

{% hint style="danger" %}

### Внимание! Отладкой должен заниматься Ваш технический специалист.

{% endhint %}

### Выгрузка заказа

`request` - это запрос для выгрузки\
`response` - это ответ, если он 200-202 и нет ошибок, занчит все хорошо

Чтобы посмотреть запросы при выгрузке

{% tabs %}
{% tab title="Модуль "История изменений"" %}
Если стоит наш модуль ["История изменений"](https://asmp.su/changelog) то все намного проще, рекомендуем его ставить

После выгрузки заказа, в самом заказе, перейдите на вкладку "Журнал изменений" там будут все запросы/ответы по API

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FmNKnUF8kawu9KWeSbEKR%2Fimage.png?alt=media&amp;token=8df9c220-9ef3-4bbf-b975-5e720099e884" alt=""><figcaption></figcaption></figure></div>
{% endtab %}

{% tab title="Модуль "Журнал событий"" %}
Есил у вас редакция HostCMS.Бизнес и выше

Перйдите в модуль  **Система** →  ["Журнал событий"](https://www.hostcms.ru/documentation/modules/eventlog/) найдите логи связанные с Вашим заказом

обычно они выглядят следующим образом: `[513][retailcrm][request] ...`\
где 513 - это номер заказа

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FryLB7WmROPl4312k7DDK%2Fimage.png?alt=media&amp;token=0cbfb930-cfad-4e86-8b2a-7e08f2e9ebb7" alt=""><figcaption></figcaption></figure></div>
{% endtab %}

{% tab title="log.csv" %}
Если у вас редакция HostCMS.Малый Бизнес и ниже

Логи хранятся в файлах в директории **/hostcmsfiles/logs/(текущая дата).log.csv**

Откройте файл и найдите логи связанные с Вашим заказом

обычно они выглядят следующим образом: `[513][retailcrm][request] ...`\
где 513 - это номер заказа
{% endtab %}
{% endtabs %}


# Мультиязычность

инструкция для v4.9 и HostCMS v7.0.2

Купить модуль 👉 <https://asmp.su/multilanguage>


# Установка модуля

*Перед установкой купите модуль (*[*инструкция*](/#pokupka-modulya)*)*

{% hint style="danger" %}
Для дальнейших действий нужны минимальные знания работы с **css/js**, **макетами**, **XSL-шаблонами (далее - XSL)**, **типовыми динамическими страницами (далее - ТДС)** в HostCMS. Работу должен выполнять Ваш программист или администратор сайта.
{% endhint %}

#### Шаг 1

В центре администрирования (далее ЦА) сайта переходим в раздел **«Магазин приложений»** (1) и в поле поиска вводим название модуля (2), нажимаем искать (3) или "Enter", на нужном модуле кликаем на кнопку **«Установить»** (4)

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj-gwbYdQWRhuB0jULI%2F-MlLKFJXEHcfNffheRW3%2F-MlLLQwDNf1Mr6qvONGD%2Fimage.png?alt=media&amp;token=4fa1b4b9-9467-4ea8-a294-31147c027f59" alt="Магазин приложений"></div>

{% hint style="info" %}
\*примеры XSL шаблонов устанавливаются в папку **MultiLanguage** / Мультиязычность \[MultiLanguage] \[05.06.2020 13:00:24]
{% endhint %}


# Создание ключа Яндекс.Облако

#### Шаг 1

Перейдите в аккаунт [Яндекс.Облако](https://console.cloud.yandex.ru/)

{% hint style="danger" %}
**ВНИМАНИЕ! Дальнешие шаги можно делать, только если у Вас уже есть активный платежный аккаунт** [**https://console.cloud.yandex.ru/billing?section=accounts**](https://console.cloud.yandex.ru/billing?section=accounts)
{% endhint %}

#### Шаг 2

Копируем идентификатор каталога `"default"`, присутствующего по-умолчания или создаем новый, вносим его в настройки (Яндекс.Облако: идентификатор каталога). Далее переходит в каталог `"default"`

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FsXyJH1z5uhZZRuLikTxf%2Fimage.png?alt=media&amp;token=0ce6f12e-69ce-4dd0-a439-06938a37666d" alt=""><figcaption></figcaption></figure></div>

#### Шаг 3

В рамках каталога создаем сервисный аккаунт с присвоением ему роли `editor`

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FWH71NmbHVA5emEnNoEVM%2Fimage.png?alt=media&amp;token=38c8e692-b44f-43d2-a2ca-71f5c0226efb" alt=""><figcaption></figcaption></figure></div>

#### Шаг 4

После добавления переходим в профиль сервисного аккаунта и создаем API ключ, полученный **секретный ключ** вносим в настройки (Яндекс.Облако: API ключ)

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2Fuq63jmK0api6I3orujyq%2Fimage.png?alt=media&amp;token=3cc08e4e-a2c5-45eb-b2e7-80cb2ec55c59" alt=""><figcaption></figcaption></figure></div>

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FF9ecocbMGSQ1KSbQrvuH%2Fimage.png?alt=media&amp;token=e5841510-65b8-4324-9837-207c0f72efd8" alt=""><figcaption></figcaption></figure></div>


# Настройка модуля

#### Шаг 1

Переходим в раздел «Модули», находим нужный модуль (1) и нажимаем кнопку «Редактировать» (2)

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2Fhl6zIWY11atgqNKwDiCD%2Fimage.png?alt=media&amp;token=682c2e10-c158-4b88-bc3e-108f0c6f4212" alt="Список модулей"></div>

#### Шаг 2

Перейдите во вкладку «Настройки модуля» (1) и укажите нужные настройки (настройки сохраняются для текущего сайта, в котором вы находитесь)

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2F3wDJVVzlRwX2PRUXIXH5%2Fimage.png?alt=media&amp;token=aee857cb-f001-4fa2-b5bf-689a628c25b2" alt="Настройки модуля (>= 6.9.8)"></div>

* ***translate** – (TRUE|FALSE), нужно ли при сохранении элемента автоматически переводить не достающие языки*
* ***type** – (site|url|cookie), как система будет идентифицировать язык*&#x20;
  * *<mark style="color:yellow;">**\[site]**</mark> работа на N-количестве поддоменов (en.site.ru, de.site.ru и тд), для одного сайта можно создать необходимое кол-во поддоменов.*
  * *<mark style="color:yellow;">**\[url]**</mark> работа на одном домене N-количестве путей (site.ru/news/ -> site.ru/en/news/), для одного сайта можно создать необходимое кол-во путей.\**
  * *<mark style="color:yellow;">**\[cookie]**</mark> работа на одном домене (site.ru), такой вариант подойдет для простых сайтов, для которых достаточно смены контента на той же странице.\**
* ***yandex|google|googlefree|yandexcloud** – настройки для драйвера перевода, нужно указать полученные API ключи*

{% hint style="warning" %}
**\*ВНИМАНИЕ!** Type **\[url]** и **\[cookie]** не работает с функционалом **«Кэширование в статичные файлы (зеркалирование)»**
{% endhint %}

Для версии HostCMS < 6.9.8 настройки модуля вносятся как PHP-код с параметрами модуля или файла `/modules/multilanguage/config/config.php`

{% code title="для всех сайтов" lineNumbers="true" fullWidth="true" %}

```php
<?php

return array (
	'translate' => TRUE,
	'type' => 'url',
	'yandex' => '',
	'google' => '',
	'googlefree' =>'gtx',
	'yandexcloud_folder_id' => '',
	'yandexcloud_secret' => '',
);
```

{% endcode %}

{% code title="для сайта ID = 123" lineNumbers="true" fullWidth="true" %}

```php
<?php

return array (
	123 => array(
		'translate' => TRUE,
		'type' => 'url',
		'yandex' => '',
		'google' => '',
		'googlefree' =>'gtx',
		'yandexcloud_folder_id' => '',
		'yandexcloud_secret' => '',
	)
);
```

{% endcode %}


# Основной язык сайта

Основной язык сайта, это язык, в котором у вас изначально хранятся основные данные без доп. языков, так же он указан в настройках сайта "Язык сайта" (1)

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FHWKmng4SpuqlEqJlFbpV%2Fimage.png?alt=media&amp;token=dcd12ece-161b-4d8c-bb17-2d821d43d0a3" alt=""><figcaption></figcaption></figure></div>


# Создание доп. языков

#### Шаг 1

В ЦА сайта переходим в раздел «Мультиязычность» и добавляем нужные дополнительные языки

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FIayQnQsuNmjRGzau5vST%2Fimage.png?alt=media&amp;token=9c5947a2-3ad6-469f-b554-0b498e05bac1" alt="Мультиязычность"></div>

#### Шаг 2

В созданном языке заполните поля нужными данными

### Вкладка «Основные»

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2F7W0pSCE2LLIVY2XQ57vp%2Fimage.png?alt=media&amp;token=2d831f23-d2e4-4367-83de-1a0be919241f" alt=""><figcaption></figcaption></figure></div>

* ***Название языка** — произвольное название для отображения на сайте для посетителей (например: English или En)*
* ***Драйвер** — (yandex|google|googlefree|yandexcloud), указание названия драйвера из настроек модуля, через какой сервис будет перевод\**
* *Основной язык* - при выбранной опции, будет показывать пользователю текущий язык игнорируя основной язык сайта (например когда сайт был изначально полностью на русском, а теперь нужно показывать по умолчанию на англ.)
* ***Доступен в списке языков** - активность языка*
* ***Обозначение языка** – код языка (например: en, uk), так же используется как путь для типа <mark style="color:yellow;">**\[url]**</mark>*
* ***Порядок сортировки** – сортировка языка*
* ***Домены сайта** – домен для языка, доступно когда выбран тип в настройках модуля тип <mark style="color:yellow;">**\[site]**</mark>*
* **Код зяыка переводы** – *код языка для драйвера переводов (например нужно отображать обозначение языка как CN (китайский), но перевод нужен ZH (код китайского языка в стандарте ISO 639-1)*

{% hint style="warning" %}
\* драйвер языка можно не указывать, если в настройках модуля вы указали **translate=>FALSE** и собираетесь добавлять переводы вручную
{% endhint %}


# Настройка макета

{% hint style="danger" %}
Для дальнейших действий нужны минимальные знания работы с **макетами**, **XSL-шаблонами (далее - XSL)**, **типовыми динамическими страницами (далее - ТДС)** в HostCMS. Работу должен выполнять Ваш программист или администратор сайта.
{% endhint %}

### Вывод выбора языка для посетителей сайта

В главном макете Ваше сайта, в том месте где хотите вывести выбор языка вставьте код (например в шапке сайта)

{% code lineNumbers="true" fullWidth="true" %}

```php
<?php
// Показ и выбор языка
$MultiLanguage_Controller_Show = new MultiLanguage_Controller_Show(
	Core_Entity::factory('Site', CURRENT_SITE)
);
				
$MultiLanguage_Controller_Show
	->xsl(Core_Entity::factory('Xsl')->getByName('Мультиязычность'))
	->show();
?>
```

{% endcode %}

{% hint style="info" %}
\*при установке XSL шаблоны идут с датой текущей установки в названии, например: **Мультиязычность \[05.06.2020 13:00:24]**
{% endhint %}


# Сущность язык

Получить текущий язык можно в любом месте макета, ТДС или своем функционале следующий образом

{% tabs %}
{% tab title="HostCMS >= 6.6.7" %}
{% code lineNumbers="true" fullWidth="true" %}

```php
<?php
    Core::getLng(); // en
?>
```

{% endcode %}
{% endtab %}

{% tab title="HostCMS < 6.6.7" %}
{% code lineNumbers="true" fullWidth="true" %}

```php
<?php
    MultiLanguage_Observer::getLng(); // en
?>
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Настройка SEO заголовков

#### Шаг 1

{% code lineNumbers="true" fullWidth="true" %}

```php
// В главном макете сайта в блоке head замените следующий код
/*
<title><?php Core_Page::instance()->showTitle()?></title>
<meta name="description" content="<?php Core_Page::instance()->showDescription()?>">
<meta name="keywords" content="<?php Core_Page::instance()->showKeywords()?>">
*/
// на нижний

<title><?php MultiLanguage_Page::instance()->showTitle()?></title>
<meta name="description" content="<?php MultiLanguage_Page::instance()->showDescription()?>">
<meta name="keywords" content="<?php MultiLanguage_Page::instance()->showKeywords()?>">
```

{% endcode %}

#### Шаг 2

Для каждого элемента (структура сайта, интернет-магазин или информационные системы) и варианта языка теперь можно задать свои мета тэги и использовать свои шаблоны SEO

&#x20;<mark style="background-color:blue;">**RU**</mark>&#x20;

> **`Купить {group.name} в магазине {this.pageNumber ", страница %d"}`**

`// Купить телевизоры в магазине, страница 2`

&#x20;<mark style="background-color:blue;">**EN**</mark>&#x20;

> **`Buy {group.multiLng 'name'} in shop {this.pageNumber ", page %d"}`**

`// Buy TV in shop, page 2`

&#x20;<mark style="background-color:blue;">**RU**</mark>&#x20;

> **`Купить {item.name} в нашем магазине`**

`// Купить Телевизор LG 5000 NR в нашем магазине`

&#x20;<mark style="background-color:blue;">**EN**</mark>&#x20;

> **`Buy {item.multiLng 'name'} in our shop`**

`// Buy TV LG 5000 NR in our shop`


# Настройка HREFLANG

для типа \[site] \[url]

Для помощи поисковым система индексации языковых версий страницы, в главном макете сайта в блоке head разместите следующий код

{% code lineNumbers="true" fullWidth="true" %}

```php
<?php
    MultiLanguage_Page::instance()->showHrefLang();
    // Результат
    // <link rel="alternate" hreflang="ru" href="https://site.ru" />
    // <link rel="alternate" hreflang="en" href="https://site/en/" />

?>
```

{% endcode %}


# Интернационализация в XSL-шаблонах

В HostCMS интернационализация XSL-шаблонов осуществляется с использованием сущностей. Часто используемы внешние данные могут быть предварительно объявлены как сущности, а затем использованы в XSL-шаблоне.

Такое решение позволяет использовать один и тот же XSL-шаблон на разных сайтах, работающих на разных языках.

Для каждого языка, используемого на сайтах системы, автоматически создается отдельный DTD, который доступен при редактировании XSL-шаблона. Добавление нового языка автоматически добавляет для него DTD.

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FdWu3af0bnuKNLGjmuxBk%2Fdtd.png?alt=media&amp;token=b4282cff-1f1a-45ac-82aa-cf65824f61ef" alt="Редактирование информации об XSL-шаблоне"></div>

Подключение соответствующего языку DTD происходит автоматически, для этого в XSL-шаблоне указывается:

{% code lineNumbers="true" fullWidth="true" %}

```xml
<!DOCTYPE xsl:stylesheet SYSTEM "lang://21">
```

{% endcode %}

* *где **21** - идентификатор XSL-шаблона.*

#### Объявление сущностей в DTD

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FL4euDXs3OxqoDKvdnpEg%2Fdtd-ru.png?alt=media&amp;token=9bf486af-3e45-4365-b300-9cd6234bc677" alt="Код DTD для языка &#x22;ru&#x22;"></div>

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2F2dIf6lRWGXJZmJWLaPxY%2Fdtd-en.png?alt=media&amp;token=88f7329a-8129-4e25-a6c2-311b1a84aefa" alt="Код DTD для языка &#x22;en&#x22;"></div>

Например, объявление сущности **labelSearch**:

{% code lineNumbers="true" fullWidth="true" %}

```xml
<!ENTITY labelSearch "Поиск">
```

{% endcode %}

позволяет в дальнейшем использовать ее в XSL-шаблоне:

{% code lineNumbers="true" fullWidth="true" %}

```xml
<h1>&labelSearch;</h1>
```

{% endcode %}

или в атрибутах

{% code lineNumbers="true" fullWidth="true" %}

```xml
<img src="/images/my-image.png" alt="&labelSearch;" title="&labelSearch;" />
```

{% endcode %}


# Интернационализация в макетах

Закладка «Язык». Используется для указания текстовых значений, выводимых в макете в зависимости от языка, указанного для сайта. Потребность в использовании интернационализации возникает при автоматической установке макетов, адаптированных для разных языков.

В макете интернационализация используется следующим образом:

{% code lineNumbers="true" fullWidth="true" %}

```php
<?php echo $this->_('payment') // Оплата ?>
```

{% endcode %}

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FXSMQCUZSJtdcw2Z0QP1q%2Flanguage-tab.png?alt=media&amp;token=6f913fcc-d565-4890-8e4b-736aaec31f61" alt="Редактирование макета"></div>


# Интернационализация в ТДС или собственных php файлах

Языки в ТДС используются из макета, который подключен к тому же узлу структуры сайта, что и типовая динамическая страница и используются следующим образом:

{% code lineNumbers="true" fullWidth="true" %}

```php
$template = Core_Page::instance()->template; // текущий подключенный макет на странице
echo $template->_('payment'); // Оплата
```

{% endcode %}

Использовать языки в собственных PHP файлах можно следующим образом:

{% code lineNumbers="true" fullWidth="true" %}

```php
$template = Core_Entity::factory('Template', 123); // где 123 - ID нужного макета
echo $template->_('payment'); // Оплата
```

{% endcode %}


# Работа с объектами ORM

Вывести перевод для текущего языка элемента определённого поля можно так (если перевода нет, то вернет значения дефолтного языка)

{% code lineNumbers="true" fullWidth="true" %}

```php
$oInformationsystem_Item = Core_Entity::factory('Informationsystem_Item', 123);
echo $oInformationsystem_Item->multiLng('name'); // About

// для доп. свойства
$oProperty = Core_Entity::factory('Property', 123);
$aPropertyValues = $oProperty->getValues($shop_item_id);  
echo $aPropertyValues[0]->multiLng('value')
```

{% endcode %}

Получить все переводы всех полей для элемента в виде объектов

{% code lineNumbers="true" fullWidth="true" %}

```php
/* 
 * Получение маасива объектов, $bCache = TRUE
 * @param string $entity model name
 * @param int $entity_id
 * @param boolean $type FALSE|TRUE
 * @param boolean $bCache cache mode
 * @return array
 */
Core_Entity::factory('MultiLanguage_Field')->getAFields('shop_item', 123);

// Результат
//Array (
//	[0] => MultiLanguage_Field_Model Object
//	[1] => MultiLanguage_Field_Model Object
//)

/* 
 * Получение массива объектов с ключами полей
 */
Core_Entity::factory('MultiLanguage_Field')->getAFields('shop_item', 123, TRUE);

// Результат
//Array (
//	[name] => MultiLanguage_Field_Model Object
//	[description] => MultiLanguage_Field_Model Object
//)

/* 
 * Получение объекта по полю
 * @param string $entity model name
 * @param int $entity_id
 * @param string $field field name
 * @param boolean $bCache cache mode
 * @return self|NULL
 */
Core_Entity::factory('MultiLanguage_Field')->getByField('shop_item', 123, 'name');
```

{% endcode %}

## Сохранение перевода для элемента

Сохранение происходит через параметр `datalng_{lng}_{field}`, где {lng} это код языка, а {field} имя поля элемента

{% code lineNumbers="true" fullWidth="true" %}

```php
$oInformationsystem_Item = Core_Entity::factory('Informationsystem_Item', 123);
$oInformationsystem_Item->datalng_en_name = 'My name';
$oInformationsystem_Item->save();
```

{% endcode %}

{% code lineNumbers="true" fullWidth="true" %}

```php
// получаем текущий язык


// получение 
```

{% endcode %}

Вывести домен текущего язык&#x430;*, для типа <mark style="color:yellow;">**\[site]**</mark>*

{% code lineNumbers="true" fullWidth="true" %}

```php
$oMultiLanguage = Core_Entity::factory('MultiLanguage')->getByLng(Core::getLng());
    
if(!is_null($oMultiLanguage)
    echo $oMultiRegion->Site_Alias->name; // msk.site.ru
```

{% endcode %}

Вывести путь текущего язык&#x430;*, для типа <mark style="color:yellow;">**\[url]**</mark>*

{% code lineNumbers="true" fullWidth="true" %}

```php
<?php
$lngPath = '';

$oMultiLanguage = Core_Entity::factory('MultiLanguage')->getByLng(Core::getLng());
!is_null($oMultiLanguage) && $lngPath = $oMultiLanguage->getPath();

?>

<a href="/<?php echo $lngPath ?>politics/">Политика конфиденциальности
```

{% endcode %}


# Sitemap

для типа \[site] \[url]

В Типовой Динамической Странице (ТДС), которая отвечает у вас за формирование sitemap внесите следующие изменения

{% code lineNumbers="true" fullWidth="true" %}

```php
// замените
// $oCore_Sitemap = new Core_Sitemap($oSite);
// на
$oCore_Sitemap = new MultiLanguage_Sitemap($oSite);
```

{% endcode %}


# Хлебные крошки

Если в Вашем XSL шаблоне нет проверки узла на **link/url**, то в хлебных крошка можно наблюдать название языка, для этого добавьте в Вашем XSL шаблоне следующее

{% code lineNumbers="true" fullWidth="true" %}

```html
<!-- заменить -->
<!--<xsl:template match="/site">
	<xsl:if test="count(*[@id]) &gt; 0">
		<a href="/">Главная</a>
		<xsl:apply-templates select="*[@id]" />
	</xsl:if>
</xsl:template>-->
<!-- на -->
<xsl:template match="/site">
	<xsl:if test="count(*[@id][link/node() or url/node()]) &gt; 0">
		<a href="/">Главная</a>
		<xsl:apply-templates select="*[@id][link/node() or url/node()]" />
	</xsl:if>
</xsl:template>
```

{% endcode %}


# Массовый перевод

В ЦА сайта переходим в раздел «Мультиязычность» - «Запустить перевод»

Если у вас настроена интеграция с каким либо сервисом (указан driver) для перевода, то есть возможность массово добавить переводы для элементов без перевода. При нажатии на кнопку "Посчитать" выедет кол-во элементов без перевода

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FrVd3HMGtCd0KbUI4muJx%2Fimage.png?alt=media&amp;token=94c780c4-c1d6-4e41-a1ea-33c29263081b" alt=""></div>

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FxqJvOUagGhaIRZtmhDYq%2Fimage.png?alt=media&amp;token=38fcfc98-62e7-4baa-8700-91955c8dee98" alt=""></div>


# Мультирегиональность

инструкция для v3.9.5 и HostCMS v7.0.7

Купить модуль 👉 <https://asmp.su/multiregion>


# Установка модуля

*Перед установкой купите модуль (*[*инструкция*](/#pokupka-modulya)*)*

{% hint style="danger" %}
Для дальнейших действий нужны минимальные знания работы с **css/js**, **макетами**, **XSL-шаблонами (далее - XSL)**, **типовыми динамическими страницами (далее - ТДС)** в HostCMS. Работу должен выполнять Ваш программист или администратор сайта.
{% endhint %}

#### Шаг 1

В центре администрирования (далее ЦА) сайта переходим в раздел **«Магазин приложений»** (1) и в поле поиска вводим название модуля (2), нажимаем искать (3) или "Enter", на нужном модуле кликаем на кнопку **«Установить»** (4)

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2F0OQZgr327xZKOp5YgWhX%2Fimage.png?alt=media&amp;token=0aa5f4d3-8ffc-49a0-9c0a-4094a5a9320a" alt="Магазин приложений"></div>

#### Шаг 2

В параметрах установки модуля выбираем нужные и кликаем на **«Установить»**

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FHQiNAvjNuchxv6ZDCM2S%2Fimage.png?alt=media&amp;token=916838e3-94bf-4ef3-b36d-738909e5d381" alt=""></div>

* ***Установить XSL шаблоны** - устанавливает примеры шаблонов (в папку **MultiRegion**) в соответствующем разделе с текущей датой\**
* ***Установить пример Макета** - устанавливает пример макета (в папку **MultiRegion**) в соответствующем разделе с текущей датой\**

{% hint style="info" %}
\*например: Мультирегиональность \[MultiRegion] \[05.06.2020 13:00:24]
{% endhint %}


# Настройка модуля

#### Шаг 1

В ЦА сайта переходим в раздел «Модули», находим нужный модуль (1) и нажимаем кнопку «Редактировать» (2)

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FC0HZTVMy7eTRBRxOHfQj%2Fimage.png?alt=media&amp;token=08f8fa66-a193-4279-95e7-f6b9eee6e598" alt=""></div>

#### Шаг 2

Перейдите во вкладку «Настройки модуля» и укажите нужные настройки (настройки сохраняются для текущего сайта, в котором Вы находитесь)

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FHF7Uo8XTplak3hi9oHoU%2Fimage.png?alt=media&amp;token=292831a6-114f-4028-8810-cf2dbbc74c9e" alt=""><figcaption></figcaption></figure></div>

* ***Сервис КЛАДР** – сервис для поиска городов*
  * &#x20;*HostCMS - справочник городов HostCMS*
  * [*DaData*](https://asmp.su/dadata) *(как получить ключ* [*подробнее*](/megapost/dadata)*)*
* ***Ваш токен (dadata.ru)** – обязательный если используете сервис dadata (можно получить бесплатный)*
* ***Тип**– (site|url|cookie), как система будет идентифицировать регион*&#x20;
  * *<mark style="color:yellow;">**\[site]**</mark> работа на N-количестве поддоменов (msk.site.ru, spb.site.ru и тд), для одного сайта можно создать необходимое кол-во поддоменов.*
  * *<mark style="color:yellow;">**\[url]**</mark>* *работа на одном домене N-количестве путей (site.ru/shop/ -> site.ru/msk/shop/), для одного сайта можно создать необходимое кол-во путей.*
  * *<mark style="color:yellow;">**\[cookie]**</mark>* *работа на одном домене (site.ru), такой вариант подойдет для простых сайтов, для которых достаточно смены контактных данных.*
* ***Кол-во городов в выпадающем списке при поиске** – кол-во городов в выпадающем списке при ввводе названия города в поиске*
* **Название XSL шаблона модального окна выбора/поиска города** *– Название XSL шаблона модального окна выбора/поиска города, по умолчанию «МультирегиональностьМодальноеОкно»*
* **ID типа email указанный в регионе, на который отсылать информацию о поступившем заказе** *– ID типа email указанный в регионе, на который отсылать информацию о поступившем заказе*

{% hint style="danger" %}
**\*ВНИМАНИЕ!** Type **\[url]** и **\[cookie]** не работает с функционалом **«Кэширование в статичные файлы (зеркалирование)»**
{% endhint %}

Для версии HostCMS < 6.9.8 настройки модуля вносятся как PHP-код с параметрами модуля или в файлу `/modules/multiregion/config/config.php`

{% code title="для всех сайтов" lineNumbers="true" fullWidth="true" %}

```php
<?php

return array (
	'serviceKladr' => '', // Сервис КЛАДР
	'kladrToken' => '', // Ваш токен (kladr-api)
	'dadataToken' => '', // Ваш токен (dadata.ru)
	'type' => 'url', // Тип
	'cityLimit' => 5, // Кол-во городов
	'defaultCityId' => 1, // город по умолчанию, если не удалось определить по GeoIP
	'favoriteCities' => '1,1745,173,526,339,2289,1550,2229,1888', // города фавориты в модальном окне предложенные пользователю в блоке «Например»
	'xsl' => 'МультирегиональностьМодальноеОкно', // Название XSL шаблона
	'send_order_email' => 1 // ID типа email указанный в регионе
);
```

{% endcode %}

{% code title="для сайта ID = 123" lineNumbers="true" fullWidth="true" %}

```php
<?php

return array (
	123 => array(
		'serviceKladr' => '',
		'kladrToken' => '',
		'dadataToken' => '',
		'type' => 'url',
		'cityLimit' => 5,
		'defaultCityId' => 1,
		'favoriteCities' => '1,1745,173,526,339,2289,1550,2229,1888',
		'xsl' => 'МультирегиональностьМодальноеОкно',
		'send_order_email' => 1
	)
);
```

{% endcode %}


# Создание регионов

#### Шаг 1

В ЦА сайта переходим в раздел **«Мультирегиональность»** и добавляем нужные регионы

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FELgOHT3jjUUD7eQV111R%2Fimage.png?alt=media&amp;token=6dfca550-31ff-4a87-ad90-7c1f99ba0015" alt="Мультирегиональность"></div>

#### Шаг 2

В созданном регионе заполните поля нужными данными

### Вкладка «Основные»

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FlfZ8qXZKQav5aZVmPTT3%2Fimage.png?alt=media&amp;token=76f35dee-9b02-41bd-af04-7b1513384251" alt="Вкладка «Основные»"></div>

* ***Название региона** — произвольное название для отображения на сайте для посетителей*&#x20;
* ***Путь** — путь для ссылки региона, для типа <mark style="color:yellow;">**\[url]**</mark>*
* ***Активность** - активность региона*
* ***Области*****¹** *– области привязанные к региону (можно не указывать, если указан город)*
* ***Города*****¹** *– города привязанные к региону (наибольший приоритет перед областью) (можно не указывать, если указана область)*
* ***Склады** – склады привязанные к региону (если пусто выводит наличие по умолчанию для сайта всех складов)*
* ***Цены** – цены (цены интернет-магазина) привязанные к региону (если пусто или доп. цена товара равна 0, то берет основную цену товара +* [*наценка*](#vkladka-ceny)*)*
* ***Домены сайта** – домен региона, для типа <mark style="color:yellow;">**\[site]**</mark>*
* ***Регион по умолчанию** – основной регион*

{% hint style="info" %}
**¹** Список областей/городов для выбора, это стандартный [справочник стран HostCMS](https://www.hostcms.ru/documentation/modules/shop/references/country/)
{% endhint %}

### Вкладка «Поля»

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FwE3FQv2rNwYlxN2TPyqW%2Fscreenshot-xn--80aff1anfpi.xn--p1ai-2022.02.07-20_03_03.png?alt=media&amp;token=48e85b80-d5cf-4cf0-8aaf-88a4a3e98e5f" alt="Вкладка «Поля»"></div>

### Вкладка «Цены»

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FCQLbnzwj9bIRvf0M9Z4X%2Fimage.png?alt=media&amp;token=c4635f32-e51f-4abc-8935-9b85efde4d91" alt="Вкладка «Цены»"></div>

* ***Тип наценки** — процент или сумма для региона*
* ***Величина наценки** - целое число*

### Вкладка «SEO»

<div data-full-width="true"><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2Frr051RZFznA4fUAUiHEV%2Fscreenshot-xn--80aff1anfpi.xn--p1ai-2022.02.07-20_06_33.png?alt=media&amp;token=75cbc32c-2e34-4017-8889-b4d07d85986e" alt="Вкладка «SEO»"></div>

* ***Заголовок (title)** — текст, который будет подставляться к концу всех title на всём сайта*
* ***Описание (description)** — текст, который будет подставляться к концу всех description на всём сайта*
* ***Ключевые слова (keywords)** — текст, который будет подставляться к концу всех keywords на всём сайта*
* ***Скрипты** — scripts, которые можно вывести для отдельного региона, если хотите вести раздельную статистику или отображать для текущего региона, для типа <mark style="color:yellow;">**\[site]**</mark>*
* ***robots.txt**\* — свой robots для отдельного региона с разными настройками, для типа <mark style="color:yellow;">**\[site]**</mark>*

{% hint style="warning" %}
\* если robots оставить не заполненный, система будет формировать его автоматически с общими настройками указанными в разделе **«Сайты» → Вкладка «robots.txt»** при этом заменяя директивы Host и Sitemap на домен текущего региона
{% endhint %}

{% hint style="danger" %}
Проверьте что в корне сайта нет файла **robots.txt**, иначе ничего не будет работать
{% endhint %}


# Настройки городов

Города в справочнике стран (:house: **Домой** / **Интернет-магазины** / **Справочник стран**) имеют следующие настройки

<div data-full-width="true"><figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FSpel0CBkRfyErIxtfRnT%2Fimage.png?alt=media&amp;token=92f4adec-49bb-417d-a1c6-4cbb14202ee9" alt=""><figcaption></figcaption></figure></div>

<img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FIFVRmzEDtDGX0D1FBbbj%2Fimage.png?alt=media&amp;token=f4382756-20dd-49e7-b899-87811e3d4eb3" alt="" data-size="line">**По умолчанию** - *город по умолчанию, если не удалось определить по GeoIP*\ <img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2FBeBXGjWTK2CSy8WpcVUD%2Fimage.png?alt=media&amp;token=04095de6-4923-4a7f-9e50-1fe22639b112" alt="" data-size="line">**Избранное** - *города фавориты в модальном окне предложенные пользователю в блоке «Например»*&#xB9;

<figure><img src="https://2369838666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mj-gwbYdQWRhuB0jULI%2Fuploads%2Fc17VPXCHFQ0uBm2N3G8f%2Fimage.png?alt=media&amp;token=38141a18-da85-402d-b010-786baf386a51" alt=""><figcaption></figcaption></figure>


# Настройка макета

{% hint style="danger" %}
Для дальнейших действий нужны минимальные знания работы с **макетами**, **XSL-шаблонами (далее - XSL)**, **типовыми динамическими страницами (далее - ТДС)** в HostCMS. Работу должен выполнять Ваш программист или администратор сайта.
{% endhint %}

### Вывод выбора региона/города для посетителей сайта

В главном макете Вашего сайта укажите css стили/js скрипты для работы модуля (обычно в пределах тега \<head>\</head>)

{% tabs %}
{% tab title="php Core\_Page" %}
{% code lineNumbers="true" fullWidth="true" %}

```php
<head>
	<!-- ... ваш код title и тд -->
	<?php
		Core_Page::instance()
			/* ... тут ваши css ... */
			->css('/hostcmsfiles/multiregion/css/style9999.css')
			->showCss();
	?>
	<?php
		Core_Page::instance()
			/* ... тут ваши js ... */
			/* все js multiregion должны быть подключены после jQuery */
			->js('/hostcmsfiles/multiregion/js/mp.autocomplete.js')
			->js('/hostcmsfiles/multiregion/js/script9999.js')
			->showJs();
	?>
</head>
```

{% endcode %}
{% endtab %}

{% tab title="html inline" %}
{% code fullWidth="true" %}

```php
<?php
	// GeoIP определяет текущий город и сохраняет в $_SESSION['ASMP_City']
	MultiRegion_GeoIp::getCountryLocationCity();
?>
<head>
	<!-- тут ваш код, css и js -->
	<link rel="stylesheet" type="text/css" href="/hostcmsfiles/multiregion/css/style9999.css" />
	
	<!-- все js multiregion должны быть подключены после jQuery -->
	<!--
		* !!!Раскомментировать один из двух скриптов подсказок городов
		* jquery-ui.min.js (с Widget Autocomplete) или jquery.autocomplete.min.js, 
		* если не один из них не был подключен ранее.
		* Рекомендуем jquery.autocomplete.min.js!
	-->
	<!--script src="/hostcmsfiles/multiregion/js/jquery-ui.min.js"></script-->
	<!--script src="/hostcmsfiles/multiregion/js/jquery.autocomplete.min.js"></script-->
	<script src="/hostcmsfiles/multiregion/js/script9999.js"></script>
</head>
```

{% endcode %}
{% endtab %}
{% endtabs %}

{% hint style="danger" %}
**Готовый пример можно увидеть в демо макете созданном после установки модуля**

в css и js файлах **9999** - Ваш уникальный номер файла при установке, посмотреть можно в папке **/hostcmsfiles/multiregion/\*/**, т.к. все файлы без уникального номера при обновлении будут заменяться на новые
{% endhint %}

В главном макете Ваше сайта, в том месте где хотите вывести выбор города/региона вставьте код (например в шапке сайта)

{% code lineNumbers="true" fullWidth="true" %}

```php
<?php
// Показ и выбор города
$MultiRegion_Controller_Show = new MultiRegion_Controller_Show(
	Core_Entity::factory('Site', CURRENT_SITE)
);
				
$MultiRegion_Controller_Show
	->xsl(Core_Entity::factory('Xsl')->getByName('Мультирегиональность'))
	->show();
?>
```

{% endcode %}

* ***favoriteCities** — устанавливает массив идентификаторов городов фаворитов для показа*
* ***regionsMode** — режим показа регионов, может принимать следующие значения:*&#x20;
  * *none - не показывать регионы (по умолчанию)*
  * *all - все регионы*
* ***directory** — (TRUE|FALSE) режим показа данных региона (телефоны, email, адреса), по умолчанию FALSE*

{% hint style="info" %}
\*при установке XSL шаблоны идут с датой текущей установки в названии, например: **Мультирегиональность \[05.06.2020 13:00:24]**
{% endhint %}

### Окно подтверждения города

Для появления окна подтверждения города нужно в Вашем подключённом скрипте `/hostcmsfiles/multiregion/js/scriptXXXXX.js` раскомментировать следующий код

<pre class="language-javascript" data-line-numbers data-full-width="true"><code class="lang-javascript"><strong>// 46 line: this.CurrentCity.data('hint') == true
</strong><strong>if(typeof this.getCookie('city_close') == "undefined" || this.CurrentCity.data('hint') == true)
</strong>{
	var _mrTooltips = $('.mr_tooltips');

	_mrTooltips.fadeIn();
}
</code></pre>

Окно подтверждения появляется только пока посетитель не подтвердит свой выбор (город хранится в куках) и если регионы не совпадают, например сайт определил посетителя из регионы 2, а он находится на странице/сайте региона 1, для типа cookie окно выбора не работает, если вы хотите его включить и для cookie то в **XSL-шаблоне** **"Мультирегиональность"** отредактируйте следующее:

{% code fullWidth="true" %}

```html
<!-- текущее -->
<!--<a href="javascript:;" onclick="$.getMRModal()" class="mr_current-city" data-path="{$path}" data-hint="false">
	<xsl:if test="$type != 'cookie' and current_multiregion_id and current_multiregion_id != current_shop_country_location_city_multiregion/multiregion/@id">
		<xsl:attribute name="data-hint">true</xsl:attribute>
	</xsl:if>
	<xsl:value-of select="current_city/city"/>
</a>-->
<!-- замнеить на этот код data-hint="true" -->
<a href="javascript:;" onclick="$.getMRModal()" class="mr_current-city" data-path="{$path}" data-hint="true">
	<xsl:value-of select="current_city/city"/>
</a>
```

{% endcode %}


# Работа с объектами ORM

Получить объект текущего региона или города можно в любом месте макета, ТДС или своем функционале следующий образом

{% code lineNumbers="true" fullWidth="true" %}

```php
<?php
    Core_Page::instance()->multiregion; // MultiRegion_Model Object
    Core_Array::getSession('ASMP_City', array()); // Array ASMP_City
?>
```

{% endcode %}

Вывод данных региона/города в макете/ТДС/PHP

{% code lineNumbers="true" fullWidth="true" %}

```php
<div>Телефон: <?php echo Core_Page::instance()->multiregion->getPhone(1); // 1 - ID типа телефона ?></div>
<div>Адрес: <?php echo Core_Page::instance()->multiregion->getAddress(1); // 1 - ID типа адреса ?></div>
<div>Полный Адрес: <?php echo Core_Page::instance()->multiregion->getAddress(1, TRUE); // 1 - ID типа адреса, TRUE - полный адрес Индекс, Страна, Область, Город, Адрес, FALSE - только Адрес ?></div>
<div>Email: <?php echo Core_Page::instance()->multiregion->getEmail(1); // 1 - ID типа Email ?></div>
```

{% endcode %}

Подстановки названия текущего региона/города в макете/ТДС/PHP со склонением

**Morphos\_Geographical::getCase(**$name, $cas&#x65;**)**

{% code lineNumbers="true" fullWidth="true" %}

```php
<?php
    // Екатеринбургу
    echo Morphos_Geographical::getCase(Core_Page::instance()->multiregion->name, "дательный");
    // Екатеринбурге
    echo Morphos_Geographical::getCase(Core_Array::get(Core_Array::getSession('ASMP_City', array()), 'city'), "родительный");
?>
```

{% endcode %}

Вывести домен текущего регион&#x430;*, для типа <mark style="color:yellow;">**\[site]**</mark>*

{% code lineNumbers="true" fullWidth="true" %}

```php
<?php
    $oMultiRegion = Core_Page::instance()->multiregion;
    echo $oMultiRegion->Site_Alias->name; // msk.site.ru
?>
```

{% endcode %}

Вывести путь текущего регион&#x430;*, для типа <mark style="color:yellow;">**\[url]**</mark>*

{% code lineNumbers="true" fullWidth="true" %}

```php
<a href="/<?php echo Core_Page::instance()->multiregion->getPath() ?>politics/">Политика конфиденциальности</a>
```

{% endcode %}




---

[Next Page](/llms-full.txt/1)

