Добрый день.
На странице товара проявляется следующая проблема - не с первого раза выводится цена по договору (блок "Ваша цена" ). Если открыть товар, который ранее какое-то время не открывался, то цена по договору не выводится , если же просто перезагрузить страницу, то выводится . Иногда нужно перезагрузить страницу несколько раз. Видео - .
Эта цена выводится для конкретного пользователя, если для него в HL-блоке заведен договор с льготными условиями. При этом условия договора могут распространяться только для части товаров.
В итоге, для вывода цены по договору у пользователя должен быть договор и действие договора должно распространяться на текущий товар.
Так как в компоненте каталога настроено кэширование , то вывод цены по договору реализован в файле component_epilog.php компонента catalog.element , так как по логики фреймворка эта часть шаблона выполняется всегда и предназначена как раз таки для данных, которые зависят от посетителя страницы.
Подгрузка цены по договору реализована в отдельном скрипте contract-price.php, который подключается в файле component_epilog.php .
Логика скрипта contract-price.php такая - для текущего пользователя ищется договор и цена по договору для текущего товара. Если цена по договору определена, то она выводится на страницу с помощью JS-скрипта .
Предполагаю, что решение проблемы кроется в настройках кэша.
Провел ряд тестов:
1. Если для двух пользователей существует цена по договору для определенного товара, то после прогрузки цены для одного пользователя, она с первого раза выводится для другого. Предположу, что при прогрузке блока "Ваша цена" одним пользователем, он попадает в кэш и тогда другому этот блок выводится готовым из кэша.
2. На сайте настроены поддомены для городов, например, и . И если прогрузить цену по договору для одного города, то на другом она не выведется с первого раза, тоже придется обновлять страницу. Видео - .
3. Добавил отладочный код в скрипт contract-price.php, который при выполнении записывает в файл цену договора . Таким образом убедился, что когда цена по договору не выводится, то и файл не создается, т. е. скрипт не исполняется. Хотя должен всегда исполняться, так как он вызывается в component_epilog.php, который должен выполняться при каждом вызове компонента независимо от настроек кэша.
4. Есть тестовая копия сайта для разработки. Там эта проблема не проявляется, хотя все файлы и настройки кэша идентичны.
Прошу помочь разобраться с этой проблемой.
На странице товара проявляется следующая проблема - не с первого раза выводится цена по договору (блок "Ваша цена" ). Если открыть товар, который ранее какое-то время не открывался, то цена по договору не выводится , если же просто перезагрузить страницу, то выводится . Иногда нужно перезагрузить страницу несколько раз. Видео - .
Эта цена выводится для конкретного пользователя, если для него в HL-блоке заведен договор с льготными условиями. При этом условия договора могут распространяться только для части товаров.
В итоге, для вывода цены по договору у пользователя должен быть договор и действие договора должно распространяться на текущий товар.
Так как в компоненте каталога настроено кэширование , то вывод цены по договору реализован в файле component_epilog.php компонента catalog.element , так как по логики фреймворка эта часть шаблона выполняется всегда и предназначена как раз таки для данных, которые зависят от посетителя страницы.
Подгрузка цены по договору реализована в отдельном скрипте contract-price.php, который подключается в файле component_epilog.php .
Логика скрипта contract-price.php такая - для текущего пользователя ищется договор и цена по договору для текущего товара. Если цена по договору определена, то она выводится на страницу с помощью JS-скрипта .
Предполагаю, что решение проблемы кроется в настройках кэша.
Провел ряд тестов:
1. Если для двух пользователей существует цена по договору для определенного товара, то после прогрузки цены для одного пользователя, она с первого раза выводится для другого. Предположу, что при прогрузке блока "Ваша цена" одним пользователем, он попадает в кэш и тогда другому этот блок выводится готовым из кэша.
2. На сайте настроены поддомены для городов, например, и . И если прогрузить цену по договору для одного города, то на другом она не выведется с первого раза, тоже придется обновлять страницу. Видео - .
3. Добавил отладочный код в скрипт contract-price.php, который при выполнении записывает в файл цену договора . Таким образом убедился, что когда цена по договору не выводится, то и файл не создается, т. е. скрипт не исполняется. Хотя должен всегда исполняться, так как он вызывается в component_epilog.php, который должен выполняться при каждом вызове компонента независимо от настроек кэша.
4. Есть тестовая копия сайта для разработки. Там эта проблема не проявляется, хотя все файлы и настройки кэша идентичны.
Прошу помочь разобраться с этой проблемой.