До сих пор в Битриксе нет пользовательского свойства с HTML кодом (визуальным редактором). Устраняем это досадное недоразумение.
На просторах интернета быстро нашлось решение, правда сильно устаревшее, немного пришлось допилить напильником, и теперь всё работает.
Результат в вашем разделе будет выглядеть примерно так:
Данный код необходимо вставить в init.php вашего сайта на Битриксе. Решение поддерживает PHP8.
//выводим пользовательское HTML поле в свойствах разделов
AddEventHandler('main', 'OnUserTypeBuildList', array('CUserTypeSectionsHtmlField', 'GetUserTypeDescription'), 5000);
class CUserTypeSectionsHtmlField {
public static function GetUserTypeDescription() {
return array(
// уникальный идентификатор
'USER_TYPE_ID' => 'sections_html_field',
// имя класса, методы которого формируют поведение типа
'CLASS_NAME' => 'CUserTypeSectionsHtmlField',
// название для показа в списке типов пользовательских свойств
'DESCRIPTION' => 'HTML/text',
// базовый тип на котором будут основаны операции фильтра
'BASE_TYPE' => 'string',
);
}
public static function GetDBColumnType($arUserField) {
switch (strtolower($GLOBALS['DB']->type)) {
case 'mysql':
return 'text';
break;
}
}
public static function GetSettingsHTML($arUserField = false, $arHtmlControl, $bVarsFromForm) {
$result = '';
return $result;
}
public static function CheckFields($arUserField, $value) {
$aMsg = array();
return $aMsg;
}
public static function GetEditFormHTML($arUserField, $arHtmlControl) {
if ($arUserField["ENTITY_VALUE_ID"] < 1 && strlen($arUserField["SETTINGS"]["DEFAULT_VALUE"]) > 0)
$arHtmlControl["VALUE"] = htmlspecialchars($arUserField["SETTINGS"]["DEFAULT_VALUE"]);
ob_start();
CFileMan::AddHTMLEditorFrame($arHtmlControl["NAME"], $arHtmlControl["VALUE"], "html", "html", 200, "N", 0, "", "", "s1");
$b = ob_get_clean();
return $b;
}
public static function GetEditFormHTMLMulty($arUserField, $arHtmlControl) {
$html = 'Поле не может быть множественным!';
return $html;
}
public static function GetFilterHTML($arUserField, $arHtmlControl) {
$sVal = intval($arHtmlControl['VALUE']);
$sVal = $sVal > 0 ? $sVal : '';
return CUserTypeSectionsHtmlField::GetEditFormHTML($arUserField, $arHtmlControl);
}
public static function GetAdminListViewHTML($arUserField, $arHtmlControl) {
return '';
}
public static function GetAdminListViewHTMLMulty($arUserField, $arHtmlControl) {
return '';
}
public static function GetAdminListEditHTML($arUserField, $arHtmlControl) {
return '';
}
public static function GetAdminListEditHTMLMulty($arUserField, $arHtmlControl) {
return '';
}
public static function onsearchIndex($arUserField) {
return '';
}
public static function OnBeforeSave($arUserField, $value) {
return $value;
}
}
Теперь в пользовательских типах у вас появится Text/Html
Больше полезных материалов в нашем Telegram канале. Вступайте и будем на связи! https://t.me/bf_conversion