From fc0a1ece37c8f96fb49810693868a836ea94f7b8 Mon Sep 17 00:00:00 2001 From: ShevArtV Date: Sun, 21 Jul 2024 20:05:19 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A3=D1=82=D0=BE=D1=87=D0=BD=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=BA=20SendIt=20=D0=B2=20=D1=81=D0=BE=D0=BE?= =?UTF-8?q?=D1=82=D0=B2=D0=B5=D1=82=D1=81=D1=82=D0=B2=D0=B8=D0=B8=20=D1=81?= =?UTF-8?q?=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=B5=D0=B9=202.1.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/components/sendit/index.md | 35 ++++++------ docs/components/sendit/pagination.md | 81 ++++++++++++++++++++++++++-- 2 files changed, 94 insertions(+), 22 deletions(-) diff --git a/docs/components/sendit/index.md b/docs/components/sendit/index.md index 71447734..db81e45f 100644 --- a/docs/components/sendit/index.md +++ b/docs/components/sendit/index.md @@ -113,23 +113,24 @@ return $result['success'] ? $SendIt->success($msg, $data) : $SendIt->error($msg, ## Системные настройки -| Ключ | Описание | Значение | -|:--------------------------------:|:-------------------------------------------------------:|:--------------------------------------------------------:| -| **si_frontend_css** | Путь к основным стилям | *[\[+assetsUrl]]components/sendit/web/css/index.min.css* | -| **si_frontend_js** | Путь к основным JS скриптам | *[\[+assetsUrl]]components/sendit/web/js/sendit.js* | -| **si_js_config_path** | Путь к файлу JS конфигурации | *./sendit.inc.js* | -| **si_uploaddir** | Путь для загрузки файлов | */assets/components/sendit/uploaded_files/* | -| **si_path_to_presets** | Путь к пресетам | */core/components/sendit/presets/sendit.inc.php* | -| **si_send_goal** | Отправлять цели в Яндекс.Метрику | *Нет* | -| **si_counter_id** | ID счётчика метрики | | -| **si_default_email** | Адрес для отправки писем по умолчанию | | -| **si_default_admin** | ID администратора по умолчанию | | -| **si_default_emailtpl** | Чанк письма по умолчанию | *siDefaultEmail* | -| **si_max_sending_per_session** | Максимальное количество отправок одной формы за сессию | *2* | -| **si_pause_between_sending** | Пауза между отправками одной формы. | *30* | -| **si_unset_params** | Список параметров, которые не нужно возвращать в ответе | *emailTo,extends* | -| **si_precision** | Точность округления процентов загрузки файлов | *2* | -| **si_storage_time** | Время хранения загруженных файлов во временной папке | *86400* | +| Ключ | Описание | Значение | +|:------------------------------:|:--------------------------------------------------------:|:--------------------------------------------------------:| +| **si_frontend_css** | Путь к основным стилям | *[\[+assetsUrl]]components/sendit/web/css/index.min.css* | +| **si_frontend_js** | Путь к основным JS скриптам | *[\[+assetsUrl]]components/sendit/web/js/sendit.js* | +| **si_js_config_path** | Путь к файлу JS конфигурации | *./sendit.inc.js* | +| **si_uploaddir** | Путь для загрузки файлов | */assets/components/sendit/uploaded_files/* | +| **si_path_to_presets** | Путь к пресетам | */core/components/sendit/presets/sendit.inc.php* | +| **si_send_goal** | Отправлять цели в Яндекс.Метрику | *Нет* | +| **si_counter_id** | ID счётчика метрики | | +| **si_default_email** | Адрес для отправки писем по умолчанию | | +| **si_default_admin** | ID администратора по умолчанию | | +| **si_default_emailtpl** | Чанк письма по умолчанию | *siDefaultEmail* | +| **si_max_sending_per_session** | Максимальное количество отправок одной формы за сессию | *2* | +| **si_pause_between_sending** | Пауза между отправками одной формы. | *30* | +| **si_unset_params** | Список параметров, которые не нужно возвращать в ответе | *emailTo,extends* | +| **si_precision** | Точность округления процентов загрузки файлов | *2* | +| **si_storage_time** | Время хранения загруженных файлов во временной папке | *86400* | +| **si_allow_dirs** | Список имен папок из которых можно удалять другие папки | *uploaded_files* | ## Параметры по умолчанию Чтобы отправить данные на почту необязательно создавать пресет, достаточно добавить форме атрибут **data-si-form**. diff --git a/docs/components/sendit/pagination.md b/docs/components/sendit/pagination.md index 6b19e5a9..adb66973 100644 --- a/docs/components/sendit/pagination.md +++ b/docs/components/sendit/pagination.md @@ -7,9 +7,10 @@ :::tip Вы можете вызывать сниппет **Pagination** на одной странице столько раз сколько вам нужно. ::: + ## Базовое использование -Пагинация работает почти так же как и pdoPage, только не требует подключения jQuery и не имеет списка страниц. Разметка должна быть такой +Пагинация работает почти так же как и pdoPage, только не требует подключения jQuery. Разметка должна быть такой ```html:line-numbers
@@ -77,7 +78,75 @@ Поля для ввода номера страницы и лимита ОБЯЗАТЕЛЬНО должны существовать. ::: +## Пагинация со списком страниц + +Это классический вариант постраничной навигации, при котором выводится список ссылок на другие доступные страницы. + +```html:line-numbers +
+ {'!Pagination' | snippet: [ + 'parents' => 7, + 'query' => '', + 'snippet' => '!Pagination', + 'render' => '!pdoResources', + 'presetName' => 'pagination-classic', + 'tpl' => '@FILE chunks/pdoresources/item.tpl', + 'tplEmpty' => '@FILE chunks/pdoresources/empty.tpl', + 'limit' => 6, + 'includeContent' => 1, + 'setTotal' => 1, + 'pagination' => 'four', + 'resultBlockSelector' => '[data-pn-result="four"]', + 'resultShowMethod' => 'insert', + 'maxPageListItems' => 6, + 'tplPageListItem' => 'siPageListItem', + 'tplPageListWrapper' => 'siPageListWrapper', + ]} +
+ +{set $totalPages = 'four.totalPages' | placeholder} +{set $currentPage = 'four.currentPage' | placeholder} +{set $limit = 'four.limit' | placeholder} +{set $pageList = 'four.pageList' | placeholder} +
+ +
    + {$pageList} +
+ +

Показывать по

+
+``` +:::tip +Для того, чтобы выводился список страниц, обязательно нужно указать значение для параметра *maxPageListItems*. И добавить в шаблон html-элемент с атрибутом *data-pn-list* +::: + +Чанк по умолчанию для обёртки списка выглядит так +```html:line-numbers +
  • <<
  • +
  • <
  • +{$items} +
  • >
  • +
  • >>
  • +``` + +Чанк по умолчанию для элемента списка выглядит так +```html:line-numbers +
  • {$page}
  • +``` +:::warning +Атрибут *data-pn-page* обязательный. +::: + +В обоих чанках доступны плейсхолдеры +* **currentPage** - номер текущей страницы. +* **totalPages** - общее число страниц. +* **pageKey** - значение параметра *pagination*. + + + ## Загрузка страниц при прокрутке + Для отслеживания прокрутки используется Intersection Observer API. Разметка для этого способа гораздо проще. В форме есть только два обязательных поля, сама форма скрыта и содержит атрибут **data-pn-type="scroll"** ```html:line-numbers @@ -108,9 +177,10 @@ ``` ## Пагинация с динамическими параметрами -С pdoPage было крайне хлопотно сделать так, чтобы можно было динамически менять параметры вызова сниппета и сохранить пагинацию. -Данный функционал может понадобиться, если вы хотите сделать поиск не на отдельной странице, а прямо в каталоге. +С pdoPage было крайне хлопотно сделать так, чтобы можно было динамически менять параметры вызова сниппета и сохранить пагинацию. + +Данный функционал может понадобиться, если вы хотите сделать поиск не на отдельной странице, а прямо в каталоге. Ниже я приведу пример самого простого варианта решения данной задачи. @@ -162,6 +232,7 @@ ::: Для того, чтобы работал поиск нужно написать плагин, который добавит в вызов сниппета **pdoResources** параметр **where** + ```php:line-numbers switch($modx->event->name) { case 'OnBeforePageRender': @@ -171,11 +242,11 @@ switch($modx->event->name) { break; } ``` -Теперь будет работать поиск ресурсов по заголовку и вывод результатов с постраничной навигацией. +Теперь будет работать поиск ресурсов по заголовку и вывод результатов с постраничной навигацией. :::warning -Если вы захотите сделать фильтрацию результатов по нескольким свойствам, то нужно в вызове сниппета **Pagination** указать параметр **hashParams**, +Если вы захотите сделать фильтрацию результатов по нескольким свойствам, то нужно в вызове сниппета **Pagination** указать параметр **hashParams**, где через запятую нужно перечислить ключи параметров фильтрации. Это нужно для того, чтобы при смене значения любого из параметров отображение страниц начиналось с первой. :::