Сайты торговых сетей, предприятий с представительствами и филиалами, бюро услуг и почтовые службы нуждаются в справочнике адресов регионов и городов России. Найти и забить вручную? Даже если положить 5 минут на 1 позицию, всего на 1100 населенных пунктов получится 5500 минут, 92 часа и 11 восьмичасовых рабочих дней. Нет, это не вариант.
Поэтому лучше использовать справочник IP-адресов городов России cidr_ru_block.txt, скачав его на сайте ipgeobase.ru
1. Скачаем архив
На странице архивов
ipgeobase.ru скачаем файл db_files.zip. Распакуем архив.
2. Загрузим архив в модуль статистики «Битрикс»
Распакованный из архива файл cidr_ru_block.txt загрузим в «Битрикс» по адресу bitrix/modules/statistic/ip2country
3. Используем мастер создания индексов IP
Запустим мастер по адресу /bitrix/admin/wizard_list.php?lang=ru
Зададим мастеру в качестве источника файл cidr_ru_block.txt и режим создания индекса по IP-адресу для конкретной страны и города.
Через класс CCity
CModule::IncludeModule('statistic');
$arOrder = array('REGION_NAME' => 'ASC');
$arFilter = array('COUNTRY_ID' => 'RU');
$res = CCity::GetList($arOrder, $arFilter);
while ($el = $res->Fetch())
print_r($el);
Получаем массив населенных пунктов
Array
(
[CITY_ID] => 51
[COUNTRY_ID] => RU
[COUNTRY_SHORT_NAME] => RUS
[COUNTRY_NAME] => RUSSIAN FEDERATION
[REGION_NAME] => Алтайский край
[CITY_NAME] => Барнаул
)
Array
(
[CITY_ID] => 353
[COUNTRY_ID] => RU
[COUNTRY_SHORT_NAME] => RUS
[COUNTRY_NAME] => RUSSIAN FEDERATION
[REGION_NAME] => Алтайский край
[CITY_NAME] => Заринск
)
Array
(
[CITY_ID] => 265
[COUNTRY_ID] => RU
[COUNTRY_SHORT_NAME] => RUS
[COUNTRY_NAME] => RUSSIAN FEDERATION
[REGION_NAME] => Алтайский край
[CITY_NAME] => Бийск
)
....
Array
(
[CITY_ID] => 477
[COUNTRY_ID] => RU
[COUNTRY_SHORT_NAME] => RUS
[COUNTRY_NAME] => RUSSIAN FEDERATION
[REGION_NAME] => Ярославская область
[CITY_NAME] => Гаврилов-ям
)
Array
(
[CITY_ID] => 585
[COUNTRY_ID] => RU
[COUNTRY_SHORT_NAME] => RUS
[COUNTRY_NAME] => RUSSIAN FEDERATION
[REGION_NAME] => Ярославская область
[CITY_NAME] => Мышкин
)
И вызываем данные из него при помощи $_SESSION['SESS_CITY_ID']
if ($_SESSION['SESS_CITY_ID'] > 0)
{
$res = CCity::GetList(
false,
array('CITY_ID' => $_SESSION['SESS_CITY_ID'])
);
if ($el = $res->Fetch())
print_r($el);
}
Готово!
Назад в раздел