IblockTable

Класс Modulemarket\Translator\Iblock\IblockTable — ORM-таблица переводов настроек инфоблока в 1С-Битрикс. Наследует Bitrix\Main\Entity\DataManager, таблица БД — fan_translator_iblock. Карта полей строится как объединение ключей ID, LANGUAGE_ID, SITE_ID с подмножеством полей базовой карты Bitrix\Iblock\IblockTable, отобранных методом getTranslatableFields().

Строка перевода инфоблока — запись с составным первичным ключом: ID инфоблока + LANGUAGE_ID + SITE_ID. Хранит переводимые атрибуты типа инфоблока для выбранного языка и сайта.

Примечание — исходный файл класса: /bitrix/modules/modulemarket.translator/lib/iblock/iblocktable.php.

Важно! Перед вызовами подключайте модули iblock и modulemarket.translator. В выборках и при добавлении записей явно задавайте LANGUAGE_ID и SITE_ID в параметрах или через фильтр — значения по умолчанию полей завязаны на константы текущего контекста.

Обзор API класса

Компонент Описание
getTableName() Возвращает имя таблицы: fan_translator_iblock.
getMap() Поля ID, LANGUAGE_ID, SITE_ID и переводимые колонки из карты Iblock\IblockTable.
getTranslatableFields() Подмножество переводимых полей: NAME, DESCRIPTION, ACTIVE.
UseForcedUpdates($id) Проверка режима «принудительных обновлений» для инфоблока по константе окружения.

Метод IblockTable::UseForcedUpdates()

Метод статический: определяет, включено ли для данного инфоблока принудительное обновление переводов через именованную PHP-константу. Примечание по развитию: в коде модуля запланирован перенос логики в настройки модуля вместо констант.

Сигнатура метода

Code Copy code Code copied!
1
bool IblockTable::UseForcedUpdates($id);

Параметры

Параметр Описание С версии
$id Числовой идентификатор инфоблока (ID в Bitrix\Iblock\IblockTable).  

Возвращаемое значение

Возвращает true, если в коде определена константа вида FORCE_TRANSLATE_IB_ID_{ID}, где {ID} — переданный идентификатор инфоблока. Иначе возвращается false.

Пример

Code Copy code Code copied!
1
2
3
4
5
6
7
8
9
10
use Modulemarket\Translator\Iblock\IblockTable;

// В php_interface или конфигурации до вызова:
// define('FORCE_TRANSLATE_IB_ID_5', true);

$iblockId = 5;

if (IblockTable::UseForcedUpdates($iblockId)) {
    echo 'Для инфоблока включены принудительные обновления перевода.';
}

Формат константы FORCE_TRANSLATE_IB_ID_*

Пример: чтение перевода инфоблока (getList)

Code Copy code Code copied!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
use Bitrix\Main\Loader;
use Modulemarket\Translator\Iblock\IblockTable;

Loader::includeModule('iblock');
Loader::includeModule('modulemarket.translator');

$iblockId = 12;

$res = IblockTable::getList([
    'filter' => [
        '=ID' => $iblockId,
        '=LANGUAGE_ID' => 'ua',
        '=SITE_ID' => 's1',
    ],
    'select' => ['ID', 'LANGUAGE_ID', 'SITE_ID', 'NAME', 'DESCRIPTION', 'ACTIVE'],
    'limit' => 1,
]);

if ($row = $res->fetch()) {
    echo htmlspecialcharsbx($row['NAME']);
}

Пример: добавление строки перевода инфоблока (add)

Code Copy code Code copied!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
use Bitrix\Main\Loader;
use Modulemarket\Translator\Iblock\IblockTable;

Loader::includeModule('iblock');
Loader::includeModule('modulemarket.translator');

$result = IblockTable::add([
    'ID' => 12,
    'LANGUAGE_ID' => 'ua',
    'SITE_ID' => 's1',
    'ACTIVE' => 'Y',
    'NAME' => 'Название типа инфоблока (перевод)',
    'DESCRIPTION' => 'Описание на выбранном языке',
]);

if ($result->isSuccess()) {
    echo 'Перевод параметров инфоблока сохранён.';
} else {
    print_r($result->getErrorMessages());
}

Количество показов: 688
Дата изменения: 15.05.2026 23:32:40