Области контента и несколько языков

Область — фрагмент страницы с постоянным кодом, например home.intro или footer.address. Текст хранится в базе данных. Разработчик один раз размещает вызов в шаблоне, после чего редактор меняет содержимое на странице.

Это альтернатива файловым включаемым областям Битрикса для контента. Модуль не исполняет PHP из значения области и не переносит существующие include-файлы автоматически.

Код, тип и значение

ЧастьНазначение
Определение в ContentItemsЕдиный код и тип области
Значение в ContentValuesТекст для конкретного языка и сайта
КонтекстТекущие LANGUAGE_ID и SITE_ID, определённые сервером

Код уникален в хранилище и ограничен 255 символами. Выбирайте понятные текстовые коды с префиксом раздела. Полностью числовой ключ трактуется API как ID, поэтому для символьного кода он не подходит.

ТипКогда использоватьВывод
textКороткая подпись или заголовокHTML-символы экранируются
textareaНесколько строк обычного текстаЭкранирование и сохранение переносов строк
htmlФорматированный фрагментДоверенный HTML без экранирования

Тип относится ко всему определению, а не к одному переводу. HTML-области должны редактировать доверенные сотрудники: это отличается от фильтрации HTML в собственном пользовательском поле модуля.

Изменить содержимое

  1. Откройте нужную страницу нужного сайта и языка под учётной записью редактора.
  2. Наведите указатель на область и нажмите карандаш.
  3. Проверьте код в заголовке окна.
  4. Измените текст и нажмите «Сохранить».
  5. Проверьте страницу после обновления. «Отмена» оставляет прежнее значение.

Редактор области home.intro на русском сайте

Одна область home.intro, русский контекст. На стенде исходное значение совпадает с кодом; его заменяют содержательным текстом проекта.

Отдельные значения для языка и сайта

Одинаковый вызов showBlock('home.intro') можно использовать на разных сайтах. На каждом выводится только точное совпадение языка и сайта.

КонтекстПример значения после заполнения
ru + s1«Добро пожаловать в наш магазин»
en + s2«Welcome to our store»

Это пример данных, а не автоматический перевод. Язык интерфейса административной панели сам по себе не меняет язык публичной страницы.

Английский редактор той же области с пустым значением

На втором сайте home.intro ещё не заполнена. Русский текст не подставляется: редактор показывает пустое значение и английские кнопки.

Если перевод отсутствует, посетитель не получает значение другого языка или сайта. У редактора пустая область получает заметную метку, чтобы её можно было открыть. Нет общего значения «для всех сайтов» и автоматического резервного языка. Старые строки без сайта не используются как запасной вариант.

Подключение в шаблоне

PHP
use Bitrix\Main\Loader;
use Kokhanenko\Hlblocks\Template\ContentItemWrapper;

if (Loader::includeModule('kokhanenko.hlblocks')) {
    ContentItemWrapper::setScope('home');
    ContentItemWrapper::showBlock('intro', 'div', 'intro');
    ContentItemWrapper::setScope(null);
}

Префикс превращает intro в home.intro. Сбрасывайте его после блока, чтобы он не повлиял на последующие вызовы. Если передаёте полный код, оставьте scope пустым. Имя тега и CSS-класс должны задаваться разработчиком, а не посетителем.

Первое открытие отсутствующей области редактором с правом записи может создать определение типа text. Отсутствующий перевод существующего определения не создаётся простым чтением; заполните его и сохраните форму.

Управление и права

Раздел Kokhanenko → HL-блоки → Области содержит ссылки на оба хранилища и вкладку «Права доступа». Структуру и типы меняет администратор, ежедневные значения удобнее редактировать на странице. Не удаляйте внутренние хранилища вручную и не подключайте к ним общий редактор HL-элементов.

Для чтения без панели редактирования используйте фасад Content. Для разрешений — права доступа.