Создание сайтов на 1С-Битрикс

Как добавить свойство Цвет в Битрикс

с помощью jscolor.js

Как добавить свойство Цвет в Битрикс с помощью jscolor.js
Для начала создаём папку /local/php_interface/js/ и закидываем туда файлы скриптов. Далее добавляем код ниже в init.php — и проверяем в админке ))
В файле jscolor_custom.js  находятся дополнительные настройки — их можно менять согласно документации.

$arJsConfig = array( 
    'jscolor' => array( 
        'js' => '/local/php_interface/js/jscolor.js', 
        // 'css' => '/local/php_interface/js/jscolor.css', 
        'rel' => array(), 
    ),
    'jscolor_custom' => array( 
        'js' => '/local/php_interface/js/jscolor_custom.js',
        'rel' => array(), 
    ) 
); 
foreach ($arJsConfig as $ext => $arExt) { 
    \CJSCore::RegisterExt($ext, $arExt); 
}

// расширим свой класс от числового типа
class UserDataColor extends CUserTypeInteger
{

 // инициализация пользовательского свойства для главного модуля
 static function GetUserTypeDescription()
 {
  return array(
   'USER_TYPE_ID' => 'color',
   'CLASS_NAME' => 'UserDataColor',
   'DESCRIPTION' => 'Цвет',
   'BASE_TYPE' => 'int',
  );
 }

 // инициализация пользовательского свойства для инфоблока
 static function GetIBlockPropertyDescription()
 {
  return array(
   'PROPERTY_TYPE' => 'S',
   'USER_TYPE' => 'color',
   'DESCRIPTION' => 'Цвет',
   'GetPropertyFieldHtml' => array('UserDataColor', 'GetPropertyFieldHtml'),
  );
 }

 // представление свойства
 static function getViewHTML($name, $value)
 {
    CUtil::InitJSCore(array('jscolor', 'jscolor_custom'));
    return '<input type="text" data-jscolor="" name="'.$name.'" value="'.$value.'">';
 }

 // редактирование свойства
 static function getEditHTML($name, $value, $is_ajax = false)
 {
    CUtil::InitJSCore(array('jscolor', 'jscolor_custom'));
    return '<input type="text" data-jscolor="" name="'.$name.'" value="'.$value.'">';
 }

 // редактирование свойства в форме (главный модуль)
 function GetEditFormHTML($arUserField, $arHtmlControl)
 {
  return self::getEditHTML($arHtmlControl['NAME'], $arHtmlControl['VALUE'], false);
 }

 // редактирование свойства в списке (главный модуль)
 function GetAdminListEditHTML($arUserField, $arHtmlControl)
 {
  return self::getViewHTML($arHtmlControl['NAME'], $arHtmlControl['VALUE'], true);
 }

 // редактирование свойства в форме и списке (инфоблок)
 static function GetPropertyFieldHtml($arProperty, $value, $strHTMLControlName)
 {
  return $strHTMLControlName['MODE'] == 'FORM_FILL'
         ? self::getEditHTML($strHTMLControlName['VALUE'], $value['VALUE'], false)
         : self::getViewHTML($strHTMLControlName['VALUE'], $value['VALUE'])
  ;
 }

}

// добавляем тип для инфоблока
AddEventHandler("iblock", "OnIBlockPropertyBuildList", array("UserDataColor", "GetIBlockPropertyDescription"));
// добавляем тип для главного модуля
AddEventHandler("main", "OnUserTypeBuildList", array("UserDataColor", "GetUserTypeDescription"));

* Свежий jscolor можно скачать с сайта jscolor Color Picker

Скачать:

scripts.zip (40.02 КБ)
Логотип SiteBERG
Изменено: 25.05.2026 23:10

Статьи

Что нужно сделать?