Местоположение - простое заполнение


Описание

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

screen1.jpg
Есть возможность автоматического заполнения индекса города если он заполнен у выбранного города, индекс берется последний из списка в городе .

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

screen2.jpg


Установка компонента


Устанваливаем модуль через marketplace.
Для настройки компонента 'простой выбор местоположения' необходимо заменить стандартный компонент sale.ajax.locations.
Рассмотрим на примере одношагового оформления заказа sale.order.ajax.
Необходимо найти где в шаблоных sale.order.ajax выводится компонент sale.ajax.locations , в данном компоненте вывод находится в файле props.php
находим строчки


elseif ($arProperties["TYPE"] == "LOCATION")
{


foreach ($arProperties["VARIANTS"] as $arVariant)
{
if ($arVariant["SELECTED"] == "Y")
{

$value = $arVariant["ID"];
break;
}
}
/* НАЧАЛО СТАНДАРТНОГО КОМПОНЕНТ*/
$GLOBALS["APPLICATION"]->IncludeComponent(
'bitrix:sale.ajax.locations',
'',
array(
"AJAX_CALL" => "N",
"COUNTRY_INPUT_NAME" => "COUNTRY_".$arProperties["FIELD_NAME"],
"CITY_INPUT_NAME" => $arProperties["FIELD_NAME"],
"CITY_OUT_LOCATION" => "Y",
"LOCATION_VALUE" => $value,
"ONCITYCHANGE" => ($arProperties["IS_LOCATION"] == "Y" ||
$arProperties["IS_LOCATION4TAX"] == "Y") ? "submitForm()" : "",
),
null,
array('HIDE_ICONS' => 'Y')
);
/* КОНЕЦ СТАНДАРТНОГО КОМПОНЕНТА */
}

и меняем на

elseif ($arProperties["TYPE"] == "LOCATION")
{


foreach ($arProperties["VARIANTS"] as $arVariant)
{
if ($arVariant["SELECTED"] == "Y")
{

$value = $arVariant["ID"];
break;
}
}
/* НАЧАЛО ЗАМЕНЫ*/
$GLOBALS["APPLICATION"]->IncludeComponent(
"NewIt:sale.locations.autocomplete",
"",
Array(
"ID_FIELDS" => $arProperties['ID'],
"CITY_INPUT_NAME" => $arProperties["FIELD_NAME"],
"LOCATION_VALUE" => $value,
"JQUERY" => "N",
"FORM_ID_TEXT_CITY" => "SELECTCITY",
"MAXITEMSTOSHOW" => "20",
"CITY_EMPTY_ID" => "20",
"CITY_EMPTY_ID_NAME" => "(другой город)",
"MINCHARS" => "1",
"ONCITYCHANGE" => "submitForm()",
"INDEX_ON" => "Y",
"INDEX_PLACE" => "#ORDER_PROP_4, #ORDER_PROP_16"
),
false
);
/* КОНЕЦ ЗАМЕНЫ*/
}


Значение переменных компонента NewIt:sale.locations.autocomplete.
CITY_INPUT_NAME - Имя поля формы города
LOCATION_VALUE - Выбранное значение города
JQUERY - Если в проекте не используется JQUERY то надо поставить "Y" .
FORM_ID_TEXT_CITY - ID текстового поля формы для введения города.
MAXITEMSTOSHOW - Максимальное отображение городов в списке
CITY_EMPTY_ID - Страна для "другого города" по умолчанию
CITY_EMPTY_ID_NAME - Название в списке для "другого города"
MINCHARS - Минимальное количество символов для отправки запроса
ONCITYCHANGE - функция которая срабатывает при выборе города
INDEX_ON - Включить заполнение поля индекса

INDEX_PLACE - Служит для назначения id или class поля с индексом.

Так же необходимо удалить компонент sale.ajax.locations в конце файла props.php

<div style="display:none;">
<?


// НАЧАЛО
$APPLICATION->IncludeComponent(
'bitrix:sale.ajax.locations',
'',
array(
"AJAX_CALL" => "N",
"COUNTRY_INPUT_NAME" => "COUNTRY_tmp",
"CITY_INPUT_NAME" => "tmp",
"CITY_OUT_LOCATION" => "Y",
"LOCATION_VALUE" => "",
"ONCITYCHANGE" => "",
),
null,
array('HIDE_ICONS' => 'Y')
);
// КОНЕЦ

?>
</div>


По аналогии можно заменить выбор города в других компонента.
Обятельным условием работы компонента является заполненные местоположения, для того что бы заполняло индексы необходимы заполненные индексы у городов.


Удачного использования !!!