Перейти к содержанию

Кастомное свойство инфоблока

getUserTypeDescription

class MyIblockUserType
{
    const string MY_IBLOCK_USER_TYPE_ID = 'design_work_scan_sketch_product';

    public static function getUserTypeDescription(): array
    {
        return [
            'USER_TYPER_ID' => self::MY_IBLOCK_USER_TYPE_ID,
            'PROPERTY_TYPE' => \Bitrix\Iblock\PropertyTable::TYPE_ELEMENT,
            'USER_TYPE'     => self::class,
            'DESCRIPTION'   => 'Описание свойства',

            'GetPublicEditHTML'         => [self::class, 'getPublicEditHTML'],
            'GetPublicEditHTMLMulty'    => [self::class, 'getPublicEditHTMLMulty'],
            'GetAdminListViewHTML'      => [self::class, 'getAdminListViewHTML'],
            'GetPropertyFieldHtml'      => [self::class, 'getPropertyFieldHtml'],
            'GetPropertyFieldHtmlMulty' => [self::class, 'getPropertyFieldHtmlMulty'],
            'GetPublicViewHTMLMulty'    => [self::class, 'getPublicViewHTMLMulty'],
        ];
    }
}

Ключи

  • USER_TYPE_ID - строка
  • PROPERTY_TYPE - Bitrix\Iblock\PropertyTable::TYPE_NUMBER
  • USER_TYPE - self::class
  • DESCRIPTION - описание
  • GetPublicEditHTML - Показ поля в публичке при редактировании. Без этого поля тип не отображается в публичке
  • GetPublicEditHTMLMulty - Показ множественного в публичке при редактировании.
  • GetPublicViewHTMLMulty - Показ множественного поля в списке в публичке. Принимает массив значений
  • Админка
    • GetAdminListViewHTML - Показ свойства в админке на странице списка элементов. Один метод на оба варианта множественное/обычное
    • GetPropertyFieldHtml - Показ свойства на деталке в админке
    • GetPropertyFieldHtmlMulty - Показ множественного свойства на детальной странице в админке
  • Запись и получение из БД
    • ConvertFromDB
    • ConvertToDB

Публичка

GetPublicEditHTMLMulty

Вывод множественного свойства в публичке на деталке.

GetPublicViewHTMLMulty

Вывод множественного свойства в публичке на странице списка.

В параметре прилетают сразу все значения value.

Админка

GetAdminListViewHTML

Показ значения в списке элементов в админке. Для множественного свойства типа привязка элементов надо вернуть просто текст, битра сама соберёт в общую строку.

Входящие параметры

  • $prop - полное описание свойства
  • $value - значение. Массив
    [
        "VALUE" => $prop['~VALUE'],
        "DESCRIPTION" => $prop['~DESCRIPTION']
    ],
    
  • $control - набор значений для контрола формы на html

Примеры возвращаемых значений

  • Для свойства типа строка
    public static function getAdminListViewHTML($property, $value, $control): string
    {
        return $value['VALUE'] ?? '';
    }
    

GetPropertyFieldHtmlMulty

Показ множественного свойства в деталке в админке. Если не указан - вызовется GetPropertyFieldHtml в цикле.

  • Для свойства типа строка
      public static function getPropertyFieldHtmlMulty($property, $value, $control)
      {
          ob_start();
          _ShowStringPropertyField($control['VALUE'], $property, $value);
    
          return ob_get_clean();
      }
    

Вспомогательные методы

  • _ShowPropertyField
  • _ShowStringPropertyField($name, $property_fields, $values, $bInitDef, $bVarsFromForm)
  • _ShowElementPropertyField - метод для показа поля для редактирования в админке