}); // Сохранение контента частей страниц Observer::observe('page_edit_after_save', function ($page) { $parts = Arr::get(Request::initial()->post(), 'part_content', array()); $indexable_content = ''; foreach ($parts as $id => $content) { $part = ORM::factory('page_part', (int) $id); if ((bool) $part->is_indexable) { $indexable_content .= ' ' . $part->content; } if ($content == $part->content) { continue; } $part->values(array('content' => $content))->save(); } if (in_array($page->status_id, Model_Page_Front::get_statuses())) { Search::instance()->add_to_index('pages', $page->id, $page->title, $indexable_content, '', array('uri' => $page->get_uri())); } else { Search::instance()->remove_from_index('pages', $page->id); } }); Observer::observe('update_search_index', function () { $pages = ORM::factory('page')->find_all(); foreach ($pages as $page) { $indexable_content = ''; $parts = ORM::factory('page_part')->where('page_id', '=', $page->id)->where('is_indexable', '=', 1)->find_all(); foreach ($parts as $part) { $indexable_content .= ' ' . $part->content; } Search::instance()->add_to_index('pages', $page->id, $page->title, $indexable_content, '', array('uri' => $page->get_uri())); }