Custom Pagination in Joomla

Select your language

In order to add custom pagination in Joomla.

Here is pagination code snippet:

<?php
/*
CUSTOM pagination by abdulwaheed.pk
*****************************************/
$itemid=JRequest::getVar('Itemid',0,'INT');
$start=JRequest::getUInt('start', 0);
$limit=JRequest::getUInt('limit', 0);
$view=JRequest::getVar('view','properties','STRING');
$task='filter';
$searchword=JRequest::getVar('searchword','','STRING');
$prstatus=JRequest::getVar('prstatus','','STRING');
$category_select=JRequest::getVar('category_select','','STRING');
$location_lv1=JRequest::getVar('jform[location_lv1]','','STRING');
$location_lv2=JRequest::getVar('location_lv2','','STRING');
$location_lv3=JRequest::getVar('location_lv3','','STRING');
$location_lv4=JRequest::getVar('location_lv4','','STRING');

$extraid=JRequest::getVar('extraid',array(''),'ARRAY');
$extraselect=JRequest::getVar('extraselect',array(''),'ARRAY');
$option="com_bt_property";
$view="properties";

$link_=
"index.php?".urlencode("task=$task&option=$option&view=$view&searchword=$searchword&prstatus=$prstatus&category_select=$category_select&jform[location_lv1]=$location_lv1&jform[location_lv2]=$location_lv2&jform[location_lv3]=$location_lv3&location_lv4=$location_lv4&extraid[47]=$extraid[47]&extraselect[47]=$extraselect[47]&extraid[20]=$extraid[20]&extraselect[20]=$extraselect[20]&extraid[31]=$extraid[31]&extraselect[31]=$extraselect[31]&extraid[24]=$extraid[24]&extraselect[24]=$extraselect[24]&extraid[42]=$extraid[42]&extraselect[42]=$extraselect[42]&extraid[43]=$extraid[43]&extraselect[43]=$extraselect[43]&method=AND");

$link_=$_SERVER['REQUEST_URI'];

$total=$this->pagination->total-1;
$pagesTotal=$this->pagination->pagesTotal;
$pagesCurrent=$this->pagination->pagesCurrent;

$startpage=0;
$prevpage=$this->pagination->limitstart-$this->pagination->limit;

$nextpage=$this->pagination->limit+$this->pagination->limitstart;

$endpage_=
round($total / $this->pagination->limit);
$endpage=$endpage_*$this->pagination->limit;

$disabled_1=($this->pagination->limitstart==0)? ' class="disabled" ': "";
$disabled_4=($pagesCurrent==$pagesTotal)? ' class="disabled" ': "";
echo '
<div class="pagination pagination-toolbar clearfix">
<nav class="custom_nav_abdul" role="navigation" aria-label="Pagination">

<ul class="pagination-list">
<li '.$disabled_1.'>
	<a aria-label="Go to start page" class="hasTooltip" title="" href="'.$link_.'&start='.$startpage.'&Itemid='.$itemid.'" data-original-title="Start (Page 1 of '.$startpage.')"><i class="fa fa-backward"></i> </a>
</li>

<li '.$disabled_1.'>
<a aria-label="Go to previous page" class="hasTooltip" title="" href="'.$link_.'&start='.$prevpage.'&Itemid='.$itemid.'" data-original-title="Previous">
<span style="font-weight:bold;"> < </span> </a>
</li>';

if(isset($this->pagination->getPaginationPages()['pages'])&&count($this->pagination->getPaginationPages()['pages'])>0) {
foreach($this->pagination->getPaginationPages()['pages'] as $arr)
{
	$disabled_2=($arr['data']->active==1&&$arr['data']->text==1)? ' class="disabled" ': "";
	
	if($arr['data']->active) {
		$link="javascript:void(0);";
		$disabled_3=' class="disabled" ';
	}
	else
	{
		$link=$link_."&start=".$arr['data']->base.'&Itemid='.$itemid;
		$disabled_3="";
	}
	echo
	'<li '.$disabled_2.'>
	<a href="'.$link.'" '.$disabled_3.'>'.
	$arr['data']->text
	.'</a></li>';
}
}
echo
'<li '.$disabled_4.'>
<a aria-label="Go to next page" class="hasTooltip" title="" href="'.$link_.'&start='.$nextpage.'&Itemid='.$itemid.'" data-original-title="Next">
<span style="font-weight:bold;"> > </span> </a>
</li>

<li '.$disabled_4.'>
<a aria-label="Go to end page" class="hasTooltip" title="" href="'.$link_.'&start='.$endpage.'" data-original-title="End (Page '.$endpage.' of '.$endpage.')">
<i class="fa fa-forward"></i> </a>
</li>
</ul>
</nav>
</div>';
?>
<style>
.pagination a {
	text-decoration:none !important;
}
.pagination li {
	display: inline;
	padding: 7px 5px;
}
.pagination li a, .pagination li span {
    border: 1px solid #eee;
    margin: 0 !important;
    background: rgb(236, 240, 158);
}

/*
DISABLED
***********/
li.disabled,
li.disabled a, 
a.disabled {
	opacity:1 !important;
}
li.disabled a,
li.disabled span, 
a.disabled {
	background: #eee !important;
	color: grey !important;
	border: 1px solid #eee !important;
}
/* TABLET */
@media(max-width: 768px){
}
	
/* MOBILE */
@media (max-width:569px) {
.custom_nav_abdul {
    overflow: scroll;
    width: 350px;
	height: 44px;
}
}
</style>

Note: beware of 'start' variable , it can be named limitstart or start. So don't forget to check into module/controller code of your component where pagination is applied.

Hope this helped.


Still need help! no problem, feel free to contact us Today


 Abdul Waheed : (Hire Joomla & PHP Pakistani Freelancer)