Как дать ссылку учитывая пагинацию?

На многих форумах есть такая фишка: ссылка на сообщение (комментарий) на n-ой странице.

Как можно рассчитать страницу при пагинации комментариев в Tickets и дать ссылку на конкретный комментарий?

То есть чтобы было что-то вроде ?page=3#comment-333 или ?page=3&comment=333. Везде на форумах при клике на сообщение даётся ссылка с учётом пагинации, например /page-3#entry11134810.

Или вот ещё: как рассчитать количество страниц в пагинации и дать на них ссылки?
Вот скрин такого использования ссылок на форумах с учётом пагинации:
Василий Столейков
13 апреля 2017, 07:32
modx.pro
1
1 968
+1
Поблагодарить автора Отправить деньги

Комментарии: 12

Максим
13 апреля 2017, 11:03
0
<a href="{текущая строка запроса}#{id комментария}">#</a>
или я не понял в чем проблема заключается…

    Василий Столейков
    13 апреля 2017, 11:09
    0
    Представь себе что тут в сообществе комментарии не одной длинной простынёй, а как на форумах, по 20 на страницу. Допустим в популярной теме уже 10 страниц комментариев. Какую ссылку на последний комментарий давать в правом блоке комментарии?
    Вот твой комментарий сейчас имеет ссылку modx.pro/help/11894/#comment-79375, а как дать на него ссылку, если бы комментарии были разбиты на пагинацию и он оказался бы на 3-й странице к примеру? Как понять что он именно на 3-й странице, чтобы дать верную ссылку, ведь в ссылку нужно прописать get ?page=3?
      Максим
      13 апреля 2017, 11:23
      +2
      modx.pro/help/11894/#comment-79375
      Ты переходишь по ссылке modx.pro/help/11894/, сервер начинает формировать страницу…
      Каждый комментарий выводится в цикле. У каждого комментария есть свой ID.
      Вот к этой ссылке, по которой перешел, добавляешь #comment-id

      Какую ссылку на последний комментарий давать в правом блоке комментарии?
      Для этого тебе нужно знать общее количество комментариев в теме и кол-во отображаемых на 1й странице.
      Получаешь общее кол-во страниц. Логично, что последний комментарий будет на последней странице. Формируешь ссылку
      page=общее_количество_страниц#id_последнего_комментария.
      Или вопрос — как сделать это на Tickets?
        Василий Столейков
        13 апреля 2017, 11:28
        0
        Да на Tickets тот же принцип.
        Значит нужно просто количество комментариев разделить на количество комментариев на странице.
        Если меньше 1, то не выводим ссылку на пагинацию.
        Ок, спасибо за подсказку, мне формулу нужно было просто обдумать…
          Алексей Федоров
          13 апреля 2017, 11:36
          0
          В который раз убеждаюсь, что все гениальное просто
            Василий Столейков
            13 апреля 2017, 11:41
            0
            Ага.
            Вспомнилась злободневная шутка:

            Расшифруй: "одтчпшсвдд". Эту загадку никогда не разгадает профессор, возможно когда-то учитель, долго будет думать студент, не сразу отгадает старшеклассник, но моментально даст ответ первоклашка.
            Ответ: "один два три четыре пять шесть семь восемь девять десять".
            Вывод: чем мы больше знаем, тем меньше видим очевидное…
          Алексей Федоров
          13 апреля 2017, 11:30
          0
          Тоже этот вопрос интересует. Сначала обрадовался, что в pdoPage есть плейсхолдер pageCount, но потом понял, что он работает только для текущей пагинации и генерируется на лету при выполнении сниппета. Так что… единственный вариант, который я вижу — создавать ТВ, в которую при выполнении pdoPage загружать параметр из
          &pageCountVar pageCount Имя плейсхолдера для вывода количества страниц.
          Потом уже выбирать ТВ-шку и добавлять к ссылке. В теории должно работать. На практике реализовать — знаний не хватило.
            Василий Столейков
            13 апреля 2017, 11:35
            0
            Тоже думал вначале в твоём направлении. Сейчас же рассматриваю вариант самому рассчитать количество страниц, зная количество выводимых на странице, по идее это должно быть не сложно на fenom, максимум написать маленький сниппет-модификатор.
              Алексей Федоров
              13 апреля 2017, 11:38
              0
              Ну, да. Теперь и у меня глаза открылись. В modx уже встроены модификаторы математических операций, добавить фильтр на вывод целого числа и все готово.
              Максим
              13 апреля 2017, 11:55
              +2
              еще есть вот такой встроенный способ формирования ссылок
              [[~123? &par1=`val1` &par2=`val2`]]
              Может пригодится…
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        12