Очевидно что при создании модуля обошли стороной HL блоки, функционал явно сырой.
1. Если при вызове HL Блока в getlist вставить "select" => array("*"), то значения вернутся непереведенные. Без этого параметра переводится.
2. Массив переведенных значений имеет дубли в названии ключей UF_UF_ и деже если после использовать функцию RenameRowKeys всё равно не переименовываются, она тоже не работает корректно
3. Выше пункты еще цветочки, в сравнении с работой с самими блоками из админки.
- зашёл в элемент - сохранил на русском
- переключил язык на En - сохранил - в таблице mm_hl_lang_selector появилась запись, но сбросился чекбокс.
- сохраняю повторно без правок - сбрасываются SITE_ID и LANGUAGE_ID в таблице базы
- сохраняю повторно - записывается новая запись и так до бесконечности
Вообще, зачем добавлять в таблицу SITE_ID когда привязка идёт к языку, это лишнее значение.
4. Не корректно работает обработка мультиполей. При сохранении вызывет ошибку
На данный момент работать с HL Блоками невозможно!
Очень хотелось бы чтобы доработали их в ближайшее время.
Прикладываю Видео по ошибкам
==========================
P.S. Поскольку документации нет совершенно по HL Блокам поэтому напишу сюда вызовы, вдруг кому пригодится
$hlblock = Modulemarket\Translator\Highloadblock\HighloadBlockTable::getById($hlblock_id)->fetch();
$entity = \Modulemarket\Translator\Highloadblock\HighLoadBlockTable::compileEntity($hlblock);
$entity_data_class = $entity->getDataClass();
$arRes = $entity_data_class::getList([
'order' => ['UF_SORT' => 'ASC'],
'filter' => $arFilter,
])->fetchAll();
Также можно запустить переименование ключей, UF_UF_ на UF_
\Modulemarket\Translator\Highloadblock\HighLoadBlockTable::RenameRowKeys($arRes);
Только нужно саму функцию переписать
В файле /bitrix/modules/modulemarket.translator/lib/highloadblock/highloadblocktable.php функция RenameRowKeys
Заменить весь код на этот
// Замена UF_UF_ на UF_ / Кастом
foreach ($row as &$subArray) {
$newSubArray = array();
foreach ($subArray as $key => $item) {
$newKey = str_replace('UF_UF_', 'UF_', $key);
$newSubArray[$newKey] = $item;
}
$subArray = $newSubArray;
}
==========================
ОЧЕНЬ надеюсь, что функционал HL блоков получится сделать в самое ближайшее время.
1. Если при вызове HL Блока в getlist вставить "select" => array("*"), то значения вернутся непереведенные. Без этого параметра переводится.
2. Массив переведенных значений имеет дубли в названии ключей UF_UF_ и деже если после использовать функцию RenameRowKeys всё равно не переименовываются, она тоже не работает корректно
3. Выше пункты еще цветочки, в сравнении с работой с самими блоками из админки.
- зашёл в элемент - сохранил на русском
- переключил язык на En - сохранил - в таблице mm_hl_lang_selector появилась запись, но сбросился чекбокс.
- сохраняю повторно без правок - сбрасываются SITE_ID и LANGUAGE_ID в таблице базы
- сохраняю повторно - записывается новая запись и так до бесконечности
Вообще, зачем добавлять в таблицу SITE_ID когда привязка идёт к языку, это лишнее значение.
4. Не корректно работает обработка мультиполей. При сохранении вызывет ошибку
На данный момент работать с HL Блоками невозможно!
Очень хотелось бы чтобы доработали их в ближайшее время.
Прикладываю Видео по ошибкам
==========================
P.S. Поскольку документации нет совершенно по HL Блокам поэтому напишу сюда вызовы, вдруг кому пригодится
$hlblock = Modulemarket\Translator\Highloadblock\HighloadBlockTable::getById($hlblock_id)->fetch();
$entity = \Modulemarket\Translator\Highloadblock\HighLoadBlockTable::compileEntity($hlblock);
$entity_data_class = $entity->getDataClass();
$arRes = $entity_data_class::getList([
'order' => ['UF_SORT' => 'ASC'],
'filter' => $arFilter,
])->fetchAll();
Также можно запустить переименование ключей, UF_UF_ на UF_
\Modulemarket\Translator\Highloadblock\HighLoadBlockTable::RenameRowKeys($arRes);
Только нужно саму функцию переписать
В файле /bitrix/modules/modulemarket.translator/lib/highloadblock/highloadblocktable.php функция RenameRowKeys
Заменить весь код на этот
// Замена UF_UF_ на UF_ / Кастом
foreach ($row as &$subArray) {
$newSubArray = array();
foreach ($subArray as $key => $item) {
$newKey = str_replace('UF_UF_', 'UF_', $key);
$newSubArray[$newKey] = $item;
}
$subArray = $newSubArray;
}
==========================
ОЧЕНЬ надеюсь, что функционал HL блоков получится сделать в самое ближайшее время.