Темизация 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