На странице товара проявляется следующая проблема - не с первого раза выводится цена по договору (блок "Ваша цена" https://skr.sh/sSnHQZjn0qa ). Если открыть товар, который ранее какое-то время не открывался, то цена по договору не выводится https://skr.sh/sSnPHNhbKET , если же просто перезагрузить страницу, то выводится https://skr.sh/sSnyAxRPwgp . Иногда нужно перезагрузить страницу несколько раз. Видео - https://skr.sh/vSnwDJSkseJ .
Эта цена выводится для конкретного пользователя, если для него в HL-блоке заведен договор с льготными условиями. При этом условия договора могут распространяться только для части товаров. В итоге, для вывода цены по договору у пользователя должен быть договор и действие договора должно распространяться на текущий товар. Так как в компоненте каталога настроено кэширование https://skr.sh/sSngYHgPO0V , то вывод цены по договору реализован в файле component_epilog.php компонента catalog.element , так как по логики фреймворка эта часть шаблона выполняется всегда и предназначена как раз таки для данных, которые зависят от посетителя страницы. Подгрузка цены по договору реализована в отдельном скрипте contract-price.php, который подключается в файле component_epilog.php https://skr.sh/sSnchsQhgn1 . Логика скрипта contract-price.php такая - для текущего пользователя ищется договор и цена по договору для текущего товара. Если цена по договору определена, то она выводится на страницу с помощью JS-скрипта https://skr.sh/sSnRvxitKAN .
Предполагаю, что решение проблемы кроется в настройках кэша.
Провел ряд тестов: 1. Если для двух пользователей существует цена по договору для определенного товара, то после прогрузки цены для одного пользователя, она с первого раза выводится для другого. Предположу, что при прогрузке блока "Ваша цена" одним пользователем, он попадает в кэш и тогда другому этот блок выводится готовым из кэша. 2. На сайте настроены поддомены для городов, например, https://finestra.biz/ и https://vladivostok.finestra.biz/ . И если прогрузить цену по договору для одного города, то на другом она не выведется с первого раза, тоже придется обновлять страницу. Видео - https://skr.sh/vSnA2RTYYe6 . 3. Добавил отладочный код в скрипт contract-price.php, который при выполнении записывает в файл цену договора https://skr.sh/sSn8IEDHmIX . Таким образом убедился, что когда цена по договору не выводится, то и файл не создается, т. е. скрипт не исполняется. Хотя должен всегда исполняться, так как он вызывается в component_epilog.php, который должен выполняться при каждом вызове компонента независимо от настроек кэша. 4. Есть тестовая копия сайта для разработки. Там эта проблема не проявляется, хотя все файлы и настройки кэша идентичны.