Форум 1С-Битрикс

Задавайте свои вопросы и отвечайте на вопросы других участников форума


Как сопоставить текстовое название города из гео-базы с местоположениями 1С-Битрикс

Здравствуйте. Подскажите, допустим мы определили город по ip адресу пользователя и теперь как настроить связь с местоположениями Битрикса.

Ответ 1

Для определения города по ip подойдут стандартные средства битрикс
Цитата

use \Bitrix\Main\Service\GeoIp;
GeoIp\Manager::useCookieToStoreInfo(true);
$ipAddress = GeoIp\Manager::getRealIp();
$result = GeoIp\Manager::getDataResult($ipAddress, "ru");

$getLocationId = \Bitrix\Sale\Location\GeoIp::getLocationId($ipAddress, "ru");
$getLocationCode = \Bitrix\Sale\Location\GeoIp::getLocationCode($ipAddress, "ru");
Если есть название города, можно использовать следующий функционал для определения кода местоположения
Цитата
\Bitrix\Main\Loader::includeModule('sale');
$ol["city"] = "Москва";

           $result = array();

           $res = \Bitrix\Sale\Location\LocationTable::getList(array(
               'filter' => array(
                   '=NAME.NAME_UPPER' => ToUpper($ol["city"]),
                   '=NAME.LANGUAGE_ID' => "ru"
               ),
               'select' => array('ID', 'CODE')
           ));

           if($loc = $res->fetch())
               $resultCity = $loc;
   }
$getLocationCode = $resultCity['CODE'];
$getLocationId = $resultCity['ID'];

Возврат к списку