18  /  26

Переменные

Просмотров: 41291
Дата последнего изменения: 19.08.2021
Роберт Басыров
Сложность урока:
2 уровень - несложные понятия и действия, но не расслабляйтесь.
1
2
3
4
5
Недоступно в лицензиях:
Ограничений нет

При адаптации сайта на технологию Композитный сайт необходимо перевести некоторые переменные с PHP на JS.

bitrix_sessid_get разный для разных пользователей. Это особенность страниц, созданных на Bitrix Framework. В режиме Композитного сайта его нельзя использовать в шаблонах. Если он используется, то для корректной работы его необходимо заменить на соответствующий JS скрипт: BX.message('bitrix_sessid') или BX.bitrix_sessid().

При этом выполнение скрипта будет приостановлено до момента получения данных из localstorage (если это не первый хит пользователя на вашем сайте) и/или с веб-сервера на втором хите.

Аналогичную замену нужно произвести (с PHP на JS) для USER_ID, SERVER_TIME и информации, имеющей отношение к временной зоне (SERVER_TZ_OFFSET, USER_TZ_OFFSET и USER_TZ_AUTO) пользователей сервера. Ко всем им нужно обращаться через BX.message.

Что происходит при обращении к странице. Сначала эти данные ищутся в самих месседжах. (Если страница отдаётся не из кеша, то они есть.) Далее проверяется localstorage. (Там кешируются данные, если они были получены ранее.) Если данных нет ни там, ни там, что само по себе - крайне редкая ситуация, то делается синхронный запрос, который визуально блокирует выполнение всей страницы до получения новых данных.

Примечание: Использование ряда серверных переменных (Например: $_SERVER['HTTP_USER_AGENT']) в шаблонах будет ошибкой, которая к тому же довольно сложно диагностируется.

Например, при включенном сжатии в главном модуле для разных браузеров генерятся разные файлы стилей, как следствие меняется контрольная сумма html файла и происходит его перезапись.

Функция bitrix_sessid_post генерирует hidden поле с хешом от ID сессии, чтобы "подписывать" все формы в компонентах (защита от CSRF). Теперь эта функция вернет пустой value, а реальное значение установится через JavaScript.


32
Курсы разработаны в компании «1С-Битрикс»

Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
Развернуть комментарии