Битрикс. Выводим свойство типа html/текст в нужном нам месте
В 1С-Битрикс свойства типа «HTML/Текст» часто выводятся некорректно.
Вместо HTML-разметки на странице могут отображаться:
- теги;
- экранированные символы;
- <p>;
- <br>;
- " и другие спецсимволы.
Для корректного вывода HTML-свойства я использую:
<?=htmlspecialcharsBack(
$arItem["PROPERTIES"]['Ваше_свойство']["VALUE"]["TEXT"]
)?>
Что делает htmlspecialcharsBack
Функция:
htmlspecialcharsBack()
преобразует HTML-сущности обратно в нормальный HTML-код.
Почему это важно
Битрикс часто сохраняет HTML в экранированном виде:
<strong>Текст</strong>
Без:
htmlspecialcharsBack()
браузер покажет теги текстом.
Какой тип свойства нужен
Свойство инфоблока должно быть:
HTML/Текст
Как получить текст свойства
Для HTML-свойств Битрикс хранит данные в:
$arItem["PROPERTIES"]["CODE"]["VALUE"]["TEXT"]
А тип содержимого:
$arItem["PROPERTIES"]["CODE"]["VALUE"]["TYPE"]
Пример свойства HTML
В админке Битрикс:
<p>Текст</p>
<strong>Жирный</strong>
После вывода через:
htmlspecialcharsBack()
HTML будет корректно обработан браузером.
Полный пример
<div class="content">
<?=htmlspecialcharsBack(
$arItem["PROPERTIES"]["TEXT_HTML"]["VALUE"]["TEXT"]
)?>
</div>
Проверка существования свойства
Лучше сразу делать проверку:
<?if (!empty(
$arItem["PROPERTIES"]["TEXT_HTML"]["VALUE"]["TEXT"]
)):?>
<?=htmlspecialcharsBack(
$arItem["PROPERTIES"]["TEXT_HTML"]["VALUE"]["TEXT"]
)?>
<?endif;?>
Альтернативный способ
Иногда используют:
<?=$arItem["PROPERTIES"]["CODE"]["~VALUE"]["TEXT"]?>
Но:
htmlspecialcharsBack()
обычно работает стабильнее и понятнее.
Где используется такой вывод
- SEO-тексты;
- описания разделов;
- контент инфоблоков;
- дополнительные блоки;
- характеристики товаров;
- контент страниц.
Важно про безопасность
Используйте:
htmlspecialcharsBack()
только:
- для доверенного HTML;
- контента из админки;
- редакторов Bitrix.
Не выводите таким способом:
- данные пользователей;
- непроверенный HTML.
Итог
Для корректного вывода свойства типа HTML/Текст в 1С-Битрикс удобно использовать:
<?=htmlspecialcharsBack(
$arItem["PROPERTIES"]['CODE']["VALUE"]["TEXT"]
)?>
Это позволяет:
- правильно выводить HTML;
- обрабатывать теги браузером;
- избежать отображения HTML-кода текстом.
Комментарии