На данный момент мультиязычность для инфоблоков не реализована. Вы можете либо использовать 2 инфоблока либо использовать дополнительные свойства. Можно дублировать элементы в инфоблоке для русской и английской локализации, а в шаблоне компонента выводить элементы в зависимости от языка. Так же вы можете выполнить самостоятельную доработку программного кода для реализации требуемого вам функционала.
С уважением, специалист техподдержки Лысаковский Илья. 08.10.2018 17:04:34
$hlblock = HL\HighloadBlockTable::getById(4)->fetch(); // id highload блока
Но компонент детальной страницы товара не возвращает ID highload блока !!! И из-за этого нужно пользоваться "getList", а не "getById". Оставлю код тут для "потомков".
Код
use Bitrix\Highloadblock as HL;
use Bitrix\Main\Entity;
if("ПРОВЕРЯЕМ СПРАВОЧНИКИ И ПРЕОБРАЗУЕМ ИХ ЗНАЧЕНИЯ"&&CModule::IncludeModule('highloadblock')){
foreach ($arResult['PROPERTIES'] as $key => &$property) {
if($property["PROPERTY_TYPE"]=="S"&&$property["USER_TYPE_SETTINGS"]["TABLE_NAME"]){
//получим данынй HL
$hldata = array_pop(HL\HighloadBlockTable::getList(array('filter' => array('TABLE_NAME'=>$property["USER_TYPE_SETTINGS"]["TABLE_NAME"])))->fetchAll());
//затем инициализировать класс сущности
$entityClass = HL\HighloadBlockTable::compileEntity($hldata)->getDataClass();
$res = $entityClass::getList(array('select' => array('*'),'order' => array('ID' => 'ASC'),'filter' => array('UF_XML_ID' => $property["VALUE"])))->fetchAll();
if(is_array($res)&&!empty($res)){
$property["~VALUE"] = $res;
}
}
}
}
А как научить CIBlockSection::GetList считать только нужные элементы? Например, у меня стоит привязка к пользователям и в списке разделов нужно вывести разделы в которых есть элементы для пользователя.. т.е. нужен фильтр для ELEMENT_CNT, либо 100500 запросов чинить для фильтра элементов прямо в php?