+7 495 008 8452
  • Загрузка
Выберите ваш цвет

Символьный код в компоненте "Добавление элементов инфоблока"

Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.


Поле "Символьный код"(CODE) в компоненте "Добавление элементов инфоблока"(iblock.element.add)

На многих сайтах поле "Символьный код"(CODE) элемента инфоблока генерируется из "Названия" элемента. Но при использовании компонента "Добавление элементов инфоблока"(iblock.element.add) это становится невозможно, так как в нём это не реализовано.

Для реализации необходимо кастомизировать три компонента:
- "Добавление элементов инфоблока"(iblock.element.add)
- "Форма добавления / редактирования"(iblock.element.add.form)
- "Список своих элементов"(iblock.element.add.list)
Поэтому копируем их в своё пространство имён, например, в папку "/bitrix/components/demo/". Затем потребуется:

1. переименовать папку "/bitrix/components/demo/iblock.element.add/templates/.default/bitrix/" в "/bitrix/components/demo/iblock.element.add/templates/.default/demo/".

2. в файлах
- /bitrix/components/demo/iblock.element.add/templates/.default/list.php
- /bitrix/components/demo/iblock.element.add/templates/.default/form.php
заменить bitrix на demo.

3. заменить во всех скопированных файлах "component.php" и "template.php":
- CODE= на ID=
- "CODE" на "ID" (кроме случаев, где "CODE" расположен в коде $arr["CODE"] в файлах .parameters.php)
Поиск и замену можно осуществить средствами Продукта, перейдя в "Контент - Структура сайта - Файлы и папки" в каждую папку скопированного компонента, нажав на кнопку "Поиск" и указав во вкладке "Заменить" следующие параметры(один пример):
Имя файла или папки: *mp*.php
Слово или фраза в файле: CODE=
Заменить на: ID=
Искать в папке: /bitrix/components/demo/iblock.element.add.list
Во всех подпапках: Да
4. найти в скопированных файлах ".parameters.php" код
"NAME" => GetMessage("IBLOCK_ADD_NAME"),
и добавить после него:
"CODE" => "CODE",

5. в файле "/bitrix/components/demo/iblock.element.add.form/component.php" после строк:
"NAME" => array(
   "PROPERTY_TYPE" => "S",
   "MULTIPLE" => "N",
   "COL_COUNT" => $COL_COUNT,
),
добавить:
"CODE" => array(
   "PROPERTY_TYPE" => "S",
   "MULTIPLE" => "N",
   "COL_COUNT" => $COL_COUNT,
),

6. заменить в файле "/bitrix/components/demo/iblock.element.add/templates/.default/demo/iblock.element.add.form/.default/template.php" строчку:
<input type="text" name="PROPERTY[<?=$propertyID?>][<?=$i?>]" size="25" value="<?=$value?>" /><br /><?
на код:
<?
$inputID = ($propertyID == "NAME" || $propertyID == "CODE"? 'id="'.$propertyID.'"': "");
$arIBlock = CIBlock::GetArrayByID($arParams["IBLOCK_ID"]);
if($propertyID == "CODE")
{
   $arTranslit = $arIBlock["FIELDS"]["CODE"]["DEFAULT_VALUE"];
   if($arTranslit["TRANSLITERATION"] == "Y")
   {
      CUtil::InitJSCore(array('translit'));
      ?>
      <script type="text/javascript">
      var oldValue = '';
      function transliterate()
      {
         var from = document.getElementById('NAME');
         var to = document.getElementById('CODE');
         if(from && to && oldValue != from.value)
         {
            BX.translit(from.value, {
               'max_len' : <?echo intval($arTranslit['TRANS_LEN'])?>,
               'change_case' : '<?echo $arTranslit['TRANS_CASE']?>',
               'replace_space' : '<?echo $arTranslit['TRANS_SPACE']?>',
               'replace_other' : '<?echo $arTranslit['TRANS_OTHER']?>',
               'delete_repeat_replace' : <?echo $arTranslit['TRANS_EAT'] == 'Y'? 'true': 'false'?>,
               'use_google' : <?echo $arTranslit['USE_GOOGLE'] == 'Y'? 'true': 'false'?>,
               'callback' : function(result){to.value = result; setTimeout('transliterate()', 250);}
            });
            oldValue = from.value;
         }
         else
         {
            setTimeout('transliterate()', 250);
         }
      }
      transliterate();
      </script>
      <?
   }
}
?>
<input <?=$inputID?> type="text" name="PROPERTY[<?=$propertyID?>][<?=$i?>]" size="25" value="<?=$value?>" /><br /><?

 

 

Источник: http://dev.1c-bitrix.ru/community/webdev/user/42405/blog/pole-simvolnyy-kodcode-v-komponente-dobavlenie-elementov-infoblokaiblo/

Назад в раздел

Подписаться на новые материалы раздела:
Загрузка...