Using pagination for your article lists is made simple thanks to the ob1_googlenav plugin.
Textpattern comes with its own pagination tags – newer and older – while these tags work just fine, the goal here is to create a Google style navigation list.
- First, download the plugin and install in the usual way.
Once the plugin is activated, we can place some code in our page template.
Call the plugin from your page
<txp:if_section name="articles">
<txp:article form="article_list" limit="20" />
<txp:ob1_pagination firsttext="First page" previoustext="Previous page" nexttext="Next page" lasttext="Last page" ulclass="pagination" liselected="active" />
</txp:if_section>
The above code is placed in your page template, after the txp:article
call. What this does is create a pagination link after the first 20 articles.
Note: In the plugin help file there is an error in the example, which uses the old ob1_googlenav
tag. This needs to be ob1_pagination
as in my example above.
The plugin attributes are self-explanatory, and documented in the plugin help file.
Some CSS to style the pagination links
ul.pagination {margin: 1em 0; padding: 0.5em; text-align: center; background: #eee;}
ul.pagination li {display: inline; font-size: 0.625em; padding: 0.5em;}
ul.pagination li.active {background: #fff; border: 1px solid #eee;}
Use similar styles to achieve the effect you want.
Thanks to Craig Valadez of struc1.com for suggesting this tip.
Awesome plugin. Really easy to use and very configurable.
Hi. I’m a bit of a beginner here… How do you make this section sensitive. In my implementation pagination links point to the main template. Easy solutions? Or am I just using the code in a wrong manner?
Depends what you need. The plugin will paginate the results in the current section. If you are using a page template for more than one section, you could use and if conditional like my example above
<txp:if_section name="articles"
to output pagination for the section of your choice.Oh. I use <txp: if_section name”“ and now I found the reason why it’s not working. I use <base href=“http://mysite.com/” /> to find the right paths to site’s visual elements (pics). If I remove that… well, the pictures don’t show in the right way. Is there anything I can do about that. Making absolute urls to all pictures doesn’t really seem an option. Huh.
BTW. Thanks again for your help and great plugin!
Glad you got it working – not sure why you need absolute URL’s for your images using a base
href
tag. Relative URL’s are much better for future portability. Have you thought of using the site_url tag for your image links?Hmmm… I use relative path
<img src="images/myimage.gif" />
in my image links. However, for some reason without base href tag or absolute urls images aren’t displayed in the other sections on my site. I’ve scanned for possible solutions to the problem… without all-encompassing results.If you are using Textpattern for image management, then you should instead use something like
<img src="/images/23.gif" />
. Note the leading slash. You can also upload your own images to the/images
folder, but you still need the leading slash.very nice, thanks you :D
I’ve been having problems with this and found this page whilst trying to resolve it.
Even copying your code into my section exactly as it is, only modifying my article form name and section name, it outputs nothing. Zero. Zilch.
Any suggestions would be phenomenally helpful!
Forum thread with details.
Hello
Does anybody know if this pluggin is compatible with MLP (Multi Language Pack) ?
In my case, it doesn’t work. It targets to home :-(
Regards from Argentina
@Fernando – I think the ob1_googlenav plugin won’t work with MLP as it won’t recognize the URL rewrites, as you have found…
Fernando: I don’t remember exactly what the output of
<txp:ob1_pagination />
is, but something like this should work:Install etc_query and etc_url plugins. Then store the page url (with
pg
parameter stripped) inurl
variable:Finally, replace the href’s in
<txp:ob1_pagination />
output by new values withetc_query
:You will probably need to adapt it to your case (e.g. replace
?pg={#row}
by&pg={#row}
), but it is feasible.