Вопрос по пагинации

waResearchLab

Приветствую!

Подскажите направление, как бы добавить в URL'ы страниц которые приходят в ответ на вызов из шаблона

{wa_pagination total=$pages_count page=$wa->get('page', 1) prev="«" next="»" nb=3 attrs=['class' => 'menu-h my-pagination']}

некие параметры. Например, чтоб ссылка вела на некий якорь ?page=1#my_anchor ? Ну и чтоб в исходники фреймворка не лезть, т.е. плагином или шаблоном.

Спасибо.

25 мая 2016
  • km 25 мая 2016 06:16

    Как вариант можно скопировать и модифицировать wa-system/vendors/smarty-plugins/function.wa_pagination.php


    Можно написать плагин, который лезит в wa-system/vendors/smarty-plugins и добавляет модифицированный файл пагинации)

  • waResearchLab 25 мая 2016 06:37

    А кстати да... Пожалуй, создать копию smarty плагина самый простой вариант.

    Спасибо!

  • А можно модифицировать код плагина так, чтобы его использование стало удобнее всем и отправить pull request на github'е.

    Это гораздо лучше, чем писать плагин, который будет модифицировать системный код. Брр...

  • waResearchLab 25 мая 2016 14:37

    Не... Речь просто о создании копии smarty-плагина с нужным функционалом. Но гляну, если там может получиться что-то стоящее и кому-то еще сможет оказаться интересным - то почему бы и нет.

  • mightyvoodoo 24 января 2017 16:13

    Если ещё есть заинтересованность в данном вопросе, то предложил бы следующее простое решение на базе функционала Smarty (в шаблоне):

    {capture assign='pagination'}
            {wa_pagination total=$pages page=$page prev='Назад' next='Вперёд' nb=3 attrs=['class' => 'ваш-класс']}
    {/capture}
    
    {$pagination|regex_replace:'/href=["\']?([^"\'>]+)["\']?/':'href="\1#ваш-якорь"'}

    Работает со всеми видами атрибутов адреса в ссылках (на случай использования плагинов, которые могут изменять вид кавычек).

    Возможно, кому-нибудь ещё пригодится, достаточно просто и без изменений во встроенных функциях...

  • mightyvoodoo 24 января 2017 16:58

    Можно ещё немного упрощённый вариант использовать:

    {$pagination|regex_replace:'/href="(.*?)"/':'href="\1#ваш-якорь"'}

    Лучше его применять, если точно есть уверенность в том, что не используются плагины, которые могут повлиять на атрибуты, то есть при сборке шаблона разметка остаётся классической.

    P.S.: В предыдущем примере при использовании URL, содержащих кавычки, Regex распознаёт до первой одинарной, но хорошо использовать при наличии сторонних плагинов, изменяющих атрибуты во время сборки шаблонов.

  • waResearchLab 24 января 2017 19:28

    Как вариант - вполне.

    Но тут изначально задумка заключалась в том, чтобы при переходе на предыдущую страницу якориться на последний комментарий на странице, а при переходе на следующую - к первому. Если правильно вижу, эта конструкция этого не обеспечит, даже если якоря использовать не динамические (id комментария) а забить их в шаблон статикой в начало и конец страницы. И да... Руки так и не дошли попробовать реализовать )) Ну запишу себе, может под настроение поковыряюсь :)



Чтобы добавить комментарий, зарегистрируйтесь или войдите