Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!
Менять я пробовал в инфоблоке, думал что если я на ru или на eng напишу булет меняться
При создании есть 2 сайта: s1 и en вся основа на s1, но при переходе на en он должен отображать тотже s1 и менять title и desription на eng. Решение котороя я предпринял это:
1) Убрал из инфоблока "Шаблон META DESCRIPTION", "Шаблон META TITLE" и создал 4 св-ва с названием "META DESCRIPTION RUS", "META DESCRIPTION ENG", "META TITLE RUS", "META TITLE RUS" для элементов. Также создал 4 Пользовательских поля UF_META_DESC_RUS, UF_META_DESC_ENG, UF_META_TITLE_RUS, UF_META_TITLE_ENG для раздела.
2) В созданном файле создаю component_epilog.php через условия есть у элемента описание или нет мы берем у раздела, также через функцию SetPageProperty я передаю description, тот который мне нужно для рус или англ. тоже я проделываю и для title.
Но мне интересно, можно ли было сделать намного проше в моем варианте?
Разве что покопавшись в коде ядра можно было бы найти метод получения значения META_TITLE и META_DESCRIPTION из встроенных "шаблонов" - сэкономили бы на рутине со свойствами и пользовательскими полями. А избежать работы с component_epilog и задействовать компонентный кеш для 2х языков можно передав параметр языка сайта в один из параметров компонента -- по умолчанию ключ кеша содержит хеш от всех параметров компонента.
Здравствуйте и спасибо, что ответили, но мне нельзя лазить в ядро так как я могу нарушить целостность(так как я с битриксом дружу всего 1 месяц) и при обновлении все может исчезнуть. И звените, но я не много непонел про что вы имели ввиду когда говорили: " задействовать компонентный кеш для 2х языков можно передав параметр языка сайта в один из параметров компонента -- по умолчанию ключ кеша содержит хеш от всех параметров компонента. "
Под "лазить в ядро" я имел в виду читать, а не писать =) Изучение исходников ядра открывает возможности применения ещё не документированного (и ещё неизвестно когда оно будет) нового функционала.
Про кеширование - https://dev.1c-bitrix.ru/api_help/main/reference/cbitrixcomponent/startresultcache.php
"Кеш зависит от текущего сайта ( SITE_ID), имени компонента, имени шаблона, входных параметров $arParams. " То есть для одного и того же места добавив в параметры "CUR_LANG" => "RU" или "EN" вы получите 2 закешированных шаблона. И код из component_epilog можно было бы убрать в template.php
Ваш комментарий к ответу:
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
При создании есть 2 сайта: s1 и en вся основа на s1, но при переходе на en он должен отображать тотже s1 и менять title и desription на eng. Решение котороя я предпринял это:
1) Убрал из инфоблока "Шаблон META DESCRIPTION", "Шаблон META TITLE" и создал 4 св-ва с названием "META DESCRIPTION RUS", "META DESCRIPTION ENG", "META TITLE RUS", "META TITLE RUS" для элементов. Также создал 4 Пользовательских поля UF_META_DESC_RUS, UF_META_DESC_ENG, UF_META_TITLE_RUS, UF_META_TITLE_ENG для раздела.
2) В созданном файле создаю component_epilog.php через условия есть у элемента описание или нет мы берем у раздела, также через функцию SetPageProperty я передаю description, тот который мне нужно для рус или англ. тоже я проделываю и для title.
Но мне интересно, можно ли было сделать намного проше в моем варианте?