Темизация CLinkPager в Yii фрейморке

Виджет создания постраничной навигации CLinkPager имеет настройки, с помощью которых можно несколько изменить названия классов используемых для генерации постраничной навигации, но на практике часто получается что этого недостаточно, и требуется абсолютно другая структура тегов навигации. Один из вариантов решения, это не меняя существующие классы фреймворка, сделать своё отображение для постраничной навигации.

$pager = $this->createWidget(
    'CLinkPager', 
    array(
        'pages' => $dataProvider->getPagination()
    )
);

if ($pager->getPageCount() > 1)
{
    list($beginPage, $endPage) = $pager->getPageRange();

    if ($pager->getCurrentPage(FALSE) > 0)
    {
        echo CHtml::link(
            'Prev', 
            $this->createUrl(
                '/news', 
                CMap::mergeArray(
                    $_GET, 
                    array(
                        'page' => $pager->getCurrentPage(FALSE)
                    )
                )
            )
        );
    }

    for($i = $beginPage; $i <= $endPage; $i++)
    {
        if ($i == $pager->getCurrentPage(FALSE))
        {
            echo '<b>'.($i + 1).'</b>';
        }
        else
        {
            echo CHtml::link(
                $i + 1, 
                $this->createUrl(
                    '/news', 
                    CMap::mergeArray(
                        $_GET, 
                        array(
                            'page' => $i + 1
                        )
                    )
                )
            );      
        }   
    }

    if ($pager->getCurrentPage(FALSE) < $pager->getPageCount() - 1)
    {
        echo CHtml::link(
            'Next',
            $this->createUrl(
                '/news', 
                CMap::mergeArray(
                    $_GET, 
                    array(
                        'page' => $pager->getCurrentPage(FALSE) + 2
                    )
                )
            )           
        );
    }
}

comments powered by HyperComments