Улучшенный выбор местоположения с определением по IP, замена контента в зависимости от города
Если вы используете модифицированный компонент sale.order.ajax, для того, чтобы использовать улучшенный выбор местоположения при оформлении заказа, необходимо для компонента sale.ajax.locations прописать шаблон tf_location.Вызов пользовательской javascript-функции В настройках модуля можно вписать JS функцию, которая будет выполняться при выборе города пользователем. В её названии можно использовать плейсхолдеры:[CODE]#TF_LOCATION_CITY_ID# - ID выбранного города #TF_LOCATION_CITY_NAME# - Имя выбранного города Например: handleMePlease('#TF_LOCATION_CITY_ID#', '#TF_LOCATION_CITY_NAME#');[/CODE] Обработка javascript-события onTFLocationSetLocation Также после выбора местоположения генерируется javascript-событие "onTFLocationSetLocation", в которое передаётся DOM-объект выбранного местоположения. Пример обработчика: [CODE]BX.addCustomEvent("onTFLocationSetLocation", function(response) { if (response.hasOwnProperty('location')) { console.log(response.location); } if (response.hasOwnProperty('content')) { console.log(response.content); } });[/CODE] Получение выбранного местоположения на сайте Выбранное местоположение сохраняется в сессию или куки (в зависимости от настроек) и может быть получено и использовано в любых местах сайта. Например, выведем регион и стран для текущего местоположения: [CODE]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() . '
'; // ID местоположения echo $location->getCode() . '
'; // Код местоположения echo $location->getName() . '
'; // название местоположения 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() . '
'; // ID родительского местоположения echo $parent->getCode() . '
'; // Код родительского местоположения echo $parent->getName() . '
'; // название родительского местоположения } } } } $frame->end(); // для композитного режима [/CODE]Получение текущего местоположения:[CODE]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(); // для композитного режима[/CODE]Получение местоположения по ip:[CODE]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(); // для композитного режима[/CODE]Получение местоположения по умолчанию для текущего сайта: [CODE]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(); // для композитного режима[/CODE] Склонение названия местоположения по падежам (бета) Чтобы получить склонение названия местоположения в выбранном падеже, надо передать соответствующую константу в метод getName() местоположения. [CODE]$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); // Москве[/CODE] Получение информации из инфоблока в зависимости от местоположения При установке модуля будет создан инфоблок "Контент" в типе "Местоположения". В этом инфоблоке Вы можете создавать элементы и привязывать их к местоположениям. Обратите внимание, что с данным инфоблоком вы можете работать так же, как и со всеми остальными: заполнять все доступные поля, добавлять и удалять свойства (кроме системных LOCATION_ID и SITE_ID). Можно обращаться к нему как к обычному инфоблоку, а можно через специальную сущность: [CODE]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() . '
'; // вывод значения свойства PHONE инфоблока "Местоположения" -> "Контент", магический метод echo $content->getPropertyValue('PHONE') . '
'; // тоже самое без магии echo $content->getPreviewText() . '
'; // вывод анонса, магический метод echo $content->getFieldValue('PREVIEW_TEXT') . '
'; // анонс без магии echo $content->getDomain(); // домен для перенаправления var_dump($content->getPriceTypes()); // получить доступные типы цен (только для старших редакций Битрикс) var_dump($content->getStores()); // получить доступные склады (только для старших редакций Битрикс) var_dump($content->getData()); // все поля и свойства привязанного элемента } } $frame->end(); // для композитного режима [/CODE]
Настройка автоматического редиректа на домены/поддомены для выбранных местоположений Редирект можно настроить для метоположений, добавленных в инфоблок "Контент" (тип "Местоположения"). Для этого элементу иноблока необходимо добавить домен в свойство "Домен".
- Контент, к которому привязано местоположение по умолчанию, также будет выводиться по умолчанию.
- Сначала выводит контент по умолчанию для текущего сайта, затем, если таковой не найден, контент, к которому привязано местоположение по-умолчанию для всех сайтов.
Элемент инфоблока обязательно должен быть связан с местоположением через свойство "ИД местоположения" или название.Предварительно желаемые домены необходимо добавить в инфоблок "Домены" (тип "Местоположения"). Получение домена для перенаправления для местоположения[CODE]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(); // для композитного режима[/CODE]
Редирект между доменами/поддоментам может быть заблокирован политикой CORS на сайте. Необходимо настроить эту политику самостоятельно!Пример работы с переменными без использования инфоблока Допустим, нам необходимо менять телефон в шапке сайта в зависимости от города. Привяжемся к названию города. Будем показывать один телефон для Москвы и другой телефон для всех остальных городов. [CODE]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(); // для композитного режима[/CODE] Замена плейсхолдеров При включенной опции "Заменять плейсхолдеры" в настройке модуля, будут заменены:
- #location_name#, #city_name# — название текущего местоположения;
- #region_name# — название текущего региона, области, края, республики и т.п.;
- #country_name# — название текущей страны; #content_%код%# — значение поля или свойства с кодом %код% из привязанного элемента контента. Например, #content_preview_text# будет заменено на анонс, а #content_phone# — на значение свойства PHONE.
Мы предлагаем два безопасных способа оплаты, чтобы вы могли выбрать наиболее удобный для вашей компании или личного пользования.
1. Онлайн-оплата банковской картой (Интернет-эквайринг)
- Мгновенное списание средств.
- Принимаются карты Visa, MasterCard, МИР.
- Платеж защищен современными протоколами шифрования (3-D Secure). Данные вашей карты не хранятся на нашем сервере и не передаются третьим лицам.
- После успешного списания лицензия будет выпущена в срок до 24 часов и отправлена на указанную вами электронную почту (или поступит в Личный кабинет).
2. Оплата по безналичному расчету (по счету)
- Идеальный вариант для юридических лиц и бюджетных организаций.
- Мы выставим официальный счет на оплату с выделенным НДС (или без, в зависимости от вашей системы налогообложения).
- Срок оплаты по счету — 3 рабочих дня.
- После поступления средств на наш расчетный счет мы подготовим для вас полный пакет закрывающих документов (Акт, УПД или ТОРГ-12) и направим их электронно или курьером.
Не готовы платить сразу? Купите лицензию в рассрочку!
Теперь дорогие программные продукты доступны без удара по бюджету. Мы подключили оплату через Т-Банк — вы можете оформить покупку частями, без лишних справок и походов в банк.
Два варианта на выбор:
- Рассрочка — вы платите только стоимость товара, без процентов. Мы берём комиссию банка на себя.
- Кредит — если вам нужен более длительный срок или меньший ежемесячный платёж, банк начислит проценты, но вы сами выбираете удобный график.
Как это работает?
- Оформляете заказ на сумму от 3 000 ₽.
- На странице оплаты выбираете «Купить в кредит / рассрочку от Т-Банка».
- Заполняете короткую анкету — банк принимает решение за пару минут.
- После одобрения мы сразу высылаем лицензионный ключ на вашу почту, а вы спокойно вносите платежи по графику.
По статистике, оплата частями повышает продажи на 40% — и это логично, ведь вы получаете нужный софт сегодня, а платите постепенно.
Сумма покупки — от 3 000 до 500 000 ₽. Окончательный процент, срок и размер переплаты (если она есть) банк покажет до подписания договора.

Отзывы