Местоположения магазина

Модуль расширенного управления меню для битрикс

Февраль 20, 2021

Теги: Магазин

Работа с местоположениями магазина при помощи класса "\Bitrix\Sale\Location\LocationTable" и др.

Выбор всех местоположений верхнего уровня (в данном примере это страны), включая название на текущем языке и дополнительно выбираем параметр PHONE_MASK, если он задан (таким образом в административной части задаем маску телефона для стран):


$result=\Bitrix\Sale\Location\LocationTable::getList(array(

    
'filter' => array('DEPTH_LEVEL'=>1,'NAME.LANGUAGE_ID'=>LANGUAGE_ID),
    
'select' => array('ID','LANG_'=>'NAME'),
));

while(
$loc=$result->fetch())
{
    
$externalDataResult=\Bitrix\Sale\Location\LocationTable::getExternalData($loc['ID'],array('select'=>array('*','CODE'=>'SERVICE.CODE')));
    while(
$externalData=$externalDataResult->fetch())
    {
        if(
$externalData['CODE']!='PHONE_MASK')
            continue;
        
$loc['MASK'] = $externalData['XML_ID'];    
    }
    
print_r($loc);
}

/*
Array
(
    [ID] => 1
    [LANG_ID] => 3158
    [LANG_NAME] => Россия
    [LANG_NAME_UPPER] => РОССИЯ
    [LANG_SHORT_NAME] => 
    [LANG_NAME_NORM] => 
    [LANG_LANGUAGE_ID] => ru
    [LANG_LOCATION_ID] => 1
    [MASK] => +7 (999) 999-99-99
)
*/
// далее при регистрации используем разные маски телефона при помощи плагина inputmask
// (местоположения предварительно сохранены в $arResult['locations']
?>
<select onchange="$('#input_<?=$FIELD;?>').inputmask('mask', {'mask': this.value, 'showMaskOnHover':false });">
    <?foreach($arResult['locations'] as $loc):?>
        <option value="<?=$loc['MASK']?>"><?=$loc['LANG_NAME']?></option>
    <?endforeach?>
</select>
<input size="30" type="tel" id="input_<?=$FIELD;?>" name="REGISTER[<?=$FIELD?>]" value="<?=$arResult["VALUES"][$FIELD]?>" />
<script>
$('#input_<?=$FIELD;?>').inputmask('mask', {'mask': '<?=$arResult['locations'][0]['MASK']?>', 'showMaskOnHover':false });
</script>
<?

См. также:

← Переход к списку