esistema1 Опубликовано 16 июля, 2018 Жалоба Поделиться Опубликовано 16 июля, 2018 Всем привет!Хочу ограничить в определенной категории количество страниц в пагинации, т.е. по умолчанию выводятся все страницы (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> Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 16 июля, 2018 Жалоба Поделиться Опубликовано 16 июля, 2018 {if $category->id == '777'} {$visible_pages = 5} {else} {$visible_pages = 11} {/if} Где 777 это уникальный ID вашей категории. Цитата Ссылка на сообщение Поделиться на другие сайты
esistema1 Опубликовано 16 июля, 2018 Автор Жалоба Поделиться Опубликовано 16 июля, 2018 Большое спасибо!! Цитата Ссылка на сообщение Поделиться на другие сайты
esistema1 Опубликовано 16 июля, 2018 Автор Жалоба Поделиться Опубликовано 16 июля, 2018 Стоп, этот код не ограничивает вывод страниц, как было 30 так и осталось, он выводит кол-во видимых страниц а между ними ... А мне надо ограничить количество самих страниц, т.е. сейчас у меня 30, а надо чтобы стало 5. Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 16 июля, 2018 Жалоба Поделиться Опубликовано 16 июля, 2018 (изменено) Стоп, этот код не ограничивает вывод страниц, как было 30 так и осталось, он выводит кол-во видимых страниц а между ними ... А мне надо ограничить количество самих страниц, т.е. сейчас у меня 30, а надо чтобы стало 5.Ну так укажите лимит в выборке товаров, если категория такая-то то $fitler['limit'] = 'количество товаров'. Изменено 16 июля, 2018 пользователем Noxter Цитата Ссылка на сообщение Поделиться на другие сайты
esistema1 Опубликовано 16 июля, 2018 Автор Жалоба Поделиться Опубликовано 16 июля, 2018 В ProductsView? Пробую вот так, но не срабатывает. Это страница фильтра по дате создания (новинки). if ($mode == 'new') { $fitler['limit'] = 5; $filter['sort'] = 'created'; } Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 16 июля, 2018 Жалоба Поделиться Опубликовано 16 июля, 2018 В ProductsView? Пробую вот так, но не срабатывает. Это страница фильтра по дате создания (новинки). if ($mode == 'new') { $fitler['limit'] = 5; $filter['sort'] = 'created'; } Нужно передавать количество товаров, а не количество страниц.Сколько у вас в админке выставлено товаров на страницу? Цитата Ссылка на сообщение Поделиться на другие сайты
esistema1 Опубликовано 16 июля, 2018 Автор Жалоба Поделиться Опубликовано 16 июля, 2018 48 товаров на странице, проблема что на $fitler['limit'] = 5; или $fitler['limit'] = 100; - сайт вообще никак не реагирует, как светились все 30 страниц так и светятся. Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 16 июля, 2018 Жалоба Поделиться Опубликовано 16 июля, 2018 (изменено) 48 товаров на странице, проблема что на $fitler['limit'] = 5; или $fitler['limit'] = 100; - сайт вообще никак не реагирует, как светились все 30 страниц так и светятся. И не должен реагировать. Чтобы реагировал, переменная должна быть названа правильно, а не как сейчас - смотрите свой код внимательно... Изменено 16 июля, 2018 пользователем phukortsin Цитата Ссылка на сообщение Поделиться на другие сайты
esistema1 Опубликовано 16 июля, 2018 Автор Жалоба Поделиться Опубликовано 16 июля, 2018 Это я неправильно скопировал у noxter. Я пробовал правильное написание filter - не реагирует. Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 16 июля, 2018 Жалоба Поделиться Опубликовано 16 июля, 2018 48 товаров на странице, проблема что на $fitler['limit'] = 5; или $fitler['limit'] = 100; - сайт вообще никак не реагирует, как светились все 30 страниц так и светятся. if($mode == 'new') { $filter['limit'] = 240; } else { $filter['limit'] = $items_per_page; } Цитата Ссылка на сообщение Поделиться на другие сайты
esistema1 Опубликовано 16 июля, 2018 Автор Жалоба Поделиться Опубликовано 16 июля, 2018 Ничего не происходит с этим кодом, не срабатывает лимит. Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 16 июля, 2018 Жалоба Поделиться Опубликовано 16 июля, 2018 а куда вы его вставляете?Может, он ниже по коду переопределяется?? Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 16 июля, 2018 Жалоба Поделиться Опубликовано 16 июля, 2018 Ничего не происходит с этим кодом, не срабатывает лимит.Внизу перед вызовом get_products Цитата Ссылка на сообщение Поделиться на другие сайты
esistema1 Опубликовано 16 июля, 2018 Автор Жалоба Поделиться Опубликовано 16 июля, 2018 Ставил и сверху кода и внизу над get_products - если ставить внизу то он выводит 240 товаров на одной странице, но страниц все равно остается 30.. Цитата Ссылка на сообщение Поделиться на другие сайты
esistema1 Опубликовано 16 июля, 2018 Автор Жалоба Поделиться Опубликовано 16 июля, 2018 Если ставить сверху то ничего не происходит а если возле get_products то выводится 240 товаров на странице Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 16 июля, 2018 Жалоба Поделиться Опубликовано 16 июля, 2018 Надо не такНадо вместо // Вычисляем количество страниц $products_count = $this->products->count_products($filter); Сделать как-то так if($mode == 'new') { // Вычисляем количество страниц $products_count = 240; } else { // Вычисляем количество страниц $products_count = $this->products->count_products($filter); } Тогда ссылок на страницы будет только 5 Цитата Ссылка на сообщение Поделиться на другие сайты
esistema1 Опубликовано 16 июля, 2018 Автор Жалоба Поделиться Опубликовано 16 июля, 2018 Отлично! Все получилось! Всем большое спасибо за помощь! Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.