Перейти к содержимому


Фото
- - - - -

Как ограничить количество страниц пагинации в категории?


  • Чтобы отвечать, сперва войдите на форум
17 ответов в теме

#1 esistema1

esistema1
  • Пользователь
  • 169 сообщений

Опубликовано 16.07.2018 - 11:46

Всем привет!

Хочу ограничить в определенной категории количество страниц в пагинации, т.е. по умолчанию выводятся все страницы (30), а я хочу чтобы выводилось только 5.

 

Вот код постраничной навигации, подскажите пожалуйста что необходимо в нем изменить чтобы ограничить количество страниц?

 

<div class="paging_top"> 

	{* Количество выводимых ссылок на страницы *}
	{$visible_pages = 11}

	{* По умолчанию начинаем вывод со страницы 1 *}
	{$page_from = 1}
	
	{* Если выбранная пользователем страница дальше середины "окна" - начинаем вывод уже не с первой *}
	{if $current_page_num > floor($visible_pages/2)}
		{$page_from = max(1, $current_page_num-floor($visible_pages/2)-1)}
	{/if}	
	
	{* Если выбранная пользователем страница близка к концу навигации - начинаем с "конца-окно" *}
	{if $current_page_num > $total_pages_num-ceil($visible_pages/2)}
		{$page_from = max(1, $total_pages_num-$visible_pages-1)}
	{/if}
	
	{* До какой страницы выводить - выводим всё окно, но не более ощего количества страниц *}
	{$page_to = min($page_from+$visible_pages, $total_pages_num-1)}

	{* Ссылка на 1 страницу отображается всегда *}
	<a {if $current_page_num==1}class="current_page"{/if} href="{url page=null}">1</a>
	
	{* Выводим страницы нашего "окна" *}	
	{section name=pages loop=$page_to start=$page_from}
		{* Номер текущей выводимой страницы *}	
		{$p = $smarty.section.pages.index+1}	
		{* Для крайних страниц "окна" выводим троеточие, если окно не возле границы навигации *}	
		{if ($p == $page_from+1 && $p!=2) || ($p == $page_to && $p != $total_pages_num-1)}	
		<a {if $p==$current_page_num}class="current_page"{/if} href="{url page=$p}">...</a>
		{else}
		<a {if $p==$current_page_num}class="current_page"{/if} href="{url page=$p}">{$p}</a>
		{/if}
	{/section}

	{* Ссылка на последнююю страницу отображается всегда *}
	<a {if $current_page_num==$total_pages_num}class="current_page"{/if}  href="{url page=$total_pages_num}">{$total_pages_num}</a>
	
	{if $current_page_num==2}<a class="prev_page_link" href="{url page=null}">←назад</a>{/if}
	{if $current_page_num>2}<a class="prev_page_link" href="{url page=$current_page_num-1}">←назад</a>{/if}
	{if $current_page_num<$total_pages_num}<a class="next_page_link" href="{url page=$current_page_num+1}">вперед→</a>{/if}
	
</div>

 

 



#2 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 837 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 16.07.2018 - 11:52

{if $category->id == '777'}
{$visible_pages = 5}
{else}
{$visible_pages = 11}
{/if}
Где 777 это уникальный ID вашей категории.

#3 esistema1

esistema1
  • Пользователь
  • 169 сообщений

Опубликовано 16.07.2018 - 11:57

Большое спасибо!!



#4 esistema1

esistema1
  • Пользователь
  • 169 сообщений

Опубликовано 16.07.2018 - 12:00

Стоп, этот код не ограничивает вывод страниц, как было 30 так и осталось, он выводит кол-во видимых страниц а между ними ... А мне надо ограничить количество самих страниц, т.е. сейчас у меня 30, а надо чтобы стало 5.



#5 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 837 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 16.07.2018 - 12:05

Стоп, этот код не ограничивает вывод страниц, как было 30 так и осталось, он выводит кол-во видимых страниц а между ними ... А мне надо ограничить количество самих страниц, т.е. сейчас у меня 30, а надо чтобы стало 5.

Ну так укажите лимит в выборке товаров, если категория такая-то то $fitler['limit'] = 'количество товаров'.

Изменено: Noxter, 16.07.2018 - 12:06


#6 esistema1

esistema1
  • Пользователь
  • 169 сообщений

Опубликовано 16.07.2018 - 12:09

В ProductsView? 

Пробую вот так, но не срабатывает. Это страница фильтра по дате создания (новинки).

if ($mode == 'new')
		{
		$fitler['limit'] = 5;
		$filter['sort'] = 'created';
		
		}


#7 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 837 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 16.07.2018 - 12:23

В ProductsView? 
Пробую вот так, но не срабатывает. Это страница фильтра по дате создания (новинки).

if ($mode == 'new')
		{
		$fitler['limit'] = 5;
		$filter['sort'] = 'created';
		
		}


Нужно передавать количество товаров, а не количество страниц.
Сколько у вас в админке выставлено товаров на страницу?

#8 esistema1

esistema1
  • Пользователь
  • 169 сообщений

Опубликовано 16.07.2018 - 12:31

48 товаров на странице, проблема что на $fitler['limit'] = 5; или $fitler['limit'] = 100; - сайт вообще никак не реагирует, как светились все 30 страниц так и светятся. 



#9 phukortsin

phukortsin
  • Пользователь
  • 595 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Львов

Опубликовано 16.07.2018 - 13:20

48 товаров на странице, проблема что на $fitler['limit'] = 5; или $fitler['limit'] = 100; - сайт вообще никак не реагирует, как светились все 30 страниц так и светятся. 

 

И не должен реагировать. Чтобы реагировал, переменная должна быть названа правильно, а не как сейчас - смотрите свой код внимательно...


Изменено: phukortsin, 16.07.2018 - 13:20


#10 esistema1

esistema1
  • Пользователь
  • 169 сообщений

Опубликовано 16.07.2018 - 13:26

Это я неправильно скопировал у noxter. Я пробовал правильное написание filter - не реагирует.

#11 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 837 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 16.07.2018 - 13:27

48 товаров на странице, проблема что на $fitler['limit'] = 5; или $fitler['limit'] = 100; - сайт вообще никак не реагирует, как светились все 30 страниц так и светятся. 

if($mode == 'new')
{
	$filter['limit'] = 240;
}
else
{
	$filter['limit'] = $items_per_page;
}


#12 esistema1

esistema1
  • Пользователь
  • 169 сообщений

Опубликовано 16.07.2018 - 15:06

Ничего не происходит с этим кодом, не срабатывает лимит.



#13 Kosjak76

Kosjak76
  • Модератор
  • 3 777 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Харьков, Украина

Опубликовано 16.07.2018 - 15:08

а куда вы его вставляете?

Может, он ниже по коду переопределяется??



#14 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 837 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 16.07.2018 - 15:31

Ничего не происходит с этим кодом, не срабатывает лимит.

Внизу перед вызовом get_products

#15 esistema1

esistema1
  • Пользователь
  • 169 сообщений

Опубликовано 16.07.2018 - 16:15

Ставил и сверху кода и внизу над get_products - если ставить внизу то он выводит 240 товаров на одной странице, но страниц все равно остается 30..



#16 esistema1

esistema1
  • Пользователь
  • 169 сообщений

Опубликовано 16.07.2018 - 16:20

Если ставить сверху то ничего не происходит а если возле get_products то выводится 240 товаров на странице



#17 Kosjak76

Kosjak76
  • Модератор
  • 3 777 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Харьков, Украина

Опубликовано 16.07.2018 - 17:07

Надо не так

Надо вместо

// Вычисляем количество страниц
		$products_count = $this->products->count_products($filter);

Сделать как-то так

if($mode == 'new')
{
	// Вычисляем количество страниц
		$products_count = 240;
}
else
{
// Вычисляем количество страниц
		$products_count = $this->products->count_products($filter);
}


Тогда ссылок на страницы будет только 5



#18 esistema1

esistema1
  • Пользователь
  • 169 сообщений

Опубликовано 16.07.2018 - 17:57

Отлично! Все получилось! Всем большое спасибо за помощь!






0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых