Разработка сайта для Вашего бизнеса. Веб дизайн. Дизайн логотипа, фирменного стиля, рекламная фотография . Комплексный рекламный креатив.

Ralex. We do the work.
На рынке с 1999го года. Средняя ценовая категория. Ориентация на эффективность решений.
Ознакомтесь с нашим портфолио
Узнайте больше о услугах
Свяжитесь с нами:
E-mail: [email protected]
Tel: (044) 587 - 84 - 78
Custom web design & дизайн и разработка сайта "под ключ"
Креативный, эффективный дизайн. Система управления сайтом (СУС).
Custom flexible разработка систем электронной коммерции
Система e-commerce разрабатывается под индивидуальные потребности. Гибкая функциональность.
Search Engine Optimzation & оптимизация под поисковые системы (SEO)
Постоянная оптимизация и мониторинг сайта в поисковых системах. Достигаем результата быстро и эффективно
Custom logo design & дизайн логотипа и фирменного стиля
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.
профессиональная рекламная фотография
креативно, смело, качественно
Custom logo design & рекламный креатив. дизайн рекламы
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.

Пагінація на сайті з використанням pdoPage

  1. параметри
  2. підтримка Ajax
  3. Вбудована Ajax пагінація
  4. Завантаження кнопкою
  5. Завантаження при прокручуванні
  6. History API
  7. Функції зворотного виклику
  8. человекопонятний навігація
  9. приклади

Наша взаимовыгодная связь https://banwar.org/

Сніппет pdoPage дозволяє вивести результати роботи інших фрагментів з розбивкою на сторінки.

Є кілька серйозних відмінностей від сниппета getPage:

параметри

При виклику сниппета pdoPage вказуються параметри сниппета, для якого проводиться пагінація. Даний сниппет повинен розуміти параметри & page і & limit. За замовчуванням pdoPage приймає всі параметри pdoTools і крім того, деякі свої:

Назва По замовчуванням Опис & plPrefix Префікс для виставляються плейсхолдеров & limit 10 Обмеження кількості результатів на сторінці. Число повинно бути більше 0, інакше вам не потрібен цей сниппет. & maxLimit 100 Максимально можливий ліміт вибірки. Перекриває ліміт, зазначений користувачем через url. & offset 0 Пропуск результатів від початку. & page 1 Номер сторінки для виведення. Перекривається номером, вказаним користувачем через url. & pageVarKey page Ім'я змінної для пошуку номера сторінки в url. & totalVar page.total Ім'я плейсхолдера для збереження загальної кількості результатів. & pageLimit 5 Кількість посилань на сторінки. Якщо більше або дорівнює 7 - включається просунутий режим відображення. & element pdoResources Ім'я сниппета для запуску. & pageNavVar page.nav Ім'я плейсхолдера для виведення пагінацію. & pageCountVar pageCount Ім'я плейсхолдера для виведення кількості сторінок. & pageLinkScheme Шаблон генерації посилань на сторінки. Дозволяє реалізувати ЧПУ пагінацію. Див. нижче. & tplPage Чанк оформлення звичайного посилання на сторінку. & tplPageWrapper Чанк оформлення всього блоку пагінацію, містить плейсхолдери сторінок. & tplPageActive Чанк оформлення посилання на поточну сторінку. & tplPageFirst Чанк оформлення посилання на першу сторінку. & tplPageLast Чанк оформлення посилання на останню сторінку. & tplPagePrev Чанк оформлення посилання на попередню сторінку. & tplPageNext Чанк оформлення посилання на наступну сторінку. & tplPageSkip Чанк оформлення пропущених сторінок при просунутому режимі відображення (& pageLimit> = 7). & tplPageFirstEmpty Чанк, який виводиться за відсутності посилання на першу сторінку. & tplPageLastEmpty Чанк, який виводиться за відсутності посилання на останню сторінку. & tplPagePrevEmpty Чанк, який виводиться за відсутності посилання на попередню сторінку. & tplPageNextEmpty Чанк, який виводиться за відсутності посилання на наступну сторінку. & cache 0 Кешування результатів роботи сниппета. & cacheTime 3600 Час актуальності кешу, в секундах. & cache_user Примусово встановлює ID користувача, за замовчуванням кешування проводиться з урахуванням ID користувача & toPlaceholder Якщо не порожньо, сниппет збереже всі дані в плейсхолдер з цим ім'ям, замість висновку не екран. ajax Включити підтримку ajax запитів. ajaxMode Ajax пагінація "з коробки". Доступні 3 режиму: "default", "button" і "scroll". ajaxElemWrapper #pdopage jQuery селектор елемента-обгортки з результатами і пагінацією. ajaxElemRows #pdopage .rows jQuery селектор елемента з результатами. ajaxElemPagination #pdopage .pagination jQuery селектор елемента з пагінацією. ajaxElemLink #pdopage .pagination a jQuery селектор посилання на сторінку. ajaxElemMore #pdopage .btn-more jQuery селектор кнопки завантаження результатів при ajaxMode = button. ajaxHistory Зберігати номер сторінки в url при роботі в режимі ajax. frontend_js [[+ assetsUrl]] js / pdopage.min.js Посилання на javascript для підключення сніпетів. frontend_css [[+ assetsUrl]] css / pdopage.min.css Посилання на css стилі оформлення для підключення сніпетів. setMeta 1 Реєстрація мета-тегів з посиланнями на попередню і наступну сторінку. strictMode 1 Суворий режим роботи. pdoPage робить редіректи при завантаженні неіснуючих сторінок. Шаблон За замовчуванням & tplPage @INLINE <li> <a href="[[+href]]"> [[+ pageNo]] </a> </ li> & tplPageWrapper @INLINE <div class = "pagination"> <ul class = "pagination"> [[+ first]] [[+ prev]] [[+ pages]] [[+ next]] [[+ last]] </ ul> </ div> & tplPageActive @INLINE <li class = "active"> <a href="[[+href]]"> [[+ pageNo]] </a> </ li> & tplPageFirst @INLINE <li class = "control"> <a href = "[[+ href]] "> [[% pdopage_first]] </a> </ li> & tplPageLast @INLINE <li class =" control "> <a href="[[+href]]"> [[% pdopage_last]] < / a> </ li> & tplPagePrev @INLINE <li class = "control"> <a href="[[+href]]"> & laquo; </a> </ li> & tplPageNext @INLINE <li class = "control "> <a href="[[+href]]"> & raquo; </a> </ li> & tplPageSkip @INLINE <li class =" disabled "> <span> ... </ span> </ li> & tplPageFirstEmpty @INLINE <li class = "control"> <span> [[% pdopage_first]] </ span> </ li> & tplPageLastEmpty @INLINE <li class = "control"> <span> [[% pdopage_last]] </ span> </ li> & tplPagePrevEmpty @INLINE <li class = "disabled"> <span> & laquo; </ span> </ li> & tplPageNextEmpty @INLINE <li class = "disabled"> <spa n> & raquo; </ span> </ li> ajaxTplMore @INLINE <button class = "btn btn-default btn-more"> [[% pdopage_more]] </ button>

підтримка Ajax

pdoPage може видавати JSON і переривати роботу движка при відповідно запиту трьом характеристикам:

  • У сниппета включений параметр & ajax.
  • Запит зроблений за допомогою XMLHttpRequest, тобто - ajax.
  • У запиті міститься змінна, зазначена у сниппета в & pageVarKey. За замовчуванням, це page.

Тобто, вам досить просто вказати сніпетів & ajax = `1` і відправити сторінці GET запит типу:

$ .Get ( 'document.html? Page = 5', function (response) {console.log (response);}, 'json');

І у відповідь ви отримаєте JSON c результатами роботи, пагінацією і службовими даними: номер сторінки, скільки всього сторінок і скільки всього результатів. З огляду на, що pdoPage - це сниппет-обгортка, таким чином ви можете змусити працювати через ajax багато інших сніппети.

Вбудована Ajax пагінація

Починаючи з версії 1.10 pdoPage вміє завантажувати сторінки через ajax. Вам потрібно лише обернути його виклик в спеціальну розмітку:

<Div id = "pdopage"> <div class = "rows"> [[! PdoPage? & Parents = `0` & ajaxMode =` default`]] </ div> [[! + Page.nav]] </ div>

Усередині [[+ page.nav]] у нас div з класом pagination - так в pdoPage за замовчуванням.

Ви можете змінювати ідентифікатори цієї розмітки наступними параметрами:

  • ajaxElemWrapper - jQuery селектор елемента-обгортки з результатами і пагінацією. За замовчуванням #pdopage.
  • ajaxElemRows - jQuery селектор елемента з результатами. За замовчуванням #pdopage .rows
  • ajaxElemPagination - jQuery селектор елемента з пагінацією. За замовчуванням #pdopage .pagination
  • ajaxElemLink - jQuery селектор посилання на сторінку. За замовчуванням #pdopage .pagination a

Два останніх селектора розраховують на те, що ви не міняли стандартне оформлення блоку пагінацію в параметрі & tplPageWrapper. Робота забезпечується підключенням javascript файлу з параметра & frontent_js.

Параметр & ajax = `1` вказувати необов'язково. Чи не порожній & ajaxMode активує його самостійно.

Завантаження кнопкою

На відміну від стандартної пагінацію, цей тип роботи передбачає, що користувач буде рухатися тільки вниз, завантажуючи нові елементи, і тому зрушує блок пагінацію при прокручуванні.

Так що, логічно його розміщувати вгорі:

<Div id = "pdopage"> [[! + Page.nav]] <div class = "rows"> [[! PdoPage? & Parents = `0` & ajaxMode =` button` & limit = `5`]] </ div> </ div>

Використовуються все ті ж селектори, плюс:

  • ajaxElemMore - jQuery селектор кнопки завантаження результатів при ajaxMode = button. За замовчуванням #pdopage .btn-more.
  • ajaxTplMore - Шаблон кнопки для завантаження нових результатів при ajaxMode = button. Повинен включати селектор, вказаний в & ajaxElemMore. За замовчуванням @INLINE <button class = "btn btn-default btn-more"> [[% pdopage_more]] </ button>

При натисканні на кнопку завантажуються & limit елементів і додаються в кінець блоку результатів. Якщо більше завантажувати нічого - кнопка ховається. Плаваючий блок навігації показує поточну сторінку і дозволяє швидко перейти куди потрібно. Тут клік вже не обробляється через ajax, тому що і так виходить досить складно.

Якщо висновок плаваючого блоку в пагінацією не потрібен, то просто зробіть йому display: none в вашому css.

Завантаження при прокручуванні

Цей спосіб дуже схожий на попередній, тільки немає кнопки і її не потрібно натискати - все робиться автоматично при прокручуванні сторінки.

<Div id = "pdopage"> [[! + Page.nav]] <div class = "rows"> [[! PdoPage? & Parents = `0` & ajaxMode =` scroll`]] </ div> </ div>

History API

pdoPage підтримує роботу з History API вашого браузера. Це означає, що коли & ajaxMode включений, сниппет може зберігати номер сторінки в адресному рядку, щоб при перезавантаженні нічого не втрачалося. Також правильно працює навігація кнопками "вперед \ назад" браузера.

Ви можете змінити цю поведінку параметром & ajaxHistory, включивши або вимкнувши його. За замовчуванням він працює наступним чином:

  • Якщо ajaxMode встановлений в default, то History API використовується, номер сторінки зберігається.
  • Якщо ajaxMode встановлений в scroll або button, то History API не використовується.

При відключенні & ajaxHistory блок в посторінковою навігацією ховається, щоб сторінки не можна було перемикати вручну.

Функції зворотного виклику

Ви можете вказати функції, які будуть викликатися до і після завантаження сторінки через ajax ось так:

pdoPage.callbacks [ 'before'] = function (config) {console.log ( 'Конфиг перед завантаженням!', config); }; pdoPage.callbacks [ 'after'] = function (config, response) {console.log ( 'Конфиг після завантаження!', config); console.log ( 'Відповідь від сервера!', response); }

З версії 1.11.0-pl з'явилася можливість додавання обробника на подію pdopage_load:

$ (Document) .on ( 'pdopage_load', function (e, config, response) {console.log (e, config, response);});

Перевірка даних в config дозволить вам розрізнити різні виклики pdoPage на одній сторінці.

человекопонятний навігація

З версії 2.2.2 можна використовувати параметр & pageLinkScheme для вказівки схеми генерації посилань на сторінку. У параметрі може бути всього 2 плейсхолдера:

  • [[+ PageVarKey]] - змінна з ім'ям сторінки. За замовчуванням page.
  • [[+ Page]] - номер сторінки

Для прикладу вкажіть такий параметр:

[[! PdoPage? & Parents = `0` & pageLinkScheme =` / [[+ pageVarKey]] - [[+ page]] `]] [[! + Page.nav]]

Це призведе до генерації посилань, типу

/ Res / news / / res / news / page-2 / res / news / page-3

При переході по цих посиланнях (крім першої) MODX видаватиме помилку 404, тому що сторінок з цими адресами не існує. Так що, нам потрібно написати плагін для їх обробки:

<? Php // Реагуємо тільки на подію OnPageNotFound if ($ modx-> event-> name == 'OnPageNotFound') {// Визначаємо ключ запиту з налаштувань $ req = $ modx-> getOption ( 'request_param_alias'); // Ловимо потрібний ключ сторінки $ pageVarKey = 'page'; // Якщо в запиті повторюється наш шаблон "pageVarKey-page", то працюємо далі if (preg_match ( "#. *? ({$ PageVarKey} - (\ d +)) #", $ _REQUEST [$ req], $ matches) ) {// Отрезаем ЧПУ рядок і отримуємо точну адресу поточної сторінки $ uri = str_replace ($ matches [1], '', $ matches [0]); // Шукаємо сторінку за цією адресою $ id = 0; // Спочатку як є, зі слешем на кінці if (! $ Id = $ modx-> findResource ($ uri)) {// Якщо не знаходимо - то пробуємо відрізати слеш і шукаємо повторно $ id = $ modx-> findResource (rtrim ($ uri, '/')); } // Якщо ресурс знайдений if ($ id) {// Додаємо номер сторінки в глобальні масиви, щоб pdoPage їх там побачив $ _GET [$ pageVarKey] = $ _REQUEST [$ pageVarKey] = $ matches [2]; // І завантажуємо цю сторінку $ modx-> sendForward ($ id); } // Якщо ресурс не був знайдений - нічого не робимо, можливо запит зловить інший плагін}}

Тепер цей плагін буде обробляти вашу ЧПУ навігацію.

приклади

Так як pdoPage є частиною pdoTools, в параметрі & element у нього відразу прописаний сниппет pdoResources. Тому простий виклик сниппета виведе вам дочірні ресурси:

[[! PdoPage? & Tpl = `@ INLINE <p> [[+ idx]] <a href="/[[+uri]]"> [[+ pagetitle]] </a> </ p>`]] [[! + Page .nav]]

Виводимо всі можливі документи сайту:

[[! PdoPage? & Tpl = `@ INLINE <p> [[+ idx]] <a href="/[[+uri]]"> [[+ pagetitle]] </a> </ p>` & parents = `0`]] [[! + page.nav]]

Включаємо навігацію з пропуском сторінок. Зверніть увагу, що якщо сторінок виходить менше 7, то буде працювати звичайна навігація.

[[! PdoPage? & Tpl = `@ INLINE <p> [[+ idx]] <a href="/[[+uri]]"> [[+ pagetitle]] </a> </ p>` & parents = `0` & pageLimit = `7`]] [[! + page.nav]]

Активуємо кеш на 30 хвилин:

[[! PdoPage? & Tpl = `@ INLINE <p> [[+ idx]] <a href="/[[+uri]]"> [[+ pagetitle]] </a> </ p>` & parents = `0` & pageLimit = `7` & cache =` 1` & cacheTime = `1800`]] [[! + page.nav]]

Вказуємо максимальний ліміт вибірки. Тепер, який би limit не вказав користувач в url - все одно буде не більше 10 результати пошуку.

[[! PdoPage? & Tpl = `@ INLINE <p> [[+ idx]] <a href="/[[+uri]]"> [[+ pagetitle]] </a> </ p>` & parents = `0` & pageLimit = `7` & cache =` 1` & cacheTime = `1800` & maxLimit =` 10`]] [[! + page.nav]]
Html?
PdoPage?
PdoPage?
PdoPage?
PdoPage?
PdoPage?
PdoPage?
PdoPage?
PdoPage?
PdoPage?
Категории
  • Биология
  • Математика
  • Краеведению
  • Лечебная
  • Наука
  • Физике
  • Природоведение
  • Информатика
  • Новости

  • Новости
    https://banwar.org/
    Наша взаимовыгодная связь https://banwar.org/. Запустив новый сайт, "Пари Матч" обещает своим клиентам незабываемый опыт и возможность выиграть крупные суммы.


    Наши клиенты
    Клиенты

    Быстрая связь

    Тел.: (044) 587-84-78
    E-mail: [email protected]

    Имя:
    E-mail:
    Телефон:
    Вопрос\Комментарий: