Вот здесь modxclub.ru/tag/%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F/ опускаюсь вниз к ссылкам пагинации, кликаю страницу 2, а она не найдена modxclub.ru/tag/tag/?page=2 Очевидно, что в ссылке пагинации не подставляется нужный тег и эта ссылка работает отлично modxclub.ru/tag/%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F/?page=2 Наверн опечатка в шаблоне.
Да, про этот глук знаю, все руки не доходят поправить. Там фейковые УРЛы, из-за чего глючит сниппет getPage. Надо заменить там пагинацию. Поправлю как-нибудь на досуге.
Привет, Николай! В pdoPage ссылка генерируется исходя из фактического url, поэтому там такого глюка нет. Ну и можно, заодно, сразу настроить ajax-пагинацию, так же из коробки. Там еще много разных преимуществ по сравнению с getPage, рекомендую попробовать.
Прошу прощения за такие пробелы между фразами. Без превью сложно понять, как будет отрендерен комментарий.
Привет, Василий! Рад, что ты наконец-то нас посетил:) За это я тебе поднял статус до полноценного члена Клуба. Про pdoPage в курсе, но он нам не подходит по нескольким причинам:
Как ты знаешь, у нас с тобой в принципе разные подходы в разработке и модулях. У тебя все завязано на pdoTools и чанках/сниппетах, а мы даже сниппеты редко используем, не говоря уже о чанках, у нас все на смарти и процессорах.
Даже если бы захотел взять pdoPage, не стал бы для этого тянуть весь pdoTools, это было бы фигачить по воробьям из пушки.
Не нравится внутри сниппета использование переменных $_GET и $_REQUEST, слишком глобально. Мне удобней нужные параметры передавать в процессор и чтобы все это было локально. Так что, спасибо за предложение, но не, не подойдет. Но ты все-таки подтолкнул к тому, чтобы я тут порядочек немного навел, должен же я показать, как это у нас делается. Вообще с постраничностью тэгов — это просто результат лени, не добрался поправить, но постраничность с фейковыми УРЛами не была здесь проблема. Все работало на страницах комментариев пользователей. К примеру, если посмотреть страницу modxclub.ru/profile/Fi1osof/stream/, то здесь реальная часть только — profile/, а Fi1osof/stream/ — это фейковая часть УРЛа. Реализована постраничность была с использованием Smarty-плагина, написанного Сергеем Шляховым. Но я решил для себя написать свою постраничность в шаблоне, и немного подправить базовый процессор, чтобы результат выполнения процессора сразу возвращал все необходимое для формирования постраничности — total, count, limit, page. В итоге получается очень простой и удобный вызов: {$params = [ "page" => $smarty.get.page ]} {processor action="web/society/users/getdata" ns="modxsite" params=$params assign=result} {include file="inc/pagination/pagination.tpl"} А вот код шаблона постраничности (он далек от идеальности, но свою задачу выполняет замечательно): {if $result.success && $result.object && $result.total > $result.count}
{$page = $result.page|default:1} {$limit = $result.limit|default:10} {$total = $result.total}
{$get_params = $get_params|default:$smarty.get}
{$params = []} {foreach $get_params as $k => $get_param} {if !in_array($k, ['q', 'page'])} {$params[$k] = $get_param} {/if} {/foreach}
{if !$page_url} {$id = $id|default:$modx->resource->id} {$page_url = $modx->makeUrl($id)} {/if}
{$pages_limit = $pages_limit|default:5}
{$pages = ceil($total/$limit)}
{$start_page = $page - $pages_limit} {if 1 > $start_page} {$start_page = 1} {/if}
<div style="text-align:center"> <ul class="pagination"> {$last_page = $page + $pages_limit - 1}
{if $start_page > 1}
{$get = $params}
{if $url = http_build_query($get)}
{$url = "?{$url}"}
{/if}
<li class="control"><a href="{$page_url}{$url}">Первая</a></li>
{/if}
{$i = 0}
{while $pages >= $start_page && $pages_limit * 2 + 1 > $i}
{$i = $i + 1}
{$get = $params}
{if $start_page != '1'}
{$get.page = $start_page}
{/if}
{if $url = http_build_query($get)}
{$url = "?{$url}"}
{/if}
<li class="{if $start_page == $page}active{/if}"><a href="{$page_url}{$url}">{$start_page}</a></li>
{$start_page = $start_page + 1}
{/while}
{if $pages >= $start_page}
{$get = $params}
{$get.page = $pages}
{$url = http_build_query($get)}
{$url = "?{$url}"}
<li class="control"><a href="{$page_url}{$url}">Последняя</a></li>
{/if}
</ul>
</div>
{/if}
Ничего страшного. А превью когда-нибудь сделаем, когда руки дойдут.
Поправил.