> For the complete documentation index, see [llms.txt](https://support.morozovpimnev.ru/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://support.morozovpimnev.ru/megapost/nastroiki-maketa.md).

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

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