I've been trying to find a proper way to do this but no luck so far. How does one go filtering products in Cartthrob. For example if the user wants to change the number of products displayed by clicking the relevant link (show items: 16, 64) (limit=16, limit=64 and so on). I've tried using Mo'variables and pass a limit variable on the url (i.e. /books?limit=16) however this messes up pagination and category filtering. Is there a guide or something on how to achieve this without loosing your hair? :)
1 Answer
You're on the right track. This advice applies to EE 2.7.2+, so if you're on an earlier version of EE, sorry. First, you don't need to use Mo' Variables. All you need to do is set the dynamic_parameters="limit"
. Now when limit=X
is in your url query string, the channel:entries loop will automatically use that limit. To get it to work with pagination, you need to do this (add the query string to the pagination links):
{paginate}
{pagination_links}
<ul>
{page}
<li><a href="{pagination_url}{if current_query_string}?{current_query_string}{/if}">{pagination_page_number}</a></li>
{/page}
</ul>
{/pagination_links}
{/paginate}
Docs on dynamic parameters: http://ellislab.com/expressionengine/user-guide/modules/channel/dynamic_parameters.html
Docs on current_query_string global variable: http://ellislab.com/expressionengine/user-guide/templates/globals/single_variables.html#current-query-string
-
Its working but with multiple variables it becomes a mess. Have to change the pagination_base and check if a query string exists and so on. It is messy! Especially when filtering by categories and have to keep the url along with the query_string and pagination url...– diadyoJan 23, 2014 at 15:51