news.list
Списки новостей, статей, акций — всё, что выводится этим компонентом.
Что добавить
result_modifier.php шаблона:
use mrLexndr\Translate\IblockHelper;
foreach ($arResult['ITEMS'] as &$arItem) {
IblockHelper::substituteStandardFields($arItem);
}
unset($arItem);
После этого в NAME, PREVIEW_TEXT, DETAIL_TEXT и переведённых свойствах
лежат значения на языке страницы.
Что нужно, чтобы это сработало
- Инфоблок отмечен в списке целевых, и для языка созданы свойства — Инфоблоки, вкладка «Синхронизация».
- Элементы переведены — Запустить автоперевод.
- Кеш компонента сброшен, иначе увидите прежние значения.
SEO в списках
Если на странице списка нужны переведённые мета-теги, зовите
substituteSectionSeo() — но с оговоркой.
У news.list в ID лежит инфоблок, а не раздел. Поэтому идентификатор
раздела передаётся третьим аргументом явно:
IblockHelper::substituteSectionSeo($arResult, null, (int)$sectionId);
Иначе хелпер возьмёт не тот раздел и подставит чужие мета-теги — молча.
Про производительность
Подстановка на промахе кеша стоит несколько запросов на сущность: цепочка шаблонов, переводы, поля для макросов. Для детальной страницы это ничто, а в списке из сотни элементов складывается.
Поэтому вызывайте её внутри кешируемого компонента, а не поверх готового результата в шаблоне страницы. Тогда цена платится один раз на сборку кеша.