Jump to content

Limiting products per page


Recommended Posts

hello,

 

I am trying to limit the maximum number of products per page.

 

However, whatever I try (I have found some tipps already), the selector which determines the number of products per page will always also allow me to select the maximum number of products available in this category.

 

See the attached JPG to understand which selector i mean.

 

Where can I limit this? Page loading time is way to long if all products can be shown... 

 

many thanks for your help,

roland

 

post-1065052-0-86420900-1466706571_thumb.jpg

Link to comment
Share on other sites

If you want to remove that, you need to edit the template. In the theme folder, pagination.tpl, here is the code you want to remove:

 

	    {if $nb_products > $products_per_page && $start!=$stop}
			<form class="showall" action="{if !is_array($requestNb)}{$requestNb}{else}{$requestNb.requestUrl}{/if}" method="get">
				<div>
					{if isset($search_query) AND $search_query}
						<input type="hidden" name="search_query" value="{$search_query|escape:'html':'UTF-8'}" />
					{/if}
					{if isset($tag) AND $tag AND !is_array($tag)}
						<input type="hidden" name="tag" value="{$tag|escape:'html':'UTF-8'}" />
					{/if}
	                <button type="submit" class="btn btn-default button exclusive-medium">
	                	<span>{l s='Show all'}</span>
	                </button>
					{if is_array($requestNb)}
						{foreach from=$requestNb item=requestValue key=requestKey}
							{if $requestKey != 'requestUrl' && $requestKey != 'p'}
								<input type="hidden" name="{$requestKey|escape:'html':'UTF-8'}" value="{$requestValue|escape:'html':'UTF-8'}" />
							{/if}
						{/foreach}
					{/if}
	                <input name="n" id="nb_item" class="hidden" value="{$nb_products}" />
				</div>
			</form>
		{/if}

You might also want to empty nbr-product-page.tpl, erasing the code above just gets rid of the show all button

Link to comment
Share on other sites

thanks, Nemo1

 
Sofar, it did only half the trick. Emptying the nbr-product-page.tpl deletes the whole drop down menu. 
 
Deleting the code from the pagination.tpl has no effect.
 
Pls note there is no show all button in the theme I am using. There is only the drop down and works like this:
- at the beginning, you can select 30, 60 or 150 articles per page. 30 is default. 
- But once I change it to 60 or 150 and the new selection is loaded, the dropdown option also changesand offer to display the full number of articles in the catalogue.
 
So I only want to switch of this option to show all articles, which appears once the page reloads. 
 
Here is the code of my pagination.tpl (I put the section you suggested to delete back in). Any suggestions on how to limit the options showing in the dropdown? Many Thanks in advance!
 

{if isset($no_follow) AND $no_follow}
	{assign var='no_follow_text' value='rel="nofollow"'}
{else}
	{assign var='no_follow_text' value=''}
{/if}

{if isset($p) AND $p}
	{if isset($smarty.get.id_category) && $smarty.get.id_category && isset($category)}
		{if !isset($current_url)}
			{assign var='requestPage' value=$link->getPaginationLink('category', $category, false, false, true, false)}
		{else}
			{assign var='requestPage' value=$current_url}
		{/if}
		{assign var='requestNb' value=$link->getPaginationLink('category', $category, true, false, false, true)}
	{elseif isset($smarty.get.id_manufacturer) && $smarty.get.id_manufacturer && isset($manufacturer)}
		{assign var='requestPage' value=$link->getPaginationLink('manufacturer', $manufacturer, false, false, true, false)}
		{assign var='requestNb' value=$link->getPaginationLink('manufacturer', $manufacturer, true, false, false, true)}
	{elseif isset($smarty.get.id_supplier) && $smarty.get.id_supplier && isset($supplier)}
		{assign var='requestPage' value=$link->getPaginationLink('supplier', $supplier, false, false, true, false)}
		{assign var='requestNb' value=$link->getPaginationLink('supplier', $supplier, true, false, false, true)}
	{else}
		{if !isset($current_url)}
			{assign var='requestPage' value=$link->getPaginationLink(false, false, false, false, true, false)}
		{else}
			{assign var='requestPage' value=$current_url}
		{/if}
		{assign var='requestNb' value=$link->getPaginationLink(false, false, true, false, false, true)}
	{/if}
	<!-- Pagination -->
	<div id="pagination{if isset($paginationId)}_{$paginationId}{/if}" class="pagination clearfix">
	    
	    {if $nb_products > $products_per_page && $start!=$stop}
			 <form class="showall" action="{if !is_array($requestNb)}{$requestNb}{else}{$requestNb.requestUrl}{/if}" method="get">
				<div>
					{if isset($search_query) AND $search_query}
						<input type="hidden" name="search_query" value="{$search_query|escape:'html':'UTF-8'}" />
					{/if}
					{if isset($tag) AND $tag AND !is_array($tag)}
						<input type="hidden" name="tag" value="{$tag|escape:'html':'UTF-8'}" />
					{/if}
	               <button type="submit" class="btn btn-default button exclusive-medium">
	                	<span>{l s='Show all'}</span>
	                </button>
					{if is_array($requestNb)}
						{foreach from=$requestNb item=requestValue key=requestKey}
							{if $requestKey != 'requestUrl' && $requestKey != 'p'}
								<input type="hidden" name="{$requestKey|escape:'html':'UTF-8'}" value="{$requestValue|escape:'html':'UTF-8'}" />
							{/if}
						{/foreach}
					{/if}
	                <input name="n" id="nb_item" class="hidden" value="{$nb_products}" />
				</div>
			</form> 
		{/if} 
		
		{if $start!=$stop}
			<ul class="pagination">
				{if $p != 1}
					{assign var='p_previous' value=$p-1}
					<li id="pagination_previous{if isset($paginationId)}_{$paginationId}{/if}" class="pagination_previous">
						<a {$no_follow_text} href="{$link->goPage($requestPage, $p_previous)}">
							<i class="icon-chevron-left"></i> <b>{l s='Previous'}</b>
						</a>
					</li>
				{else}
					<li id="pagination_previous{if isset($paginationId)}_{$paginationId}{/if}" class="disabled pagination_previous">
						<span>
							<i class="icon-chevron-left"></i> <b>{l s='Previous'}</b>
						</span>
					</li>
				{/if}
				{if $start==3}
					<li>
						<a {$no_follow_text}  href="{$link->goPage($requestPage, 1)}">
							<span>1</span>
						</a>
					</li>
					<li>
						<a {$no_follow_text}  href="{$link->goPage($requestPage, 2)}">
							<span>2</span>
						</a>
					</li>
				{/if}
				{if $start==2}
					<li>
						<a {$no_follow_text}  href="{$link->goPage($requestPage, 1)}">
							<span>1</span>
						</a>
					</li>
				{/if}
				{if $start>3}
					<li>
						<a {$no_follow_text}  href="{$link->goPage($requestPage, 1)}">
							<span>1</span>
						</a>
					</li>
					<li class="truncate">
						<span>
							<span>...</span>
						</span>
					</li>
				{/if}
				{section name=pagination start=$start loop=$stop+1 step=1}
					{if $p == $smarty.section.pagination.index}
						<li class="active current">
							<span>
								<span>{$p|escape:'html':'UTF-8'}</span>
							</span>
						</li>
					{else}
						<li>
							<a {$no_follow_text} href="{$link->goPage($requestPage, $smarty.section.pagination.index)}">
								<span>{$smarty.section.pagination.index|escape:'html':'UTF-8'}</span>
							</a>
						</li>
					{/if}
				{/section}
				{if $pages_nb>$stop+2}
					<li class="truncate">
						<span>
							<span>...</span>
						</span>
					</li>
					<li>
						<a href="{$link->goPage($requestPage, $pages_nb)}">
							<span>{$pages_nb|intval}</span>
						</a>
					</li>
				{/if}
				{if $pages_nb==$stop+1}
					<li>
						<a href="{$link->goPage($requestPage, $pages_nb)}">
							<span>{$pages_nb|intval}</span>
						</a>
					</li>
				{/if}
				{if $pages_nb==$stop+2}
					<li>
						<a href="{$link->goPage($requestPage, $pages_nb-1)}">
							<span>{$pages_nb-1|intval}</span>
						</a>
					</li>
					<li>
						<a href="{$link->goPage($requestPage, $pages_nb)}">
							<span>{$pages_nb|intval}</span>
						</a>
					</li>
				{/if}
				{if $pages_nb > 1 AND $p != $pages_nb}
					{assign var='p_next' value=$p+1}
					<li id="pagination_next{if isset($paginationId)}_{$paginationId}{/if}" class="pagination_next">
						<a {$no_follow_text} href="{$link->goPage($requestPage, $p_next)}">
							<b>{l s='Next'}</b> <i class="icon-chevron-right"></i>
						</a>
					</li>
				{else}
					<li id="pagination_next{if isset($paginationId)}_{$paginationId}{/if}" class="disabled pagination_next">
						<span>
							<b>{l s='Next'}</b> <i class="icon-chevron-right"></i>
						</span>
					</li>
				{/if}
			</ul>
		{/if}
	</div>
    <div class="product-count">
    	{if ($n*$p) < $nb_products }
    		{assign var='productShowing' value=$n*$p}
        {else}
        	{assign var='productShowing' value=($n*$p-$nb_products-$n*$p)*-1}
        {/if}
        {if $p==1}
        	{assign var='productShowingStart' value=1}
        {else}
        	{assign var='productShowingStart' value=$n*$p-$n+1}
        {/if}
        {if $nb_products > 1}
        	{l s='Showing %1$d - %2$d of %3$d items' sprintf=[$productShowingStart, $productShowing, $nb_products]}
		{else}
        	{l s='Showing %1$d - %2$d of 1 item' sprintf=[$productShowingStart, $productShowing]}
       	{/if}
    </div>
	<!-- /Pagination -->
{/if}


Link to comment
Share on other sites

It's the <select> tag in nbr-product-page.tpl you should be editing. Here's what it looks like in the default PrestaShop v1.6.1.6 theme:

				<select name="n" id="nb_item{if isset($paginationId)}_{$paginationId}{/if}" class="form-control">
					{assign var="lastnValue" value="0"}
					{foreach from=$nArray item=nValue}
						{if $lastnValue <= $nb_products}
							<option value="{$nValue|escape:'html':'UTF-8'}" {if $n == $nValue}selected="selected"{/if}>{$nValue|escape:'html':'UTF-8'}</option>
						{/if}
						{assign var="lastnValue" value=$nValue}
					{/foreach}
				</select>

The code is probably different in your theme. Hopefully, you can modify that code to remove the value you don't want.

Link to comment
Share on other sites

hi rocky

 

thanks for the tip, I copied the code into my theme, but I can't figure out which value to change in order to limit the maximum number of products to display. I still get the whole number of products available displayed. Not the first time, but when I change from say 30 to 60. All of a sudden there is also the option to select the whole catalogue...

 

Where should I change the value?

 

cheers

Roland 

Link to comment
Share on other sites

I'm guessing your theme is using AJAX to refresh the page and it is changing the original "Number of products" dropdown to add that value. I can't help much because I'm unfamiliar with your theme. I suggest that you open Firebug and check the "Console" tab to see the AJAX request. That should tell you which file is updating the product list.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...