开发者

codeigniter pagination customizing

开发者 https://www.devze.com 2022-12-16 07:56 出处:网络
I am browsing trough the CI documentation particularly http://codeigniter.com/user_guide/libraries/pagi开发者_StackOverflow中文版nation.html .

I am browsing trough the CI documentation particularly http://codeigniter.com/user_guide/libraries/pagi开发者_StackOverflow中文版nation.html .

First thing that was stuck in my mind was "CodeIgniter's Pagination class is very easy to use, and it is 100% customizable, either dynamically or via stored preferences." but there always but something.

My pagination is as following Previous 1 2 3 4 ... n Next now for each of these I can create opening html tags and closing html tags in my controller.

For ex:

Previous

$config['prev_tag_open'] = '<div class="previous">';

The opening tag for the "previous" link.
$config['prev_tag_close'] = '</div>';

Next

$config['next_tag_open'] = '<div>';

The opening tag for the "next" link.
$config['next_tag_close'] = '</div>';

And for Last first etc. Now in my design I made Previous float left Next float right and I have a <div class="middle_pager"> which holds all page numbers together in the middle.

From what I see in the documentation I don't have a option in CI to put all page numbers in between html tags, I only have option to put each page number inside some tags, maybe there is a way but I missed a point. Anybody can help?

Thank you


The trick is, that you have to think out of the box.

You should add a an opening tag to the end of of your "prev_tag_close"

$config['prev_tag_open'] = '<div class="previous">';

The opening tag for the "previous" link.
$config['prev_tag_close'] = '</div>**<opening tag>**';

and a closing tag at your "next_tag_open" like

$config['next_tag_open'] = '**</opening tag>**<div>';

The opening tag for the "next" link.
$config['next_tag_close'] = '</div>';

that should do the trick.


That hardly resolves the problem, how would you deal with this situation on the first and last page? The next_tag_open/close would not appear on the final page of the pagination and the prev_tag_open/close would not appear on the first page of pagination.

This will obviously cause both of the block elements for these pages to break

Ok so I had this same problem earlier today and it was really doing my head in. The only solution I came up with (works prefectly) is this;

Create a div around the output -

<div class="pagination2">
    <?php echo $link; ?>
</div>

Then use the pagination tags provided by the class around use these tags to wrap around the digit tags (num_tag_open/close).

$config['full_tag_open'] = '<div class="pagination">'; $config['full_tag_close'] = '</div>'; $config['num_tag_open'] = '<p>; $config['num_tag_close'] = '</p>';

Now jump into css and relatively position the outer block element pagination2, then go and absolutely position the inner block class pagination, center it and then you can use a negative value to push the absolutely positioned nextlink or prevlink elements however you wish. See below for css I used.

 .pagination2{
  position: relative;
  right: -10px;
  height: 45px;
  width: 500px;
  background-color:#f8f8f8;
  border: 1px solid #d3d3d3;    
  outline:none;
  }

  .pagination{
  position: absolute;
  left: 180px;
  height: 35px;
  width: 120px;
  }

  .pagination-button-previous{   
    position: absolute;
    top: 10px;
    left: -160px;
    width: 74px;
    height: 24px;
0

精彩评论

暂无评论...
验证码 换一张
取 消