Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Добавление элементов в инфоблок пользователем

00 голосов
8
Создал инфоблок, одно из полей - привязка к карте Google Maps. Через админку при добавлении элемента выводится карта и ввод привязки осуществляется даблкликом по ней.
Требуется дать зарегистрированным пользователям возможность добавлять свои места на карте. Создал страницу с формой добавления элементов инфоблока. Все поля выводятся нормально, но поле привязки к карте выводится в виде просто текстового поля.
Как сделать так, чтобы это поле в форме выглядело так же, как и в админке?
спросил 02 Июль, 13 от Efy (120 баллов)

8 Ответы

00 голосов
Тот же вопрос. В этом отношении компонент сырой, пользователи не раз жаловались.
ответил 02 Июль, 13 от vos (140 баллов)
00 голосов
Недавно столкнулся с такой же проблемой, времени на то, чтобы разбираться долго не было, решил так (на универсальное решение не претендую, но надеюсь кому-то поможет):

Код
$strHTMLControlName = array();
$strHTMLControlName["MODE"] = 'FORM_FILL'; // если не задавать, то карта не будет выведена
$strHTMLControlName["VALUE"] = 'MY_MAP'; // name для скрытого поля с координатами
$coords = '54.7078924801,20.5828726435'; // Координаты текущего положения маркера
echo CIBlockPropertyMapGoogle::GetPropertyFieldHtml('map', array('VALUE'=>$coords), $strHTMLControlName);


Смотреть сам класс и метод тут:
/bitrix/modules/fileman/properties.php

Соответственно, если файл с классом не подключен - нужно сначала его подключить, или вынести оттуда сам класс с методом.
ответил 07 Авг, 13 от Tsukiko (240 баллов)
00 голосов
Андрей, спасибо, что указали где находиться класс CIBlockPropertyMapGoogle.
Долго пытался искать его в папке /bitrix/modules/iblock/, что в принципе логично, потому что все свойства там лежат.
ответил 07 Ноя, 13 от Iveta (220 баллов)
00 голосов
Уважаемые знатоки Битрикса. Я так понял, что вы разобрались с проблемой. Не совсем понятно, что и куда вставлять ;) . Можно объяснить подробнее? Заранее благодарен.
ответил 14 Фев, 14 от RULYA (100 баллов)
00 голосов
Разобрался уже.

В template.php (страница формы добавления) вместо

Код
<input type="text" name="PROPERTY['.$propertyID.']['.$i.']" size="25" value="'.$value.'" id="input_'.strtolower($propertyID).'"/><br />';

вставляем этот:
Код
if ($arResult["PROPERTY_LIST_FULL"][$propertyID]["USER_TYPE"] == 'map_google')
{
$strHTMLControlName = array();
$strHTMLControlName["MODE"] = 'FORM_FILL'; // если не задавать, то карта не будет выведена 
$strHTMLControlName["FORM_NAME"] = 'PROPERTY['.$propertyID.']['.$i.']';
echo CIBlockPropertyMapGoogle::GetPropertyFieldHtml('MAP', array('VALUE'=>$value), $strHTMLControlName);
} else {
echo '<input type="text" name="PROPERTY['.$propertyID.']['.$i.']" size="25" value="'.$value.'" id="input_'.strtolower($propertyID).'"/><br />';}


Если хотите настроить вид карты, то правьте файл:
/bitrix/modules/fileman/properties.php

Код
$APPLICATION->IncludeComponent(
         'bitrix:map.google.system',
         '',
         array(
            "INIT_MAP_TYPE" => "HYBRID",
            'INIT_MAP_LON' => $POINT_LON ? $POINT_LON : 37.64,
            'INIT_MAP_LAT' => $POINT_LAT ? $POINT_LAT : 55.76,
            'INIT_MAP_SCALE' => 10,
            'OPTIONS' => array('ENABLE_SCROLL_ZOOM', 'ENABLE_DRAGGING'),
            'CONTROLS' => array('LARGE_MAP_CONTROL', 'HTYPECONTROL', 'MINIMAP', 'SCALELINE'),
            'MAP_WIDTH' => '95%',
            'MAP_HEIGHT' => 400,
            'MAP_ID' => $MAP_ID,
            'DEV_MODE' => 'Y',
         ),
         false, array('HIDE_ICONS' => 'Y')
      );
ответил 04 Июнь, 14 от RULYA (100 баллов)
00 голосов
Эх обрадовался, когда натолкнулся на эту тему, оказалось зря, поле-то теперь в виде карты, а значения всё равно никуда не передаются у меня :cry:
ответил 02 Окт, 14 от Marwella (160 баллов)
00 голосов
Уважаемые эксперты, помогите разобраться всё же с этой проблемой, пересмотрел и перепробовал всё темы здесь касательного этого вопроса, но результат нулевой((((
ответил 03 Фев, 15 от Marwella (160 баллов)
00 голосов
Цитата
kiro-san пишет:
$strHTMLControlName["FORM_NAME"] = 'PROPERTY['.$propertyID.']['.$i.']';
нужно добавить такую строку

Код
 $strHTMLControlName["VALUE"] = 'PROPERTY['.$propertyID.']['.$i.']';
ответил 17 Май, 15 от Farad (100 баллов)

Похожие вопросы

0 голосов
2 ответов
0 голосов
1 ответ
спросил 17 Апр, 19 от аноним
0 голосов
3 ответов
0 голосов
1 ответ