Добрый день!
Проблема такая - Есть компонент "Комплексный каталог", внутри шаблона "catalog.element" разместил сторонний компонент "Комментарии", на котором поле для ввода и кнопка "Отправить". При нажатии на "Отправить" происходит отправка формы, НО в этот самый момент возвращается кешированная страница, т.е. данные формы даже не попадают в скрипт компонента комментариев.
В случае, когда я админом открываю страницу с явным "clear_cache=Y", отправляю комментарий, все работает, т.к. при нажатии "Отправить" вместе с данными формы отправляется и флаг сброса кеша, следовательно скрипт срабатывает.Насколько я понимаю логику Битриксового кеша, он сам обновит страницу, если любое поле инфоблока изменится, именно поэтому стандартный механизм комментариев и работает (т.к. обновляет поле FORUM_MESSAGE_CNT элемента инфоблока).
Подскажите, возможно ли как-то заставить Битрикс понять, что внутри компонента "Комплексный каталог - Элемент детально" имеется ещё один компонент, у которого тоже есть своя логика, свой скрипт, который должен выполняться.
Пробовал решить проблему такими способами:
1) При вызове внутри шаблона catalog.element компонента комментария передавать ему ссылку на родительский компонент.
Думал, что это создаст какие-то логические связи внутри Битрикса и подскажет ему, что вложенный компонент
2) Перенес вызов стороннего компонента не в шаблон catalog.element, а непосредственно в catalog / element.php (как раз туда, где вызывается
Помогло, кеширование стало обходить мой компонент, давая ему отработать. Этого, вообщем-то стоило ожидать, т.к. в кеш попадает вывод именно catalog.element, а наш компонент теперь из него вынесен на уровень выше.
3) Отключить автокеширование в компоненте :(
В итоге я понял, что если не загонять в шаблон кешируемого компонента другой компонент, то все будет нормально.
Вопрос:
Можно ли как-то все-таки вставить внешний компонент в код шаблона кешируемого компонента и оповещать его о том, что кеш для конкретной данной страницы надо обновить?
Проблема такая - Есть компонент "Комплексный каталог", внутри шаблона "catalog.element" разместил сторонний компонент "Комментарии", на котором поле для ввода и кнопка "Отправить". При нажатии на "Отправить" происходит отправка формы, НО в этот самый момент возвращается кешированная страница, т.е. данные формы даже не попадают в скрипт компонента комментариев.
В случае, когда я админом открываю страницу с явным "clear_cache=Y", отправляю комментарий, все работает, т.к. при нажатии "Отправить" вместе с данными формы отправляется и флаг сброса кеша, следовательно скрипт срабатывает.Насколько я понимаю логику Битриксового кеша, он сам обновит страницу, если любое поле инфоблока изменится, именно поэтому стандартный механизм комментариев и работает (т.к. обновляет поле FORUM_MESSAGE_CNT элемента инфоблока).
Подскажите, возможно ли как-то заставить Битрикс понять, что внутри компонента "Комплексный каталог - Элемент детально" имеется ещё один компонент, у которого тоже есть своя логика, свой скрипт, который должен выполняться.
Пробовал решить проблему такими способами:
1) При вызове внутри шаблона catalog.element компонента комментария передавать ему ссылку на родительский компонент.
Код |
---|
$APPLICATION->IncludeComponent("prmedia:comments", ".default", array(/*параметры*/), $component); |
2) Перенес вызов стороннего компонента не в шаблон catalog.element, а непосредственно в catalog / element.php (как раз туда, где вызывается
Код |
---|
$APPLICATION->IncludeComponent("bitrix:catalog.element", "",.....); |
3) Отключить автокеширование в компоненте :(
В итоге я понял, что если не загонять в шаблон кешируемого компонента другой компонент, то все будет нормально.
Вопрос:
Можно ли как-то все-таки вставить внешний компонент в код шаблона кешируемого компонента и оповещать его о том, что кеш для конкретной данной страницы надо обновить?