В нашей компании уже длительное время при разработке сайтов используются так называемые "некешируемые области" — штука, позволяющая исполнять код в любом месте шаблона компонента вне зависимости от кеша. Применяются они, в основном, в интернет-магазинах и корпоративных сайтах для следующих задач:
Отображение актуального количества товара на складе;
Изменение поведения блока "Добавить в корзину" в зависимости от наличия товара в корзине;
Какие-нибудь рейтинги-голосовалки у элементов каталога;
Реализация была довольно простенькая — глобальная переменная, несколько функций и всё. Скопировал файл, подключил и пользуйся. Но пришло время что-то менять! И я решил сделать модуль в маркетплейс для внутренних нужд. А потом ещё раз подумал — и решил сделать его доступным всем. Собственно, вот модуль "Некешируемая область", а тут небольшая документация с примером использования. Внимание. Модуль требует для работы PHP 5.3, хотя в свете выхода будущей версии битрикса это не страшно.
Панчук Сергей, В месте, где надо показать компонент, пишите <?\itc\UncachedArea::show('comments');?> А в любом другом месте (в element.php или component_epilog.php, которые отрабатывают без кеша) вставляете вызов компонента комментариев в обёртку: <?\itc\UncachedArea::startCapture('comments');?> <?$APPLICATION->IncludeComponent(...);?> <?\itc\UncachedArea::endCapture();?>
Нейман Андрей, заметил такую особенность - если в компоненте вписано "AJAX_MODE" => "Y" - компонент выводится вверху шаблона. Т.е. оно как бы игнорирует то место где прописано <?\itc\UncachedArea::show('comments');?> Что скажите? Можно это побороть?
Панчук Сергей, модуль для аякса смысла не имеет в принципе, т.к. вы самостоятельно можете подменять данные. Сама проблема связана с нарушением последовательности останова буферизации (там по принципу стека старт и окончание должны быть).
Андрей Нейман,Огромная благодарность за пример с выводом в некешируемую область другого компонента (ну или в моем случае - самостоятельного куска кода:)) Добавьте, плиз, его в общую документацию по проекту - для полноты данных:)
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».