• Открыт набор редакторов!

    получи безграничный доступ к нашим файлам, скриптам и инфокурсам БЕСПЛАТНО!!!

     

    Подробнее

1C-Битрикс - Улучшенный выбор местоположения с определением по IP, замена контента в зависимости от города

Trinixy

Команда форума
Администратор
Сообщения
2.798
Реакции
1.401
Модуль автоматически определяет местоположение пользователя по его IP и предоставляет возможность выбора города из списка в удобном и стильном всплывающем окне.

Основные возможности:
— доступен для всех редакций;
— автозаполнение местоположения, в том числе и в оформлении заказа;
— попап подтверждения выбранного города, с возможностью изменить установленный город. Можно показывать только при первом заходе, а можно пока не закроет посетитель. Или вообще не показывать;
— богатые настройки кастомизацим окон, под стилистику вашего сайта;
— возможность подмены данных на основе определенного города;
— отображение региона у городов с одинаковыми названиями;
— отображение «избранных» городов:
— удобное api для отображение информации элементов иноблока в зависимости от местоположения;
— инфоблок (Местоположения -> Контент), элементы которого можно привязать к имени и id местоположения, а так же к id сайта. Соответствующий элемент легко получить с помощью api модуля. Описание api на вкладке «Установка»;
— ядро модуля на d7;
— поддержка композита.

Данные о местоположении автоматически вставляются в поле с типом «Местоположение» в процессе оформления заказа. Так же модуль может заменить стандартный шаблон компонента выбора местоположения на свой, гораздо более удобный.

Контент с привязкой к местоположению — функции для CEO оптимизации
С помощью нашего модуля можно отображать контент привязанный к местоположению пользователя сайта.

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


Решение поддерживает передачу в компонент оформления заказа выбранный город сразу при загрузке страницы — выбранный город сразу применяется для показа вариантов доставки и оплаты с ограничениями по местоположениям.

Пример: При заходе пользователя на сайт город автоматически определился, добавляем товар в корзину и переходим в оформление заказа. На странице оформления заказа будет указан определенный город и доступные для города способы доставки и оплаты.

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


Модуль работает на всех редакциях!
Для редакций «Бизнес» и «Малый бизнес» список населенных пунктов берется из Местоположений модуля «Интернет-магазин». На младших редакциях по-умолчанию выводится список городов для России и Украины из внутренней базы решения.

Установка

Решение устанавливается стандартно. После установки Вы будете перенаправлены в интерфейс настройки модуля.

Для корректной работы модуля на редакциях «Бизнес» и «Малый бизнес» необходимо, чтобы были загружены местоположения в базу модуля «Интернет-магазин» Вы не можете видеть эту ссылку.


Подключение компонента улучшенного выбора местоположений

Вы можете вставить ссылку на выбор местоположения города в шапку сайта. Для этого в нужном месте шаблона добавьте вызов компонента:
<?$APPLICATION->IncludeComponent("twofingers:location","",Array());?>
Для
вашего удобства, чтобы вам не приходилось вручную править шаблон
компонента, мы предусмотрели поля для классов, которые будут присвоены
ссылкам вызова всплывающего окна, если вы захотите их кастомизировать.
Если
вы используете модифицированный компонент sale.order.ajax, для того,
чтобы использовать улучшенный выбор местоположения при оформлении
заказа, необходимо для компонента sale.ajax.locations прописать шаблон
tf_location.

Вызов пользовательской javascript-функции

В
настройках модуля можно вписать JS функцию, которая будет выполняться
при выборе города пользователем. В её названии можно использовать
плейсхолдеры:
#TF_LOCATION_CITY_ID# - ID выбранного города
#TF_LOCATION_CITY_NAME# - Имя выбранного города

Например: handleMePlease('#TF_LOCATION_CITY_ID#', '#TF_LOCATION_CITY_NAME#');

Обработка javascript-события onTFLocationSetLocation

Также после выбора местоположения генерируется javascript-событие "onTFLocationSetLocation", в которое передаётся DOM-объект выбранного местоположения. Пример обработчика:
BX.addCustomEvent("onTFLocationSetLocation", function(location)
{
var $location = $(location);

console.log('location id: ' + $location.data('id'));
console.log('location name: ' + $location.data('name'));
console.log('location region name: ' + $location.data('region-name'));
});

Получение выбранного местоположения на сайте

Настройки
выбранного местоположения сохраняются в сессию или куки (в зависимости
от настроек) и могут быть получены с помощью класса-обертки
TwoFingers\Location\Storage и использованы в других местах:
use TwoFingers\Location\Storage;

if (CModule::IncludeModule('twofingers.location')) {
echo Storage::getLocationId(); // ID местоположения (из модуля "Интернет-магазин", если удалось соотнести, иначе из базы Sypex Geo)
echo Storage::getLocationName(); // название местоположения
echo Storage::getRegionId(); // ID региона из базы Sypex Geo
echo Storage::getRegionName(); // название региона
echo Storage::getCountryId(); // ID страны из базы Sypex Geo
echo Storage::getCountryName(); // название страны
}
Для композитного режима:
use TwoFingers\Location\Storage;

if (CModule::IncludeModule('twofingers.location')) {

$frame = new \Bitrix\Main\Page\FrameBuffered("my_dynamic_area");
$frame->begin();

echo Storage::getLocationId(); // ID местоположения (из модуля "Интернет-магазин", если удалось соотнести, иначе из базы Sypex Geo)
echo Storage::getLocationName(); // название местоположения

...

$frame->end();
}

Для работы с текущим местоположением предусмотрен класс TwoFingers\Location\Current:
use TwoFingers\Location\Current;
use TwoFingers\Location\Storage;

if (CModule::IncludeModule('twofingers.location')) {

$current = Current::getInstance(); // получаем текущее местоположение пользователя
echo $current->getLocationId(); // ID местоположения (из модуля "Интернет-магазин", если удалось соотнести, иначе из базы Sypex Geo)
echo $current->getLocationName(); // название местоположения
echo $current->getRegionId(); // ID региона из базы Sypex Geo
echo $current->getCountryId(); // ID страны из базы Sypex Geo
echo $current->getCountryName(); // название страны

var_dump($current->getLocation()); // полная информация о местоположении, полученная из базы SypexGeo


Storage::setFromCurrent($current); // записываем текущее местоположение в сессию
}

Так же есть возможность
получить информацию не только о текущем, но и о любом другом
местоположении. Для этого в метод
TwoFingers\Location\Current::getInstance() первым аргументом необходимо
передать ip-адрес.


Получение информации из инфоблока в зависимости от местоположения

При
установке модуля будет создан инфоблок "Контент" в типе
"Местоположения". В этом инфоблоке Вы можете создавать элементы,
привязанные в конкретному местоположению по имени или ид. Так же
возможна привязка к отдельному сайту.

Обратите внимание, что с
данным инфоблоком вы можете работать так же, как и со всеми остальными:
заполнять все доступные поля, добавлять и удалять свойства (кроме
системных LOCATION_ID и SITE_ID). В возвращаемом элементе будет
находиться вся доступная информация. Информация о свойствах будет
находиться по ключу 'PROPERTIES'.

Например, необходимо менять телефон в шапке сайта в зависимости от города:

use TwoFingers\Location\Current;
use TwoFingers\Location\Iblock\Content;

if (CModule::IncludeModule('twofingers.location')) {
$current = Current::getInstance(); // получаем текущее местоположение пользователя
$element = Content::getByCurrent($current) // получаем элемент, привязанный к текущему местоположению

echo $element['PROPERTY']['PHONE']['VALUE']; // выводим телефон
}
Обратите внимание, что метод
TwoFingers\Location\Iblock\Content\getByCurrent сначала пытается найти
элемент по id местоположения, в случае неудачи - по имени местоположения
и в случае второй неудачи, возвращает дефолтное значение (элемент с
кодом default). Вторым аргументом можно передать id сайта. В этом случае
у элемента инфоблока также должно быт заполнено свойство SITE_ID.


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

Допустим,
нам необходимо менять телефон в шапке сайта в зависимости от города.
Привяжемся к названию города. Будем показывать один телефон для Москвы и
другой телефон для всех остальных городов.
use TwoFingers\Location\Storage;

if (\CModule::IncludeModule('twofingers.location'))
{
if (Storage::getLocationName() == 'Москва')
echo "+7 (495) 055-65-19";
else
echo "8 800 500 40 30";
}
Для композитного режима:

use TwoFingers\Location\Storage;

if (\CModule::IncludeModule('twofingers.location'))
{
$frame = new \Bitrix\Main\Page\FrameBuffered("my_dynamic_area");
$frame->begin();

if (Storage::getLocationName() == 'Москва')
echo "+7 (495) 055-65-19";
else
echo "8 800 500 40 30";

$frame->end();
}


Продажник
Скрытое содержимое. Вам нужно войти или зарегистрироваться.
Скачать
Скрытое содержимое. Вам нужно войти или зарегистрироваться.
 

Похожие темы


Сверху Снизу