- Форум
- Центр поддержки
- Продукты
- Управление сайтом
- Битрикс24
- Интернет-магазин + CRM
- Решения
- Для интернет-магазинов
- Каталог готовых решений
- Внедрение
- Выбрать партнера
- Проверить партнера
- Стать партнером
- Форум
- Центр поддержки
- Продукты
- Управление сайтом
- Битрикс24
- Интернет-магазин + CRM
- Решения
- Для интернет-магазинов
- Каталог готовых решений
- Внедрение
- Выбрать партнера
- Проверить партнера
- Стать партнером
- Форум
- Центр поддержки
- Продукты
- Управление сайтом
- Битрикс24
- Интернет-магазин + CRM
- Решения
- Для интернет-магазинов
- Каталог готовых решений
- Внедрение
- Выбрать партнера
- Проверить партнера
- Стать партнером
- Bitrix detail text html
- Смотрите также
- Параметры вызова
- Возвращаемое значение
- Примеры использования
Форум
Как можно сохранить html текст в поле детальное описание элемента при помощи api.
$value = "
Шапка | Шапка2 |
Поле2 | Поле2 |
Поле2 | Поле2 |
TestПросто красивый текст
";
$arLoadProductArray = Array("NAME" => $element["NAME"],"DETAIL_TEXT_TYPE"=>"html","DETAIL_TEXT" => $value); $resUpd = $el->Update($element["ID"], $arLoadProductArray);
При это сохранение происходит, но формат не тот который необходим, в
поле дет. текст элемента, перейдя на вкладку визуальный редактор с
вкладки html, структура таблицы не создается, а выглядит просто как
сохраненный текст html .
Как сохранить html текст что бы в детальном описание появилась структура
этого текста, т.е что бы — стал таблицей,
— строками и т.д
Заранее спасибо.
Как можно сохранить html текст в поле детальное описание элемента при помощи api.
$value = "
Шапка | Шапка2 |
Поле2 | Поле2 |
Поле2 | Поле2 |
TestПросто красивый текст
";
$arLoadProductArray = Array("NAME" => $element["NAME"],"DETAIL_TEXT_TYPE"=>"html","DETAIL_TEXT" => $value); $resUpd = $el->Update($element["ID"], $arLoadProductArray);
При это сохранение происходит, но формат не тот который необходим, в
поле дет. текст элемента, перейдя на вкладку визуальный редактор с
вкладки html, структура таблицы не создается, а выглядит просто как
сохраненный текст html .
Центр поддержки
Продукты
Управление сайтом
Битрикс24
Интернет-магазин + CRM
Решения
Для интернет-магазинов
Каталог готовых решений
Внедрение
Выбрать партнера
Проверить партнера
Стать партнером
1С-Битрикс http://www.1c-bitrix.ru Общие вопросы info@1c-bitrix.ru Приобретение и лицензирование продуктов : sales@1c-bitrix.ru Маркетинг/мероприятия/PR marketing@1c-bitrix.ru Партнерская программа partners@1c-bitrix.ru Мы работаем с 10:00 до 19:00 по московскому времени. Офис в Москве 127287 Россия Московская область Москва 2-я Хуторская улица дом 38А строение 9 Офис в Калининграде +7 (4012) 51-05-64 Офис в Калининграде 236001 Россия Калининградская область Калининград Московский проспект 261 Офис в Киеве ukraine@1c-bitrix.ru Телефон в Киеве +3 (8044)221-55-33 Офис в Киеве 01033 Украина Калининградская область Киев улица Шота Руставели 39/41 офис 1507
© 2001-2023 «Битрикс», «1С-Битрикс». Работает на 1С-Битрикс: Управление сайтом. Политика конфиденциальности
Форум
Вопрос такой: при импорте товаров в инфоблок, детальное описание закидывает в тип «Текст», хотя там может быть и html код.
При выводе товаров можно конечно пользоваться htmlspecialchars_decode(), но получается какая-то фигня и к примеру html список ul между эл-ми списка какие-то гигантские расстояния, хотя все размеры нормальные, т.е. дело не в CSS.
Подскажите, как при CIBlockElement ::Update установить DETAIL_TEXT не текстовое значение, а хтмл?
Цитата |
---|
Олег Белов пишет: Подскажите, как при CIBlockElement ::Update установить DETAIL_TEXT не текстовое значение, а хтмл? |
при обновлении DETAIL_TEXT, задавайте значение и для DETAIL_TEXT_TYPE
Центр поддержки
Продукты
Управление сайтом
Битрикс24
Интернет-магазин + CRM
Решения
Для интернет-магазинов
Каталог готовых решений
Внедрение
Выбрать партнера
Проверить партнера
Стать партнером
1С-Битрикс http://www.1c-bitrix.ru Общие вопросы info@1c-bitrix.ru Приобретение и лицензирование продуктов : sales@1c-bitrix.ru Маркетинг/мероприятия/PR marketing@1c-bitrix.ru Партнерская программа partners@1c-bitrix.ru Мы работаем с 10:00 до 19:00 по московскому времени. Офис в Москве 127287 Россия Московская область Москва 2-я Хуторская улица дом 38А строение 9 Офис в Калининграде +7 (4012) 51-05-64 Офис в Калининграде 236001 Россия Калининградская область Калининград Московский проспект 261 Офис в Киеве ukraine@1c-bitrix.ru Телефон в Киеве +3 (8044)221-55-33 Офис в Киеве 01033 Украина Калининградская область Киев улица Шота Руставели 39/41 офис 1507
© 2001-2023 «Битрикс», «1С-Битрикс». Работает на 1С-Битрикс: Управление сайтом. Политика конфиденциальности
Форум
Через админку понятно — переключатели на месте, а вот при добавлении элемента, как можно установить переключатель в положение html (по умолчанию ставится text).
Array("VALUE" => Array ("TEXT" => "значение", "TYPE" => "html или text"));
Цитата |
---|
f0k39 f0k39 пишет: Через админку понятно — переключатели на месте, а вот при добавлении элемента, как можно установить переключатель в положение html (по умолчанию ставится text). |
В массиве элемента для добавления/обновления нужно указать тип в DETAIL_TEXT_TYPE
"DETAIL_TEXT" => 'Полный текст записи', "DETAIL_TEXT_TYPE" => 'html'
Цитата |
---|
f0k39 f0k39 пишет: Через админку понятно — переключатели на месте, а вот при добавлении элемента, как можно установить переключатель в положение html (по умолчанию ставится text). |
"DETAIL_TEXT" => 'Полный текст записи' , "DETAIL_TEXT_TYPE" => 'html'
Если нужно установить тип редактора в html для детального описания DETAIL_TEXT элемента if(CModule::IncludeModule("iblock")) < $el = new CIBlockElement; $arFilter = array( 'IBLOCK_ID' =>2, ); $resProd = CIBlockElement::GetList( array("ID" => "DESC"), $arFilter, false, 100, array('ID', 'NAME', "DETAIL_TEXT_TYPE") ); $i=0; while($element = $resProd->Fetch()) < //print_r($element); $upd = $el->Update($element['ID'], array( "DETAIL_TEXT_TYPE" => "html" ), false, false ); > >
Центр поддержки
Продукты
Управление сайтом
Битрикс24
Интернет-магазин + CRM
Решения
Для интернет-магазинов
Каталог готовых решений
Внедрение
Выбрать партнера
Проверить партнера
Стать партнером
1С-Битрикс http://www.1c-bitrix.ru Общие вопросы info@1c-bitrix.ru Приобретение и лицензирование продуктов : sales@1c-bitrix.ru Маркетинг/мероприятия/PR marketing@1c-bitrix.ru Партнерская программа partners@1c-bitrix.ru Мы работаем с 10:00 до 19:00 по московскому времени. Офис в Москве 127287 Россия Московская область Москва 2-я Хуторская улица дом 38А строение 9 Офис в Калининграде +7 (4012) 51-05-64 Офис в Калининграде 236001 Россия Калининградская область Калининград Московский проспект 261 Офис в Киеве ukraine@1c-bitrix.ru Телефон в Киеве +3 (8044)221-55-33 Офис в Киеве 01033 Украина Калининградская область Киев улица Шота Руставели 39/41 офис 1507
© 2001-2023 «Битрикс», «1С-Битрикс». Работает на 1С-Битрикс: Управление сайтом. Политика конфиденциальности
Bitrix detail text html
Метод добавляет новый элемент информационного блока. Перед добавлением элемента вызываются обработчики события OnBeforeIBlockElementAdd, из которых можно изменить значения полей или отменить добавление элемента вернув сообщение об ошибке. После добавления элемента вызывается событие OnAfterIBlockElementAdd. Нестатический метод.
Смотрите также
Примечание: если при добавлении свойств в PROPERTY_VALUES при сохранении элемента инфоблока методом CIBlockElement::Add, происходит подобная ошибка:
MySQL Query Error: INS ERT INTO b_iblock_element_property (IBLOCK_ELEMENT_ID, IBLOCK_PROPERTY_ID, VALUE, VALUE_NUM) SEL ECT 323 ,P.ID ,'28' ,28,0000 FR OM b_iblock_property P WHERE count doesn't match val ue count at row 1]
попробуйте выставить пустое значение в setlocale( LC_NUMERIC, » );, чтобы PHP использовал точку при форматировании числа, а не запятую.
Параметры вызова
Параметр | Описание | С версии |
---|---|---|
arFields | Массив вида Array(«поле»=>»значение», . ), содержащий значения полей элемента инфоблоков и дополнительно может содержать поле «PROPERTY_VALUES» — массив со всеми значениями свойств элемента в виде массива Array(«код свойства»=>»значение свойства»). Где «код свойства» — числовой или символьный код свойства, «значение свойства» — одиночное значение, либо массив значений если свойство множественное. Дополнительно для сохранения значения свойств см: CIBlockElement::SetPropertyValues(), CIBlockElement::SetPropertyValueCode(). |
Возвращаемое значение
Метод возвращает ID добавленного элемента инфоблока, если добавление прошло успешно. При возникновении ошибки метод вернет false, а в свойстве объекта LAST_ERROR будет содержаться текст ошибки.
Примеры использования
$el = new CIBlockElement;
$PROP = array();
$PROP[12] = "Белый"; // свойству с кодом 12 присваиваем значение "Белый"
$PROP[3] = 38; // свойству с кодом 3 присваиваем значение 38
$arLoadProductArray = Array(
"MODIFIED_BY" => $USER->GetID(), // элемент изменен текущим пользователем
"IBLOCK_SECTION_ID" => false, // элемент лежит в корне раздела
"IBLOCK_ID" => 18,
"PROPERTY_VALUES"=> $PROP,
"NAME" => "Элемент",
"ACTIVE" => "Y", // активен
"PREVIEW_TEXT" => "текст для списка элементов",
"DETAIL_TEXT" => "текст для детального просмотра",
"DETAIL_PICTURE" => CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/image.gif")
);
if($PRODUCT_ID = $el->Add($arLoadProductArray))
echo "New ID: ".$PRODUCT_ID;
else
echo "Error: ".$el->LAST_ERROR;
?>
Пример 2 (примеры массивов для свойств):
//описание массива для свойства типа "Html/Text" $arrProp = Array(); $arrProp[ID или CODE][0] = Array("VALUE" => Array ("TEXT" => "значение", "TYPE" => "html или text")); //описание массива для свойства типа "Список" $arrProp = Array(); $arrProp[ID или CODE] = Array("VALUE" => $ENUM_ID ); //ENUM_ID - это ID значения в списке, его можно получить при помощи: CIBlockPropertyEnum::GetList //описание массива для свойства типа "Список" множественного выбора $arrProp = Array(); $arrProp[ID или CODE] = array( $ENUM_ID1, $ENUM_ID2, $ENUM_ID3, $ENUM_ID4); //пример массива для вставки видео $PROP["561"] = Array ( "n0" => Array( "VALUE" => Array ("PATH" => "/upload/single_2.flv", "WIDTH" => 400, "HEIGHT" => 300, "TITLE" => "Заголовок видео", "DURATION" => "00:30", "AUTHOR" => "Автор видео", "DATE" => "01.02.2011") ) ); //При добавлении нового значения/значений множественного свойство типа "Файл" необходимо использовать ключи вида n0,n1,n2 . nN .
//детальная картинка загружается непосредственно из формы $GLOBALS['USER']->GetID(), // элемент изменен текущим пользователем 'IBLOCK_SECTION_ID' => false, // элемент лежит в корне раздела 'IBLOCK_ID' => 18, 'PROPERTY_VALUES' => $PROP, 'NAME' => 'Элемент', 'ACTIVE' => 'Y', // активен 'PREVIEW_TEXT' => 'текст для списка элементов', 'DETAIL_TEXT' => 'текст для детального просмотра', 'DETAIL_PICTURE' => $_FILES['DETAIL_PICTURE'] // картинка, загружаемая из файлового поля веб-формы с именем DETAIL_PICTURE ); if($PRODUCT_ID = $el->Add($arLoadProductArray)) < echo 'New ID: '.$PRODUCT_ID; >else < echo 'Error: '.$el->LAST_ERROR; > ?>
//добавления элемента с установкой для его свойства пары "значение" и "описание" $el = new CIBlockElement; $PROP = array(); $PROP[id_property] = Array( "n0" => Array( "VALUE" => "value", "DESCRIPTION" => "description") ); $arLoadProductArray = Array( "IBLOCK_SECTION" => false, "IBLOCK_ID" => iblock_id, "PROPERTY_VALUES" => $PROP, "NAME" => "Элемент", ); $PRODUCT_ID = id_element; $res = $el->Update($PRODUCT_ID, $arLoadProductArray);
//получить следующий ID для свойства типа "Счётчик" можно методом CIBlockSequence::GetNext и указать его в методе CIBlockElement:Add CModule::IncludeModule('iblock'); $IBLOCK_ID = 21; $PROPERTY_ID = 1223; $seq = new CIBlockSequence($IBLOCK_ID, $PROPERTY_ID); $el = new CIBlockElement; $ID = $el->Add(array( "IBLOCK_ID" => $IBLOCK_ID, "NAME" => "test element", "PROPERTY_VALUES" => array($PROPERTY_ID => $seq->GetNext()) )); $rs = CIBlockElement::GetList(array(), array("ID" => $ID), false, false, array("ID", "PROPERTY_ABSTRACT_ID")); if($ar = $rs->GetNext()) echo 'PRINT_R:', print_r($ar, 1), '';
//Если при добавлении элемента надо обязательно заполнять символьный код элемента, то можно не писать свою функцию, а воспользоваться системным методом: $params = Array( "max_len" => "100", // обрезает символьный код до 100 символов "change_case" => "L", // буквы преобразуются к нижнему регистру "replace_space" => "_", // меняем пробелы на нижнее подчеркивание "replace_other" => "_", // меняем левые символы на нижнее подчеркивание "delete_repeat_replace" => "true", // удаляем повторяющиеся нижние подчеркивания "use_google" => "false", // отключаем использование google ); "CODE" => CUtil::translit("здесь переменная названия элемента", "ru" , $params);//пример с символьными кодами свойств в массиве PROPERTY_VALUES: $arFields = array( "ACTIVE" => "Y", "IBLOCK_ID" => 123, "IBLOCK_SECTION_ID" => 456, "NAME" => "Название элемента", "CODE" => "nazvanie-elementa", "DETAIL_TEXT" => "Описание элемента", "PROPERTY_VALUES" => array( "MANUFACTURER" =>"Имя производителя", //Производитель - свойство "ARTNUMBER" =>"Артикул товара", //Артикул производителя - свойство "MATERIAL" =>"Материал товара" //Материал - свойство ) ); $oElement = new CIBlockElement(); $idElement = $oElement->Add($arFields, false, false, true); //Необходимо помнить, что если вы указали не все свойства в массиве PROPERTY_VALUES, то остальные свойства могут быть удалены. //Для обновления элемента гораздо безопаснее использовать CIBlockElement::SetPropertyValueCode.Пример 8 (как получить значение свойства):
//например, можно получить значение счетчика и записать его в базу //$iblockId - ID инфоблока //$propertyId - ID свойства $seq = new CIBlockSequence($iblockId, $propertyId); $current_value = $seq->GetNext(); //в $current_value - новое значение, которое можно писать в базу