<?PHP
class PageView extends View
{
    function fetch()
    {
        $per_page = 4;
        $url = $this->routes->first;
        // вызов кастомной функции для определенного урла
        // if($url == 'some-url')
        //     $this->do_some();

        // у модуля страниц уровень вложенности урла всегда первый, поэтому first
        $page = $this->pages->get_page($url);
        if(!$page || !$page->visible)
            return false;

        // Связанные страницы
        $page->related_pages = $this->pages->get_related_pages(array($page->id));
        // Связанные баннеры
        $page->related_banners = $this->banners->get_banners(array('page_id' => $page->id));
        // Связанные комментарии.
        $page->related_comments = $this->comments->get_comments(array("relation"=>"pages", "relation_id" => $page->id));

        //переопределим дочерние страницы выбрав только видимымые
        $page->subpages = $this->pages->get_pages(array('parent_id' => $page->id, 'visible' => 1));

        //постраничная навигация
        $current_page_num = max(1, $this->request->get('page', 'integer'));
        $subpages_count = !empty($page->subpages) ? count($page->subpages) : 0;
        $pages_num = ceil($subpages_count / $per_page);
        $this->design->assign('current_page_num', $current_page_num);
        $this->design->assign('total_pages_num', $pages_num);

        //обрежем массив вложенных страниц
        if($pages_num > 1)
            $page->subpages = array_slice($page->subpages, ($current_page_num-1) * $per_page, $per_page);

        $schema = array();
        $schema[] = $this->schema->create_breadcrumbs($page);
        $schema[] = $this->schema->create_local_business($page);
        $this->design->assign('schema', $schema);

        $this->design->assign('page', $page);
        $this->design->assign('meta_title', $page->meta_title);
        $this->design->assign('meta_description', $page->meta_description);

        return $this->design->fetch($page->template);
    }

    //function do_some() { }
}
