Добавление пользовательского поля типа HTML/TEXT

=this.Name}
Задать вопрос

Перед программистом часто встает задача, добавить пользовательское поле типа HTML/TEXT для раздела, для решения неких SEO задач и других.

Для добавления «Своего типа» поля TML/Текст, необходимо в файле init.php добавить Обработчик.

AddEventHandler('main', 'OnUserTypeBuildList', array('CUserTypeSectionsHtmlField', 'GetUserTypeDescription'), 5000);
class CUserTypeSectionsHtmlField {
    function GetUserTypeDescription() {
        return array(
            // уникальный идентификатор
            'USER_TYPE_ID' => 'sections_html_field',
            // имя класса, методы которого формируют поведение типа
            'CLASS_NAME' => 'CUserTypeSectionsHtmlField',
            // название для показа в списке типов пользовательских свойств
            'DESCRIPTION' => 'HTML/TEXT',
            // базовый тип на котором будут основаны операции фильтра
            'BASE_TYPE' => 'string',
        );
    }
    function GetDBColumnType($arUserField) {
        switch (strtolower($GLOBALS['DB']->type)) {
            case 'mysql':
                return 'text';
                break;
        }
    }
    function GetSettingsHTML($arUserField = false, $arHtmlControl, $bVarsFromForm) {
        $result = '';

        return $result;
    }
    function CheckFields($arUserField, $value) {
        $aMsg = array();
        return $aMsg;
    }
    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();
        echo '<div class="html_realweb">';
        CFileMan::AddHTMLEditorFrame($arHtmlControl["NAME"], $arHtmlControl["VALUE"], "html", "html", 200, "N", 0, "", "", "s1");
        echo '</div>';
        $b = ob_get_clean();
        return $b;
    }
    function GetEditFormHTMLMulty($arUserField, $arHtmlControl) {
        $html = 'Поле не может быть множественным!';
        return $html;
    }
    function GetFilterHTML($arUserField, $arHtmlControl) {
        $sVal = intval($arHtmlControl['VALUE']);
        $sVal = $sVal > 0 ? $sVal : '';

        return CUserTypeSectionsHtmlField::GetEditFormHTML($arUserField, $arHtmlControl);
    }
    function GetAdminListViewHTML($arUserField, $arHtmlControl) {
        return '';
    }
    function GetAdminListViewHTMLMulty($arUserField, $arHtmlControl) {
        return '';
    }
    function GetAdminListEditHTML($arUserField, $arHtmlControl) {
        return '';
    }
    function GetAdminListEditHTMLMulty($arUserField, $arHtmlControl) {
        return '';
    }
    function OnSearchIndex($arUserField) {
        return '';
    }
    function OnBeforeSave($arUserField, $value) {
        return $value;
    }
}

Готово, пример реализации ниже на фото.



Галерея

Заказать услугу
Оформите заявку, мы свяжемся с вами в ближайшее время и ответим на все интересующие вопросы.

Статьи про 1С-Битрикс

Бывает необходимо сдвинуть либо изменить нумерацию заказов в магазине 1-Битрикс.

Подробнее

Перед разработчиком 1С-Битрикс часто встает задача вывод связанных элементов ( товаров ) 1С-Битрикс

Подробнее

Как массово включить "Показывать на странице списка элементов" и или "Показывать на детальной странице элемента".

Подробнее

 
Текст сообщения*
Загрузить файл или картинкуПеретащить с помощью Drag'n'drop
Перетащите файлы
Ничего не найдено
Загрузить изображение