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

{% 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 %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://support.morozovpimnev.ru/megapost/nastroiki-maketa.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
