Заходим в /www/bitrix/modules/main/classes/general/main.php
ищем строки
1 |
foreach (GetModuleEvents("main", "OnEndBufferContent", true) |
заменяем весь этот фореач на
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
foreach (GetModuleEvents("main", "OnEndBufferContent", true) as $arEvent) { if(!isset($_SERVER['event_count'])){ $_SERVER['event_count']=0; } if(!isset($_GET['test'])){ ExecuteModuleEventEx($arEvent, array(&$content)); }else{ $_SERVER['event_count']++; $content.=' '.$_SERVER['event_count']; if($_SERVER['event_count']==4){ $content.= print_r($arEvent,1); continue; }else{ ExecuteModuleEventEx($arEvent, array(&$content)); } } } |
теперь добавим к запросу ?test=1 , что бы пользователи ничего не увидели, а мы смотрели в самом низу страницы, сколько раз вызвается этот обработчик. Внизу выводятся цифры.
Регулируя переменную ниже, и обновляя страницу, смотрим, в какой момент у нас портится html.
$_SERVER[‘event_count’]==4
все содержимое страницы находится в переменной $content
внизу страницы выведется например вот такой текст
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
1 2 3 4Array ( [SORT] => 100 [TO_MODULE_ID] => aspro.next [TO_PATH] => [TO_CLASS] => CNextEvents [TO_METHOD] => OnEndBufferContentHandler [TO_METHOD_ARG] => Array ( ) [VERSION] => 1 [TO_NAME] => CNextEvents::OnEndBufferContentHandler (aspro.next) [FROM_DB] => 1 [FROM_MODULE_ID] => main [MESSAGE_ID] => OnEndBufferContent ) 5 6 7 |
т.е мы подбирая $_SERVER[‘event_count’]>=4 $_SERVER[‘event_count’]<=4 методом исключения ловим косячную страницу и название косячного модуля. У нас как всегда аспро))
1 |
// $content = CNext::utf8_substr_replace($content, "", $start, $end-$start); |
www/bitrix/modules/aspro.next/classes/general/CNextEvents.php её комментируешь - все норм