потому что конструкцию $APPLICATION->ShowViewContent() нельзя использовать в кешируемой области (в вашем случае это кешируемый шаблон компонента). Тут есть несколько путей решения задачи: 1. Выводить в некешируемой области (т.е. перенести вывод в другое место) 2. Использовать собственную буферизацию (помещать все содержимое кешируемого шаблона в буфер и затем в нем менять определнную маску на нужное содержимое) 3. Сделать АЯКС обновление (вывод) списка комментов (отзывов) при открытии страницы.
3 - очень нежелательный для меня способ. по поводу 2 : мог бы кто подсказать примерную схему ?
Перед вызовом кешируемого компонента делаете ob_start();
затем в component_epilog делаете
$content = ob_get_clean();
echo str_replace('#NEED_TO_REPLACE#', $replace, $content);
где,
#NEED_TO_REPLACE# - это маска для замены, её нужно разметить в template.php в том месте где должен быть некеширующийся контент
$replace - это то что должно быть в этом месте.
подробности найдёте в одной из публикаций моего блога