Форматирования BB кода в 1С-Битрикс | Для разработчиков | Сайты для бизнеса
Заказать обратный звонок * Бесплатный сервис связи * В удобное для вас время

Форматирования BB кода в 1С-Битрикс


Часто возникает ситуация, когда надо отформатировать текст, вывести его без лишних тегов или преобразовать BB код в теги, в этом нам помогут функция и метод convert. В документации Битрикс этот метод используется в разных классах textParser, forumTextParser, CSocNetTextParser и в других, но трудно понять какой метод или функцию использовать, к тому же в документации нет хороших примеров и код там не совсем рабочий.
Например этот код у меня не сработал:
  1. //$parser = new textParser();
  2. //$detailText = $parser->convert($_POST['DETAIL_TEXT']);

а этот работает:
  1. $parser = new CTextParser;
  2. $detailText = $parser->convertText($_POST['DETAIL_TEXT']);

Как видим, здесь используется класс CTextParser. Также можно использовать следующий код:
  1. $parser = new forumTextParser();

Здесь используется уже forumTextParser.
Иногда может понадобиться подключить модуль форума, что бы сработали нужные нам функции и мы не получили ошибку.
CModule::IncludeModule("forum");
Во всех перечисленных классах существует метод convert, который и делает то, что нам нужно, а именно заменяет BBCode.
Также в этот метод, мы можем передать вторым параметром массив параметров для форматирования сообщения, со значениями Y или N:
  1. //$Forum = new CForumNew();
  2. //$arAllow = $Forum->ALLOW;
  3. $arAllow["SMILES"] = "Y";
  4. $arAllow["CODE"] = "Y";
  5. $arAllow["HTML"] = "Y";
  6. $arAllow["NL2BR"] = "Y";
  7. $arAllow["QUOTE"] = "Y";
  8. $detailText = $parser->convert($_POST['DETAIL_TEXT'], $arAllow);
  9. //$detailText = $_POST['DETAIL_TEXT'];

Проверка на BB код IMG
  1. $pattern = '/\[IMG ID=(\d*)]/';
  2. preg_match_all($pattern, $detailText, $matches);
  3.  
  4. if (count($matches) >= 2){
  5. foreach($matches[1] as $k=>$match){
  6. $photoPath = CFile::GetPath($match);
  7.  
  8. $detailText = str_replace($matches[0][$k], "<img src='".$photoPath."' alt='' />", $detailText);
  9. }
  10. }

После форматирования, можно занести текст в инфоблок, следующим образом
  1. $el = new CIBlockElement;
  2.  
  3. $PROP = array();
  4. $PROP["SOURCE"] = htmlspecialchars($_POST['SOURCE']);
  5. $PROP["SITE"] = htmlspecialchars($_POST['SITE']);
  6. $PROP["IS_ANONYMOUS"] = isset($_POST['anonymous']) ? 1 : 0;
  7.  
  8. $photos = array();
  9. foreach($_POST['FILES'] as $fileId){
  10. $url = CFile::GetPath($fileId);
  11. $photos[] = CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"].$url);
  12. }
  13.  
  14. if (count($photos) > 0){
  15. $PROP["ADDITIONAL_PHOTO"] = $photos;
  16. }
  17.  
  18. $arLoadProductArray = Array(
  19. "MODIFIED_BY" => $USER->GetID(),
  20. "IBLOCK_SECTION_ID" => $_POST['SECTION'],
  21. "IBLOCK_ID" => $arParams["IBLOCK_ID"],
  22. "DATE_ACTIVE_FROM" => date("d.m.Y H:i:s"),
  23. "PROPERTY_VALUES"=> $PROP,
  24. "NAME" => $_POST['NAME'],
  25. "ACTIVE" => "N",
  26. "DETAIL_TEXT" => $detailText,
  27. "DETAIL_TEXT_TYPE" => "html"
  28. );
  29.  
  30. $newsId = $el->Add($arLoadProductArray)

Что бы указывать BB код картинок и текста нам понадобятся компоненты, которые выводят форму с нужными нам кнопками для форматирования 1. Компонент main.post.form
  1. <?$APPLICATION->IncludeComponent(
  2. "bitrix:main.post.form",
  3. "",
  4. ($formParams = Array(
  5. "FORM_ID" => "news_form",
  6. "SHOW_MORE" => "Y",
  7. "PARSER" => Array("Bold", "Italic", "Underline", "Strike", "ForeColor",
  8. "FontList", "FontSizeList", "RemoveFormat", "Quote", "Code", "InsertCut",
  9. "CreateLink",
  10. "Image",
  11. "Table",
  12. "Justify",
  13. "InsertOrderedList",
  14. "InsertUnorderedList",
  15. "SmileList",
  16. "Source",
  17. "UploadImage",
  18. "InputVideo",
  19. "MentionUser",
  20. ),
  21. "BUTTONS" => Array(
  22. "UploadImage",
  23. "UploadFile",
  24. "CreateLink",
  25. "InputVideo",
  26. "Quote",
  27. ),
  28. "UPLOAD_FILE" => array(
  29. "INPUT_NAME" => 'FILES',
  30. "INPUT_VALUE" => (!empty($arResult["MESSAGE"]["FILES"]) ? array_keys($arResult["MESSAGE"]["FILES"]) : false),
  31. "MAX_FILE_SIZE" => "10000000",
  32. "MULTIPLE" => "Y",
  33. "MODULE_ID" => "iblock",
  34. "ALLOW_UPLOAD" => ($arParams["FORUM"]["ALLOW_UPLOAD"] == "N" ? false :
  35. ($arResult["FORUM"]["ALLOW_UPLOAD"] == "Y" ? "I" : $arResult["FORUM"]["ALLOW_UPLOAD"])),
  36. "ALLOW_UPLOAD_EXT" => $arResult["FORUM"]["ALLOW_UPLOAD_EXT"]
  37. ),
  38. "UPLOAD_FILE_PARAMS" => array("width" =>1024, "height" => 1024),
  39.  
  40. "TEXT" => Array(
  41. "NAME" => "DETAIL_TEXT",
  42. "VALUE" => htmlspecialcharsBack($_POST["DETAIL_TEXT"]),
  43. "HEIGHT" => "120px",
  44. "WIDTH" => "100%"),
  45.  
  46.  
  47.  
  48. )),
  49. false,
  50. Array("HIDE_ICONS" => "Y")
  51. );?>
  52.  

2. Компонент fileman.light_editor
  1. <?$APPLICATION->IncludeComponent(
  2. "bitrix:fileman.light_editor",
  3. "",
  4. Array(
  5. "CONTENT" => $_POST['DETAIL_TEXT'],
  6. "INPUT_NAME" => "DETAIL_TEXT",
  7. "INPUT_ID" => "detail_text",
  8. "WIDTH" => "100%",
  9. "HEIGHT" => "224px",
  10. "RESIZABLE" => "Y",
  11. "VIDEO_ALLOW_VIDEO" => "N",
  12. "USE_FILE_DIALOGS" => "N",
  13. "FLOATING_TOOLBAR" => "Y",
  14. "ARISING_TOOLBAR" => "N",
  15. "ID" => "detail_editor_id",
  16. "JS_OBJ_NAME" => "detail_editor_js_obj_name",
  17. "INIT_BY_JS" => false
  18. ),
  19. false
  20. );?>

Вместо компонентов, также конечно можно использовать и обычное текстовое поле input или textarea, но лучше использовать готовые компоненты на своих страницах с нужными кнопками и затем форматировать их на сервере, как указанно выше.
Загрузка

170 просмотров
22.05.2018
Теги: 1с-битрикс



Комментариев пока нет
Оставить комментарий
 
Текст сообщения*
Защита от автоматических сообщений
 


Сервисы




Последние публикации

15.Июн.2018 Пагинация REL PREV NEXT 1С-Битрикс
Что бы облегчить поисковикам работу можно указать в теге hea...

07.Июн.2018 Как выровнять блок по центру экрана
Что бы выровнять блок по горизонтали, достаточно прописать с...

07.Июн.2018 Билайн продолжает списывать деньги при минусе
Это продолжение предыдущей статьи.
В прошлый раз я пис...

30.Май.2018 Новая версия 1С-Битрикс 18
Вышла новая версия 1С-Битрикс: Управление сайтом версии 18.0...

22.Май.2018 Настройка ЧПУ в 1С-Битрикс
Самый главный файл в 1С-Битрикс для настройки ЧПУ это urlrew...

22.Май.2018 Форматирования BB кода в 1С-Битрикс
Часто возникает ситуация, когда надо отформатировать текст, ...

21.Дек.2017 Не работает init.php
Если вы вносите правки в системный файл Битрикс init.php и н...

06.Июн.2017 Не выводятся деньги с QIWI на карту Сбербанка
При выводе средств из кашелька КИВИ (Visa QIWI Wallet...

26.Май.2017 Как правильно составлять задание для программиста на кворке
Многие делая заказ на бирже фриланса (кворк, fl.ru, free...

16.Май.2017 Запускается хром с рекламным сайтом
Очень часто в последнее время на моем компьютере начал самоп...