ElementTable

Класс Modulemarket\Translator\Iblock\ElementTable — ORM-таблица переводов элементов инфоблока в 1С-Битрикс. Наследует Bitrix\Main\Entity\DataManager, физическая таблица — fan_translator_iblock_element. Связь с основным элементом задаётся полем ELEMENT типа Reference на Bitrix\Iblock\ElementTable.

Элемент перевода — строка с составным первичным ключом: ID элемента инфоблока + LANGUAGE_ID + SITE_ID. Карта полей строится объединением базовой карты Iblock\ElementTable с переводимыми колонками из getTranslatableFields().

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

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

Обзор элементов API класса

Компонент Описание
getTableName() Имя таблицы БД: fan_translator_iblock_element.
getMap() Поля ID, LANGUAGE_ID, SITE_ID, связь ELEMENT, переводимые поля.
getTranslatableFields() Список переводимых колонок и служебных полей, попадающих в таблицу перевода.
onBeforeAdd / onBeforeUpdate При отсутствии в данных поля TIMESTAMP_X подставляют текущую дату/время.
translated() Проверка наличия строки перевода для элемента и языка.

Метод ElementTable::translated()

Метод статический: проверяет, существует ли в таблице переводов запись для заданного ID элемента и LANGUAGE_ID. Поддерживает мультиязычность: второй аргумент задаёт язык проверки; если не передан, используется текущее значение константы LANGUAGE_ID.

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

Code Copy code Code copied!
1
2
3
4
bool ElementTable::translated(
  $id,
  string $languageId = LANGUAGE_ID
);

Параметры

Параметр Описание С версии
$id Числовой идентификатор элемента инфоблока (совпадает с ID в Bitrix\Iblock\ElementTable).  
$languageId Двухбуквенный код языка (валидатор поля LANGUAGE_ID — длина 2 символа). По умолчанию — LANGUAGE_ID.  

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

Метод возвращает true, если метод getRow() нашёл строку по фильтру ID и LANGUAGE_ID. Если записи нет — возвращается false.

Пример

Code Copy code Code copied!
1
2
3
4
5
6
7
8
9
10
11
12
13
use Bitrix\Main\Loader;
use Modulemarket\Translator\Iblock\ElementTable;

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

$elementId = 12345;

if (ElementTable::translated($elementId, 'ua')) {
    echo 'Перевод на язык ua уже есть.';
} else {
    echo 'Перевода на язык ua нет.';
}

Пример: выборка перевода (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
22
23
24
25
26
27
28
29
use Bitrix\Main\Loader;
use Modulemarket\Translator\Iblock\ElementTable;

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

$elementId = 12345;

$res = ElementTable::getList([
    'filter' => [
        '=ID' => $elementId,
        '=LANGUAGE_ID' => 'ua',
        '=SITE_ID' => 's1',
    ],
    'select' => [
        'ID',
        'LANGUAGE_ID',
        'SITE_ID',
        'NAME',
        'PREVIEW_TEXT',
        'DETAIL_TEXT',
        '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
21
use Bitrix\Main\Loader;
use Modulemarket\Translator\Iblock\ElementTable;

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

$result = ElementTable::add([
    'ID' => 12345,
    'LANGUAGE_ID' => 'ua',
    'SITE_ID' => 's1',
    'ACTIVE' => 'Y',
    'NAME' => 'Название на украинском',
    'PREVIEW_TEXT' => '',
    'DETAIL_TEXT' => '',
]);

if ($result->isSuccess()) {
    echo 'Строка перевода добавлена.';
} else {
    print_r($result->getErrorMessages());
}

Количество показов: 643
Дата изменения: 15.05.2026 23:33:38