Skip to content

Commit 7890988

Browse files
authored
Merge pull request #779 from ShevArtV/master
Уточнил документация к SendIt в соответствии с версией 2.1.0
2 parents 4cc5c4c + fc0a1ec commit 7890988

File tree

2 files changed

+94
-22
lines changed

2 files changed

+94
-22
lines changed

docs/components/sendit/index.md

+18-17
Original file line numberDiff line numberDiff line change
@@ -113,23 +113,24 @@ return $result['success'] ? $SendIt->success($msg, $data) : $SendIt->error($msg,
113113

114114
## Системные настройки
115115

116-
| Ключ | Описание | Значение |
117-
|:--------------------------------:|:-------------------------------------------------------:|:--------------------------------------------------------:|
118-
| **si_frontend_css** | Путь к основным стилям | *[\[+assetsUrl]]components/sendit/web/css/index.min.css* |
119-
| **si_frontend_js** | Путь к основным JS скриптам | *[\[+assetsUrl]]components/sendit/web/js/sendit.js* |
120-
| **si_js_config_path** | Путь к файлу JS конфигурации | *./sendit.inc.js* |
121-
| **si_uploaddir** | Путь для загрузки файлов | */assets/components/sendit/uploaded_files/* |
122-
| **si_path_to_presets** | Путь к пресетам | */core/components/sendit/presets/sendit.inc.php* |
123-
| **si_send_goal** | Отправлять цели в Яндекс.Метрику | *Нет* |
124-
| **si_counter_id** | ID счётчика метрики | |
125-
| **si_default_email** | Адрес для отправки писем по умолчанию | |
126-
| **si_default_admin** | ID администратора по умолчанию | |
127-
| **si_default_emailtpl** | Чанк письма по умолчанию | *siDefaultEmail* |
128-
| **si_max_sending_per_session** | Максимальное количество отправок одной формы за сессию | *2* |
129-
| **si_pause_between_sending** | Пауза между отправками одной формы. | *30* |
130-
| **si_unset_params** | Список параметров, которые не нужно возвращать в ответе | *emailTo,extends* |
131-
| **si_precision** | Точность округления процентов загрузки файлов | *2* |
132-
| **si_storage_time** | Время хранения загруженных файлов во временной папке | *86400* |
116+
| Ключ | Описание | Значение |
117+
|:------------------------------:|:--------------------------------------------------------:|:--------------------------------------------------------:|
118+
| **si_frontend_css** | Путь к основным стилям | *[\[+assetsUrl]]components/sendit/web/css/index.min.css* |
119+
| **si_frontend_js** | Путь к основным JS скриптам | *[\[+assetsUrl]]components/sendit/web/js/sendit.js* |
120+
| **si_js_config_path** | Путь к файлу JS конфигурации | *./sendit.inc.js* |
121+
| **si_uploaddir** | Путь для загрузки файлов | */assets/components/sendit/uploaded_files/* |
122+
| **si_path_to_presets** | Путь к пресетам | */core/components/sendit/presets/sendit.inc.php* |
123+
| **si_send_goal** | Отправлять цели в Яндекс.Метрику | *Нет* |
124+
| **si_counter_id** | ID счётчика метрики | |
125+
| **si_default_email** | Адрес для отправки писем по умолчанию | |
126+
| **si_default_admin** | ID администратора по умолчанию | |
127+
| **si_default_emailtpl** | Чанк письма по умолчанию | *siDefaultEmail* |
128+
| **si_max_sending_per_session** | Максимальное количество отправок одной формы за сессию | *2* |
129+
| **si_pause_between_sending** | Пауза между отправками одной формы. | *30* |
130+
| **si_unset_params** | Список параметров, которые не нужно возвращать в ответе | *emailTo,extends* |
131+
| **si_precision** | Точность округления процентов загрузки файлов | *2* |
132+
| **si_storage_time** | Время хранения загруженных файлов во временной папке | *86400* |
133+
| **si_allow_dirs** | Список имен папок из которых можно удалять другие папки | *uploaded_files* |
133134

134135
## Параметры по умолчанию
135136
Чтобы отправить данные на почту необязательно создавать пресет, достаточно добавить форме атрибут **data-si-form**.

docs/components/sendit/pagination.md

+76-5
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@
77
:::tip
88
Вы можете вызывать сниппет **Pagination** на одной странице столько раз сколько вам нужно.
99
:::
10+
1011
## Базовое использование
1112

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

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

81+
## Пагинация со списком страниц
82+
83+
Это классический вариант постраничной навигации, при котором выводится список ссылок на другие доступные страницы.
84+
85+
```html:line-numbers
86+
<div data-pn-result="four">
87+
{'!Pagination' | snippet: [
88+
'parents' => 7,
89+
'query' => '',
90+
'snippet' => '!Pagination',
91+
'render' => '!pdoResources',
92+
'presetName' => 'pagination-classic',
93+
'tpl' => '@FILE chunks/pdoresources/item.tpl',
94+
'tplEmpty' => '@FILE chunks/pdoresources/empty.tpl',
95+
'limit' => 6,
96+
'includeContent' => 1,
97+
'setTotal' => 1,
98+
'pagination' => 'four',
99+
'resultBlockSelector' => '[data-pn-result="four"]',
100+
'resultShowMethod' => 'insert',
101+
'maxPageListItems' => 6,
102+
'tplPageListItem' => 'siPageListItem',
103+
'tplPageListWrapper' => 'siPageListWrapper',
104+
]}
105+
</div>
106+
<!-- PAGINATION -->
107+
{set $totalPages = 'four.totalPages' | placeholder}
108+
{set $currentPage = 'four.currentPage' | placeholder}
109+
{set $limit = 'four.limit' | placeholder}
110+
{set $pageList = 'four.pageList' | placeholder}
111+
<div data-pn-pagination="four" data-pn-type="" class="{$totalPages < 2 ? 'v_hidden' : ''}">
112+
<button type="button" data-pn-more="">Загрузить ещё</button>
113+
<ul data-pn-list>
114+
{$pageList}
115+
</ul>
116+
<input class="v_hidden" type="number" name="fourpage" data-pn-current data-si-preset="pagination-classic" min="1" max="{$totalPages}" value="{$currentPage?:1}">
117+
<p>Показывать по <input type="number" name="limit" data-pn-limit form="searchForm" min="1" max="96" value="{$limit?:12}"></p>
118+
</div>
119+
```
120+
:::tip
121+
Для того, чтобы выводился список страниц, обязательно нужно указать значение для параметра *maxPageListItems*. И добавить в шаблон html-элемент с атрибутом *data-pn-list*
122+
:::
123+
124+
Чанк по умолчанию для обёртки списка выглядит так
125+
```html:line-numbers
126+
<li><a style="padding:10px" href="#" data-pn-first="1"><<</a></li>
127+
<li><a style="padding:10px" href="#" data-pn-prev=""><</a></li>
128+
{$items}
129+
<li><a style="padding:10px" href="#" data-pn-next="">></a></li>
130+
<li><a style="padding:10px" href="#" data-pn-last="{$totalPages}">>></a></li>
131+
```
132+
133+
Чанк по умолчанию для элемента списка выглядит так
134+
```html:line-numbers
135+
<li><a style="padding:10px" data-pn-page="{$page}" class="{$currentPage === $page ? 'active' : ''}" href="#">{$page}</a></li>
136+
```
137+
:::warning
138+
Атрибут *data-pn-page* обязательный.
139+
:::
140+
141+
В обоих чанках доступны плейсхолдеры
142+
* **currentPage** - номер текущей страницы.
143+
* **totalPages** - общее число страниц.
144+
* **pageKey** - значение параметра *pagination*.
145+
146+
147+
80148
## Загрузка страниц при прокрутке
149+
81150
Для отслеживания прокрутки используется Intersection Observer API. Разметка для этого способа гораздо проще. В форме есть только два обязательных поля, сама форма скрыта и содержит атрибут **data-pn-type="scroll"**
82151

83152
```html:line-numbers
@@ -108,9 +177,10 @@
108177
```
109178

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

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

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

@@ -162,6 +232,7 @@
162232
:::
163233

164234
Для того, чтобы работал поиск нужно написать плагин, который добавит в вызов сниппета **pdoResources** параметр **where**
235+
165236
```php:line-numbers
166237
switch($modx->event->name) {
167238
case 'OnBeforePageRender':
@@ -171,11 +242,11 @@ switch($modx->event->name) {
171242
break;
172243
}
173244
```
174-
Теперь будет работать поиск ресурсов по заголовку и вывод результатов с постраничной навигацией.
175245

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

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

0 commit comments

Comments
 (0)