news.list

Списки новостей, статей, акций — всё, что выводится этим компонентом.

Что добавить

result_modifier.php шаблона:

use mrLexndr\Translate\IblockHelper;

foreach ($arResult['ITEMS'] as &$arItem) {
    IblockHelper::substituteStandardFields($arItem);
}
unset($arItem);

После этого в NAME, PREVIEW_TEXT, DETAIL_TEXT и переведённых свойствах лежат значения на языке страницы.

Что нужно, чтобы это сработало

  1. Инфоблок отмечен в списке целевых, и для языка созданы свойства — Инфоблоки, вкладка «Синхронизация».
  2. Элементы переведены — Запустить автоперевод.
  3. Кеш компонента сброшен, иначе увидите прежние значения.

SEO в списках

Если на странице списка нужны переведённые мета-теги, зовите substituteSectionSeo() — но с оговоркой.

У news.list в ID лежит инфоблок, а не раздел. Поэтому идентификатор раздела передаётся третьим аргументом явно:

IblockHelper::substituteSectionSeo($arResult, null, (int)$sectionId);

Иначе хелпер возьмёт не тот раздел и подставит чужие мета-теги — молча.

Про производительность

Подстановка на промахе кеша стоит несколько запросов на сущность: цепочка шаблонов, переводы, поля для макросов. Для детальной страницы это ничто, а в списке из сотни элементов складывается.

Поэтому вызывайте её внутри кешируемого компонента, а не поверх готового результата в шаблоне страницы. Тогда цена платится один раз на сборку кеша.