Skip to main content
edited title
Link
shenkwen
  • 1.4k
  • 1
  • 12
  • 26

Custom Pagination: $(this)$this in "pagination_item_active" function is not in object context?

Source Link
shenkwen
  • 1.4k
  • 1
  • 12
  • 26

Custom Pagination: $(this) in "pagination_item_active" function is not in object context?

Joomla 3

I was trying to modify Joomla's pagination output. Following this documentation, I create mytemplate/html/pagination.php file and start modifying it. According to the document, I can write 4 functions in the new pagination file, I actually just want to rewrite _list_render() and _item_active(). However, in libraries/cms/pagination/pagination.php beginning from line 327

    $chromePath = JPATH_THEMES . '/' . $this->app->getTemplate() . '/html/pagination.php';

    if (file_exists($chromePath))
    {
        include_once $chromePath;

        if (function_exists('pagination_item_active') && function_exists('pagination_item_inactive'))
        {
            $itemOverride = true;
        }

        if (function_exists('pagination_list_render'))
        {
            $listOverride = true;
        }
    }

This means I can only get CMS to use my function if only both pagination_item_active() and pagination_item_inactive() exist. But I don't have my own pagination_item_active(), so I copy the content of _item_active() in the CMS's pagination.php to my override file so it looks like this in my pagination.php

......
function pagination_item_active(JPaginationObject $item){
  $title = '';
  $class = '';

  if (!is_numeric($item->text))
  {
    JHtml::_('bootstrap.tooltip');
    $title = ' title="' . $item->text . '"';
    $class = 'hasTooltip ';
  }

  if ($this->app->isAdmin())
  {
    return '<a' . $title . ' href="#" onclick="document.adminForm.' . $this->prefix
    . 'limitstart.value=' . ($item->base > 0 ? $item->base : '0') . '; Joomla.submitform();return false;">' . $item->text . '</a>';
  }
  else
  {
    return '<a' . $title . ' href="' . $item->link . '" class="' . $class . 'pagenav">' . $item->text . '</a>';
  }

}

The problem is, when I run the PHP, I get this error message:

Using $this when not in object context in

/home/w/public_html/templates/rt_photon/html/pagination.php on line 56

What I don't understand is, my pagination.php is supposed to be included into the CMS's one, where there is an "object context", why then is it giving this error message? And how do I overcome this dillema?