Класс 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.
Сигнатура метода
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.
Пример
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)
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)
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