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

Помощь по iblock.element.add

00 голосов
6
Столкнулся с одной проблемой и что-то никак не могу понять чего куда. Взял стандартный iblock.element.add, в редактировании свойств компонента нашел очень полезный пункт "Собственные названия полей", но, к сожалению, там отображаются только стандартные поля. Хотелось бы добавить еще и пользовательские свойства туда. Порывшись в коде компонента нашел кусок кода, который за это отвечает в файле .parameters.php:
Код
foreach ($arVirtualProperties as $key => $title)
{
   $arComponentParameters["PARAMETERS"]["CUSTOM_TITLE_".$key] = array(
      "PARENT" => "TITLES",
      "NAME" => $title,
      "TYPE" => "STRING",
   );

}


не могу придумать как туда подсунуть пользовательские свойства. Начитка, я так понимаю идет с массива:

Код
$arProperty_LNSF = array(
   "NAME" => GetMessage("IBLOCK_ADD_NAME"),
   "TAGS" => GetMessage("IBLOCK_ADD_TAGS"),
   "DATE_ACTIVE_FROM" => GetMessage("IBLOCK_ADD_ACTIVE_FROM"),
   "DATE_ACTIVE_TO" => GetMessage("IBLOCK_ADD_ACTIVE_TO"),
   "IBLOCK_SECTION" => GetMessage("IBLOCK_ADD_IBLOCK_SECTION"),
   "PREVIEW_TEXT" => GetMessage("IBLOCK_ADD_PREVIEW_TEXT"),
   "PREVIEW_PICTURE" => GetMessage("IBLOCK_ADD_PREVIEW_PICTURE"),
   "DETAIL_TEXT" => GetMessage("IBLOCK_ADD_DETAIL_TEXT"),
   "DETAIL_PICTURE" => GetMessage("IBLOCK_ADD_DETAIL_PICTURE"),
);
$arVirtualProperties = $arProperty_LNSF;


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

Заранее благодарен за оказанную помощь.
спросил 15 Окт, 13 от rfgdjxd (160 баллов)

6 Ответы

00 голосов
хотя бы подскажите в какую сторону смотреть, а то эта мелочь мешает всей остальной работе =( .
ответил 05 Ноя, 13 от rfgdjxd (160 баллов)
00 голосов
Например, можно зайти в редактирование свойств инфоблока и в столбце название подставить нужный текст.
ответил 12 Фев, 14 от SILVER (340 баллов)
00 голосов
ситуация немного сложнее. дело в том что информблок наполняется с двух разных страничек сайта: 1я страница на украинском, а вторая на русском. соответственно iblock.element.add ставится на обоих формах, но с разными переводами названия полей.
ответил 03 Июнь, 14 от rfgdjxd (160 баллов)
00 голосов
Понятно. Но ".parameters.php" точно не поможет - он используется для подписей при редактировании параметров компонента через веб-интерфейс.
ответил 30 Сен, 14 от SILVER (340 баллов)
00 голосов
Можно решить так:

1. При вызове компонента задайте новые параметры (по одному на язык) вида

Код
$arParam['Подписи для языка №1'] = Array(
553=>'Подпись для свойства с номером 553', 
554=>'Подпись для свойства с номером 554'
)[/CODE']
2. В файле [B]iblock.element.add/templates/.default/bitrix/iblock.element.add.form/.default/template.php[/B] замените строку

[CODE]<td><?if (intval($propertyID) > 0):?><?=$arResult["PROPERTY_LIST_FULL"][$propertyID]["NAME"]?><?else:?><?=!empty($arParams["CUSTOM_TITLE_".$propertyID]) ? $arParams["CUSTOM_TITLE_".$propertyID] : GetMessage("IBLOCK_FIELD_".$propertyID)?><?endif?><?if(in_array($propertyID, $arResult["PROPERTY_REQUIRED"])):?><span class="starrequired">*</span><?endif?></td>

на

Код
<td><?if (intval($propertyID) > 0):?><?=$arParams['Подписи для нужного языка'][$propertyID]?><?else:?><?=!empty($arParams["CUSTOM_TITLE_".$propertyID]) ? $arParams["CUSTOM_TITLE_".$propertyID] : GetMessage("IBLOCK_FIELD_".$propertyID)?><?endif?><?if(in_array($propertyID, $arResult["PROPERTY_REQUIRED"])):?><span class="starrequired">*</span><?endif?></td>
ответил 02 Фев, 15 от SILVER (340 баллов)
00 голосов
Вадим, я так понимаю, что получается, что с такими изменениями в зависимости от параметров при вызове компонента будут отображаться названия указанные в параметрах. то-есть
Код
$arParams['Подписи для нужного языка']
туда вписываем переменную которая будет принимать значение от вызова.
немного не понял
Код
$arParam['Подписи для языка №1'] = Array( 
553=>'Подпись для свойства с номером 553', 
554=>'Подпись для свойства с номером 554' 
)

куда это идет если выхов идет стандартый:
Код
 <?$APPLICATION->IncludeComponent("bitrix:iblock.element.add", ".default", array(
   "NAV_ON_PAGE" => "10",
   "USE_CAPTCHA" => "Y",
   "USER_MESSAGE_ADD" => "Вопрос добавлен",
   "USER_MESSAGE_EDIT" => "",
   "DEFAULT_INPUT_SIZE" => "30",
   "IBLOCK_TYPE" => "info",
   "IBLOCK_ID" => "3",
   "PROPERTY_CODES" => array(
      0 => "NAME",
      1 => "PREVIEW_TEXT",
      2 => "1",
      3 => "2",
      4 => "3",
      5 => "4",
   ),
   "PROPERTY_CODES_REQUIRED" => array(
      0 => "NAME",
      1 => "PREVIEW_TEXT",
      2 => "1",
      3 => "2",
      4 => "3",
      5 => "4",
   ),
   "GROUPS" => array(
      0 => "2",
   ),
   "STATUS" => "ANY",
   "STATUS_NEW" => "NEW",
   "ALLOW_EDIT" => "Y",
   "ALLOW_DELETE" => "Y",
   "ELEMENT_ASSOC" => "CREATED_BY",
   "MAX_USER_ENTRIES" => "100000",
   "MAX_LEVELS" => "100000",
   "LEVEL_LAST" => "Y",
   "MAX_FILE_SIZE" => "0",
   "PREVIEW_TEXT_USE_HTML_EDITOR" => "N",
   "DETAIL_TEXT_USE_HTML_EDITOR" => "N",
   "SEF_MODE" => "N",
   "SEF_FOLDER" => "/consulting/",
   "AJAX_MODE" => "N",
   "AJAX_OPTION_SHADOW" => "Y",
   "AJAX_OPTION_JUMP" => "N",
   "AJAX_OPTION_STYLE" => "Y",
   "AJAX_OPTION_HISTORY" => "N",
   "CUSTOM_TITLE_NAME" => "Тема",
   "CUSTOM_TITLE_TAGS" => "",
   "CUSTOM_TITLE_DATE_ACTIVE_FROM" => "",
   "CUSTOM_TITLE_DATE_ACTIVE_TO" => "",
   "CUSTOM_TITLE_IBLOCK_SECTION" => "",
   "CUSTOM_TITLE_PREVIEW_TEXT" => "Вопрос",
   "CUSTOM_TITLE_PREVIEW_PICTURE" => "",
   "CUSTOM_TITLE_DETAIL_TEXT" => "",
   "CUSTOM_TITLE_DETAIL_PICTURE" => "",
   "AJAX_OPTION_ADDITIONAL" => ""
   ),
   false
);?> 
ответил 16 Май, 15 от rfgdjxd (160 баллов)

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

0 голосов
2 ответов
спросил 29 Апр, 14 от Kiriel (2,010 баллов)
0 голосов
2 ответов
спросил 06 Апр, 14 от PANKELA (100 баллов)
0 голосов
3 ответов
0 голосов
5 ответов
спросил 12 Дек, 13 от MoonFox (120 баллов)