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

Для дальнейших действий нужны минимальные знания работы с макетами, XSL-шаблонами (далее - XSL), типовыми динамическими страницами (далее - ТДС) в HostCMS. Работу должен выполнять Ваш программист или администратор сайта.

Вывод выбора региона/города для посетителей сайта

В главном макете Вашего сайта укажите функцию MultiRegion_GeoIp::getCountryLocationCity() (php код перед <head>) и css стили/js скрипты для работы модуля (обычно в пределах тега <head></head>)
MultiRegion_GeoIp::getCountryLocationCity() - для автоопределение города посетителя и записи в сессию (можно не указывать)
php Core_Page
html inline
1
<?php
2
// GeoIP определяет текущий город и сохраняет в $_SESSION['ASMP_City']
3
MultiRegion_GeoIp::getCountryLocationCity();
4
?>
5
<head>
6
<!-- ... ваш код title и тд -->
7
<?php
8
Core_Page::instance()
9
/* ... тут ваши css ... */
10
->css('/hostcmsfiles/multiregion/css/style9999.css')
11
->showCss();
12
?>
13
<?php
14
Core_Page::instance()
15
/* ... тут ваши js ... */
16
/* все js multiregion должны быть подключены после jQuery */
17
->js('/hostcmsfiles/multiregion/js/mp.autocomplete.js')
18
->js('/hostcmsfiles/multiregion/js/script9999.js')
19
->showJs();
20
?>
21
</head>
<?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>
Готовый пример можно увидеть в демо макете созданном после установки модуля
в css и js файлах 9999 - Ваш уникальный номер файла при установке, посмотреть можно в папке /hostcmsfiles/multiregion/*/, т.к. все файлы без уникального номера при обновлении будут заменяться на новые
В главном макете Ваше сайта, в том месте где хотите вывести выбор города/региона вставьте код (например в шапке сайта)
1
<?php
2
// Показ и выбор города
3
$MultiRegion_Controller_Show = new MultiRegion_Controller_Show(
4
Core_Entity::factory('Site', CURRENT_SITE)
5
);
6
7
$MultiRegion_Controller_Show
8
->xsl(Core_Entity::factory('Xsl')->getByName('Мультирегиональность'))
9
->show();
10
?>
  • favoriteCities — устанавливает массив идентификаторов городов фаворитов для показа
  • regionsMode — режим показа регионов, может принимать следующие значения:
    • none - не показывать регионы (по умолчанию)
    • all - все регионы
  • directory — (TRUE|FALSE) режим показа данных региона (телефоны, email, адреса), по умолчанию FALSE
*при установке XSL шаблоны идут с датой текущей установки в названии, например: Мультирегиональность [05.06.2020 13:00:24]

Окно подтверждения города

Для появления окна подтверждения города нужно в Вашем подключённом скрипте /hostcmsfiles/multiregion/js/scriptXXXXX.js раскомментировать следующий код
1
// 46 line: this.CurrentCity.data('hint') == true
2
if(typeof this.getCookie('city_close') == "undefined" || this.CurrentCity.data('hint') == true)
3
{
4
var _mrTooltips = $('.mr_tooltips');
5
6
_mrTooltips.fadeIn();
7
}
Окно подтверждения появляется только пока посетитель не подтвердит свой выбор (город хранится в куках) и если регионы не совпадают, например сайт определил посетителя из регионы 2, а он находится на странице/сайте региона 1, для типа cookie окно выбора не работает, если вы хотите его включить и для cookie то в XSL-шаблоне "Мультирегиональность" отредактируйте следующее:
<!-- текущее -->
<!--<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>