Модуль автоматически определяет местоположение пользователя по его IP и предоставляет возможность выбора города из списка в удобном и стильном всплывающем окне.
Основные возможности:
— доступен для всех редакций,
—автоматическая переадресацияна домены/поддомены, в том числе и на сторонние домены,
—автозаполнение местоположения, в том числе и в оформлении заказа,
— адаптивное окно выбора городов с широкими настройками логики работы,
— автоматическоеобновление базыIP адресов, а также — по кнопке в настройке модуля,
— попап подтверждения выбранного города, с возможностью изменить установленный город. Можно показывать только при первом заходе, а можно пока не закроет посетитель. Или вообще не показывать,
— богатыенастройки кастомизацииокон, под стилистику вашего сайта,
— возможностьподмены данныхна основе определенного города,
— отображение региона у городов с одинаковыми названиями,
— отображение «избранных» городов в нескольких местах модального окна на выбор,
— автозамена плейсхолдеров на текущее местоположение и привязанный контент,
—удобное apiдля отображение информации элементов иноблока в зависимости от местоположения,
—отдельный инфоблок(Местоположения -< Контент), элементы которого можно привязать к имени и id местоположения, а так же к id сайта. Что позволяет отображать любые геозависимые данные, а так же привязывать их к отдельным сайтам. Соответствующий элемент легко получить с помощью api модуля. Описание api на вкладке «Установка»,
— ядро модуля на d7,
— поддержка композита.
Данные о местоположении автоматически вставляются в поле с типом «Местоположение» в процессе оформления заказа. Так же модуль может заменить стандартный шаблон компонента выбора местоположения на свой, гораздо более удобный.
Контент с привязкой к местоположению — функции для CEO оптимизации
С помощью нашего модуля можно отображать контент привязанный к местоположению пользователя сайта.
Для каждого города в отдельности вы можете прописать необходимые данные, тайтлы, дескрипшены, телефоны, варианты доставок и другие необходимые геозависимые данные.
Решение поддерживает передачу в компонент оформления заказа выбранный город сразу при загрузке страницы — выбранный город сразу применяется для показа вариантов доставки и оплаты с ограничениями по местоположениям.
Пример:При заходе пользователя на сайт город автоматически определился, добавляем товар в корзину и переходим в оформление заказа. На странице оформления заказа будет указан определенный город и доступные для города способы доставки и оплаты.
Модуль работает на основе базы данных Sypex Geo и не делает запросы на сторонние сервисы, за счёт чего скорость определения местоположения гораздо выше. Также все запросы к базе данных местоположений кешируются, что тоже существенно увеличивает скорость работы.
Модуль работает на всех редакциях!
Для редакций «Бизнес» и «Малый бизнес» список населенных пунктов берется из Местоположений модуля «Интернет-магазин». На младших редакциях по-умолчанию выводится список городов для России и Украины из внутренней базы решения.
Внимание! Если был произведен переход на Местоположения 2.0, тоизбранные городанастраиваются непосредственно в модуле «Интернет Магазин» в настройках местоположений. |
Для покупки программного продукта выберите понравившийся товар и добавьте его в корзину. Далее перейдите в Корзину и нажмите на «Оформить заказ» или «Купить в 1 клик».
Когда оформляете быстрый заказ, укажите ФИО, телефон и e-mail. Вам перезвонит менеджер и уточнит условия заказа. По результатам разговора вам придет подтверждение оформления товара на почту и ссылка на оплату.
При оформлении заказа в стандартном режиме, заполните полностью форму по последовательным этапам: выберите тип плательщика, заполните все обязательные поля, выберите способ оплаты и нажмите кнопку «Оформить заказ».
Безналичный расчет для юридических лиц
Электронная версия счета для оплаты будет сформирована автоматически на финальной странице после создания заказа. Вы также можете запросить копию счета на свой электронный адрес. Счет необходимо оплатить в любом выбранном вами коммерческом банке в течение 5 банковских дней после оформления заказа.
Безналичный расчет для физических лиц
Вы можете оплатить заказ онлайн на сайте при помощи банковской карты или Яндекс.Деньги. Также Вы можете получить на свой электронный адрес счет с реквизитами для оплаты. Его необходимо распечатать и оплатить в любом выбранном вами коммерческом банке в течение 5 банковских дней после оформления заказа.
Уважаемые покупатели! Обращаем ваше внимание, что в соответствии с пп. 26 п. 2 ст. 149 НК РФ реализация программных продуктов осуществляется без НДС.
1. Приобретенные программные продукты поставляются в виде цифро-буквенного кода. Используя код, вы сможете установить продукт на хостинг. Код приходит на указанный в заказе адрес электронной почты.
2. Время от момента получения оплаты до момента отправки кода занимает некоторое время. В течение этого периода выполняется оформление приобретенной продукции.
3. Уважаемые покупатели! Обращаем ваше внимание, что дополнительная задержка в поставке лицензионных ключей может быть вызвана некорректно указанным адресом электронной почты. Просим вас внимательно проверять ваши персональные данные при оформлении заказа.
Для установки приобретенных программных продуктов, потребуется:
- CSM 1С-Битрикс: Управление сайтом.
- Домен (адрес сайта).
- Хостинг (дисковое пространство для сайта).
Мы рекомендуем купить домен и приобрести хостинг для сайта на Битрикс, воспользовавшись промокодом B1EF-C661-15E1-8773 на скидку 5% при покупке.
Если вы испытываете сложности в плане активации и установке приобретенных продуктов, Вы можете воспользоваться помощью наших специалистов на платной основе, связавшись с нами любым удобным способом.
<p><b>Установка</b><br>Решение устанавливается стандартно. После установки Вы будете перенаправлены в интерфейс настройки модуля.<br>Для корректной работы модуля на редакциях «Бизнес» и «Малый бизнес» необходимо, чтобы были загружены местоположения в базу модуля «Интернет-магазин» http://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=42&LESSON_ID=3074&LESSON_PATH=3912.4580.4828.3074#load<br><b>Подключение компонента улучшенного выбора местоположений<br></b><br>Вы можете вставить ссылку на выбор местоположения города в шапку сайта. Для этого в нужном месте шаблона добавьте вызов компонента:<p><table><tbody><tr><td><p>IncludeComponent('twofingers:location','',Array()),?></td></tr></tbody></table></p>Для вашего удобства, чтобы вам не приходилось вручную править шаблон компонента, мы предусмотрели поля для классов, которые будут присвоены ссылкам вызова всплывающего окна, если вы захотите их кастомизировать.<br><p><table><tbody><tr><td>Если вы используете модифицированный компонент sale.order.ajax, для того, чтобы использовать улучшенный выбор местоположения при оформлении заказа, необходимо для компонента sale.ajax.locations прописать шаблон tf_location.</td></tr></tbody></table></p><br><b>Вызов пользовательской javascript-функции</b><br>В настройках модуля можно вписать JS функцию, которая будет выполняться при выборе города пользователем. В её названии можно использовать плейсхолдеры:<p><table><tbody><tr><td><p>#TF_LOCATION_CITY_ID# - ID выбранного города #TF_LOCATION_CITY_NAME# - Имя выбранного города Например: handleMePlease('#TF_LOCATION_CITY_ID#', '#TF_LOCATION_CITY_NAME#'),</td></tr></tbody></table></p><br><b>Обработка javascript-события</b><b>onTFLocationSetLocation</b><br>Также после выбора местоположения генерируется javascript-событие 'onTFLocationSetLocation', в которое передаётся DOM-объект выбранного местоположения. Пример обработчика:<br><p><table><tbody><tr><td><p>BX.addCustomEvent('onTFLocationSetLocation', function(response) { if (response.hasOwnProperty('location')) { console.log(response.location), } if (response.hasOwnProperty('content')) { console.log(response.content), } }),</td></tr></tbody></table></p><br><b>Получение выбранного местоположения на сайте<br></b><br>Выбранное местоположение сохраняется в сессию или куки (в зависимости от настроек) и может быть получено и использовано в любых местах сайта. Например, выведем регион и стран для текущего местоположения:<br><p><table><tbody><tr><td><p>use Bitrix\Main\Composite\BufferArea, use Bitrix\Main\Loader, use TwoFingers\Location\Entity\Location, use TwoFingers\Location\Factory\LocationFactory, $frame = new BufferArea('my_dynamic_area'), // для композитного режима $frame->begin(), // для композитного режима if (Loader::includeModule('twofingers.location') && $location = LocationFactory::buildByStorage()) { echo $location->getId() . '<br>', // ID местоположения echo $location->getCode() . '<br>', // Код местоположения echo $location->getName() . '<br>', // название местоположения if ($location->hasParent()) { $parents = LocationFactory::buildParentsCollection($location), /** @var Location $parent */ foreach ($parents as $parent) { // выводим только регион и страну if (in_array($parent->getType(), [Location::TYPE_REGION, Location::TYPE_COUNTRY])) { echo $parent->getId() . '<br>', // ID родительского местоположения echo $parent->getCode() . '<br>', // Код родительского местоположения echo $parent->getName() . '<br>', // название родительского местоположения } } } } $frame->end(), // для композитного режима</td></tr></tbody></table></p>Получение<b>текущего местоположения</b>:<p><table><tbody><tr><td><p>use Bitrix\Main\Composite\BufferArea, use Bitrix\Main\Loader, use TwoFingers\Location\Factory\LocationFactory, $frame = new BufferArea('my_dynamic_area'), // для композитного режима $frame->begin(), // для композитного режима if (Loader::includeModule('twofingers.location')) { $location = LocationFactory::buildCurrent(), if ($location) { echo $location->getName(), } } $frame->end(), // для композитного режима</td></tr></tbody></table></p>Получение<b>местоположения по ip</b>:<p><table><tbody><tr><td><p>use Bitrix\Main\Composite\BufferArea, use Bitrix\Main\Loader, use TwoFingers\Location\Factory\LocationFactory, $frame = new BufferArea('my_dynamic_area'), // для композитного режима $frame->begin(), // для композитного режима if (Loader::includeModule('twofingers.location')) { $location = LocationFactory::buildByIp('5.255.255.88'), //yandex.ru if ($location) { echo $location->getName(), } } $frame->end(), // для композитного режима</td></tr></tbody></table></p>Получение<b>местоположения по умолчанию</b>для текущего сайта:<b><br></b><p><table><tbody><tr><td><p>use Bitrix\Main\Composite\BufferArea, use Bitrix\Main\Loader, use TwoFingers\Location\Factory\LocationFactory, $frame = new BufferArea('my_dynamic_area'), // для композитного режима $frame->begin(), // для композитного режима if (Loader::includeModule('twofingers.location')) { $location = LocationFactory::buildDefault(), if ($location) { echo $location->getName(), } } $frame->end(), // для композитного режима</td></tr></tbody></table></p><br><b>Склонение названия местоположения по падежам (бета)</b><br>Чтобы получить склонение названия местоположения в выбранном падеже, надо передать соответствующую константу в метод getName() местоположения.<br><p><table><tbody><tr><td><p>$location = \TwoFingers\Location\Factory\LocationFactory::buildByStorage(), echo $location->getName(), // Москва echo $location->getName(Location::CASE_ROD), // Москвы echo $location->getName(Location::CASE_DAT), // Москве echo $location->getName(Location::CASE_VIN), // Москву echo $location->getName(Location::CASE_TVOR), // Москвой echo $location->getName(Location::CASE_PRED), // Москве</td></tr></tbody></table></p><b><br></b><br><b>Получение информации из инфоблока в зависимости от местоположения</b><br>При установке модуля будет создан инфоблок 'Контент' в типе 'Местоположения'. В этом инфоблоке Вы можете создавать элементы и привязывать их к местоположениям. Обратите внимание, что с данным инфоблоком вы можете работать так же, как и со всеми остальными: заполнять все доступные поля, добавлять и удалять свойства (кроме системных LOCATION_ID и SITE_ID). Можно обращаться к нему как к обычному инфоблоку, а можно через специальную сущность:<br><p><table><tbody><tr><td><p>use Bitrix\Main\Composite\BufferArea, use Bitrix\Main\Loader, use TwoFingers\Location\Factory\ContentFactory, use TwoFingers\Location\Factory\LocationFactory, $frame = new BufferArea('my_dynamic_area'), // для композитного режима $frame->begin(), // для композитного режима if (Loader::includeModule('twofingers.location') && $location = LocationFactory::buildByStorage()) { $content = ContentFactory::buildByLocation($location), if ($content) { echo $content->getPhone() . '<br>', // вывод значения свойства PHONE инфоблока 'Местоположения' ->'Контент', магический метод echo $content->getPropertyValue('PHONE') . '<br>', // тоже самое без магии echo $content->getPreviewText() . '<br>', // вывод анонса, магический метод echo $content->getFieldValue('PREVIEW_TEXT') . '<br>', // анонс без магии echo $content->getDomain(), // домен для перенаправления var_dump($content->getPriceTypes()), // получить доступные типы цен (только для старших редакций Битрикс) var_dump($content->getStores()), // получить доступные склады (только для старших редакций Битрикс) var_dump($content->getData()), // все поля и свойства привязанного элемента } } $frame->end(), // для композитного режима</td></tr></tbody></table></p><p><table><tbody><tr><td><ul><li>Контент, к которому привязано местоположение по умолчанию, также будет выводиться по умолчанию.<br></li><li>Сначала выводит контент по умолчанию для текущего сайта, затем, если таковой не найден, контент, к которому привязано местоположение по-умолчанию для всех сайтов.<br></li></ul></td></tr></tbody></table></p><br><b>Настройка автоматического редиректа на домены/поддомены для выбранных местоположений<br></b><br>Редирект можно настроить для метоположений, добавленных в инфоблок 'Контент' (тип 'Местоположения'). Для этого элементу иноблока необходимо добавить домен в свойство 'Домен'.<p><table><tbody><tr><td>Элемент инфоблока обязательно должен быть связан с местоположением через свойство 'ИД местоположения' или название.</td></tr></tbody></table></p>Предварительно желаемые домены необходимо добавить в инфоблок 'Домены' (тип 'Местоположения').<br><b>Получение домена для перенаправления для местоположения</b><p><table><tbody><tr><td><p>use Bitrix\Main\Composite\BufferArea, use Bitrix\Main\Loader, use TwoFingers\Location\Factory\LocationFactory, $frame = new BufferArea('my_dynamic_area'), // для композитного режима $frame->begin(), // для композитного режима if (Loader::includeModule('twofingers.location') && $location = LocationFactory::buildByStorage()) { echo $location->getDomain(), } $frame->end(), // для композитного режима</td></tr></tbody></table></p><p><table><tbody><tr><td>Редирект между доменами/поддоментам может быть заблокирован политикой CORS на сайте. Необходимо настроить эту политику самостоятельно!</td></tr></tbody></table></p><br><b>Пример работы с переменными без использования инфоблока<br></b><b><br></b>Допустим, нам необходимо менять телефон в шапке сайта в зависимости от города. Привяжемся к названию города. Будем показывать один телефон для Москвы и другой телефон для всех остальных городов.<br><p><table><tbody><tr><td><p>use Bitrix\Main\Composite\BufferArea, use Bitrix\Main\Loader, use TwoFingers\Location\Factory\LocationFactory, $frame = new BufferArea('my_dynamic_area'), // для композитного режима $frame->begin(), // для композитного режима if (Loader::includeModule('twofingers.location') && $location = LocationFactory::buildByStorage()) { if ($location->getName() == 'Москва') echo '+7 (495) 055-65-19', else echo '8 800 500 40 30', } $frame->end(), // для композитного режима</td></tr></tbody></table></p><br><b>Замена плейсхолдеров</b><br>При включенной опции 'Заменять плейсхолдеры' в настройке модуля, будут заменены:<br><ul><li>#location_name#, #city_name# — название текущего местоположения,<br></li><li>#region_name# — название текущего региона, области, края, республики и т.п.,<br></li><li>#country_name# — название текущей страны,<br></li><li>#content_%код%# — значение поля или свойства с кодом %код% из привязанного элемента контента. Например, #content_preview_text# будет заменено на анонс, а #content_phone# — на значение свойства PHONE.<br></li></ul>Замена производится как в мета-тегах, так и в любом другом месте страницы.<br><b>Обработка события afterLocationDetect<br></b><br>Событие afterLocationDetect позволяет модифицировать местоположение после того, как оно было определено автоматически.<br>Пример обработчика события, размещенного в файле init.php:<br><p><table><tbody><tr><td><p>use Bitrix\Main\EventManager, use TwoFingers\Location\Factory\LocationFactory, use TwoFingers\Location\Storage, EventManager::getInstance()->addEventHandler('twofingers.location', 'afterLocationDetect', function (){ $location = LocationFactory::buildByStorage(), if ($location->getName() == 'Троицк') { $newLocation = LocationFactory::buildByName('Москва'), if ($newLocation) { Storage::setLocation($newLocation), } } }),</td></tr></tbody></table></p>