/**
* Separate function to display the page
*
* @param void
* @return void
*/
protected function displayPage() {
$units = array();
foreach ($this->page->area as $area) {
foreach ($area->unit as $unit) {
$units[] = $unit;
}
}
// Сортировка юнитов по параметру "buildOrder" Если таковой не задан,
// то сортировка в произвольном порядке, т.к. сортировка не важна
usort($units, function($a, $b) {
$a = $a->buildOrder;
$b = $b->buildOrder;
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
});
// Подготовка контента в юнитах
foreach ($units as $unit) $unit->prepare();
echo Seo::nofollow(Seo::absolutize($this->page->toString()));
}
В последнем цикле (строка 25 в данном примере) было написано
foreach ($units as $init
В результате чего обрабатывался только последний unit в области страницы, который был определен в предыдущем цикле. Ошибка воспроизводтся, если на странице содержится более одного блока.