Николаев Виталий
Блог веб-разработчика: Битрикс, PHP, Python, Linux и SEO
Битрикс Битрикс
23.09.2018

Битрикс. Выводим свойство типа html/текст в нужном нам месте

В 1С-Битрикс свойства типа «HTML/Текст» часто выводятся некорректно.

Вместо HTML-разметки на странице могут отображаться:

  • теги;
  • экранированные символы;
  • <p>;
  • <br>;
  • " и другие спецсимволы.

Для корректного вывода HTML-свойства я использую:

<?=htmlspecialcharsBack(
    $arItem["PROPERTIES"]['Ваше_свойство']["VALUE"]["TEXT"]
)?>

Что делает htmlspecialcharsBack

Функция:

htmlspecialcharsBack()

преобразует HTML-сущности обратно в нормальный HTML-код.

Почему это важно

Битрикс часто сохраняет HTML в экранированном виде:

&lt;strong&gt;Текст&lt;/strong&gt;

Без:

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-кода текстом.
12 просмотров

Комментарии

Где заказы?
Почему у одних компаний очередь из клиентов, а у других пустой сайт и тишина?
Телеграм канал «Где заказы?» — про продажи, сайты и ошибки бизнеса на реальных примерах. Подписаться