Skip to content

Commit

Permalink
Merge pull request #779 from ShevArtV/master
Browse files Browse the repository at this point in the history
Уточнил документация к SendIt в соответствии с версией 2.1.0
  • Loading branch information
ShevArtV authored Jul 21, 2024
2 parents 4cc5c4c + fc0a1ec commit 7890988
Show file tree
Hide file tree
Showing 2 changed files with 94 additions and 22 deletions.
35 changes: 18 additions & 17 deletions docs/components/sendit/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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**.
Expand Down
81 changes: 76 additions & 5 deletions docs/components/sendit/pagination.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,10 @@
:::tip
Вы можете вызывать сниппет **Pagination** на одной странице столько раз сколько вам нужно.
:::

## Базовое использование

Пагинация работает почти так же как и pdoPage, только не требует подключения jQuery и не имеет списка страниц. Разметка должна быть такой
Пагинация работает почти так же как и pdoPage, только не требует подключения jQuery. Разметка должна быть такой

```html:line-numbers
<div data-pn-result="one">
Expand Down Expand Up @@ -77,7 +78,75 @@
Поля для ввода номера страницы и лимита ОБЯЗАТЕЛЬНО должны существовать.
:::

## Пагинация со списком страниц

Это классический вариант постраничной навигации, при котором выводится список ссылок на другие доступные страницы.

```html:line-numbers
<div data-pn-result="four">
{'!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',
]}
</div>
<!-- PAGINATION -->
{set $totalPages = 'four.totalPages' | placeholder}
{set $currentPage = 'four.currentPage' | placeholder}
{set $limit = 'four.limit' | placeholder}
{set $pageList = 'four.pageList' | placeholder}
<div data-pn-pagination="four" data-pn-type="" class="{$totalPages < 2 ? 'v_hidden' : ''}">
<button type="button" data-pn-more="">Загрузить ещё</button>
<ul data-pn-list>
{$pageList}
</ul>
<input class="v_hidden" type="number" name="fourpage" data-pn-current data-si-preset="pagination-classic" min="1" max="{$totalPages}" value="{$currentPage?:1}">
<p>Показывать по <input type="number" name="limit" data-pn-limit form="searchForm" min="1" max="96" value="{$limit?:12}"></p>
</div>
```
:::tip
Для того, чтобы выводился список страниц, обязательно нужно указать значение для параметра *maxPageListItems*. И добавить в шаблон html-элемент с атрибутом *data-pn-list*
:::

Чанк по умолчанию для обёртки списка выглядит так
```html:line-numbers
<li><a style="padding:10px" href="#" data-pn-first="1"><<</a></li>
<li><a style="padding:10px" href="#" data-pn-prev=""><</a></li>
{$items}
<li><a style="padding:10px" href="#" data-pn-next="">></a></li>
<li><a style="padding:10px" href="#" data-pn-last="{$totalPages}">>></a></li>
```

Чанк по умолчанию для элемента списка выглядит так
```html:line-numbers
<li><a style="padding:10px" data-pn-page="{$page}" class="{$currentPage === $page ? 'active' : ''}" href="#">{$page}</a></li>
```
:::warning
Атрибут *data-pn-page* обязательный.
:::

В обоих чанках доступны плейсхолдеры
* **currentPage** - номер текущей страницы.
* **totalPages** - общее число страниц.
* **pageKey** - значение параметра *pagination*.



## Загрузка страниц при прокрутке

Для отслеживания прокрутки используется Intersection Observer API. Разметка для этого способа гораздо проще. В форме есть только два обязательных поля, сама форма скрыта и содержит атрибут **data-pn-type="scroll"**

```html:line-numbers
Expand Down Expand Up @@ -108,9 +177,10 @@
```

## Пагинация с динамическими параметрами
С pdoPage было крайне хлопотно сделать так, чтобы можно было динамически менять параметры вызова сниппета и сохранить пагинацию.

Данный функционал может понадобиться, если вы хотите сделать поиск не на отдельной странице, а прямо в каталоге.
С pdoPage было крайне хлопотно сделать так, чтобы можно было динамически менять параметры вызова сниппета и сохранить пагинацию.

Данный функционал может понадобиться, если вы хотите сделать поиск не на отдельной странице, а прямо в каталоге.

Ниже я приведу пример самого простого варианта решения данной задачи.

Expand Down Expand Up @@ -162,6 +232,7 @@
:::

Для того, чтобы работал поиск нужно написать плагин, который добавит в вызов сниппета **pdoResources** параметр **where**

```php:line-numbers
switch($modx->event->name) {
case 'OnBeforePageRender':
Expand All @@ -171,11 +242,11 @@ switch($modx->event->name) {
break;
}
```
Теперь будет работать поиск ресурсов по заголовку и вывод результатов с постраничной навигацией.

Теперь будет работать поиск ресурсов по заголовку и вывод результатов с постраничной навигацией.

:::warning
Если вы захотите сделать фильтрацию результатов по нескольким свойствам, то нужно в вызове сниппета **Pagination** указать параметр **hashParams**,
Если вы захотите сделать фильтрацию результатов по нескольким свойствам, то нужно в вызове сниппета **Pagination** указать параметр **hashParams**,
где через запятую нужно перечислить ключи параметров фильтрации.
Это нужно для того, чтобы при смене значения любого из параметров отображение страниц начиналось с первой.
:::

0 comments on commit 7890988

Please sign in to comment.