|
| 1 | +Сниппет для вывода блока с настройков сортировки и выбора количества товаров на странице. |
| 2 | + |
| 3 | +## evoSortBlock |
| 4 | +Сниппет для формирования блока сортировки. Из приятных вещей. |
| 5 | + |
| 6 | + |
| 7 | + |
| 8 | +## Параметры |
| 9 | +1. displayConfig настройка селекта или ссылок для указания количества товаров на странице. |
| 10 | +Пример: 20||30||40||все==all. |
| 11 | +2. sortConfig настройка ссылок для указания поля по которому товары сортируються. |
| 12 | +Пример: По название==pagetitle||По индексу==menuindex||Цена от маленькой==price:asc||Цена от большой==price:desc |
| 13 | +3. ajax - использовать ли ajax по умолчанию ноль. |
| 14 | +4. changeSortByClickField - изменять направление сортировки при повторном клике по параметру сортировки. 1/0. По умолчанию 0. |
| 15 | +Параметр необходим если у нас нет блока для выбора направление, а надо изменять направление при клике второй раз по параметру поля. |
| 16 | + |
| 17 | +### Шаблоны |
| 18 | +#### Обертка |
| 19 | +1. ownerTpl - Основная обертка блока. |
| 20 | + Плейсхолдеры ```[+class+] [+display.block+] [+sort.block+] [+sort.direction+]```. |
| 21 | + Пример: ```<div class="[+class+]">[+display.block+][+sort.block+]</div>``` |
| 22 | + |
| 23 | + * class Плейсхолдер из класами для обертки которые необходимы для работы js, а именно sort-wrap и ajax |
| 24 | + * display.block блок выбора количества товаров |
| 25 | + * sort.block Блок выбора поля для сортировки |
| 26 | + * sort.direction Блок выбора направления сортировки |
| 27 | +#### Выбор количества товаров |
| 28 | +1. displayOwnerTpl - обертка блока для выбора количества елементов на странице. |
| 29 | + Плейсхолдеры: ```[+class+]">[+wrapper+]``` |
| 30 | + Пример: ```<select class="[+class+]">[+wrapper+]</select>``` |
| 31 | + Пример: ```<div class="[+class+]">[+wrapper+]</div>``` |
| 32 | + |
| 33 | +2. displayRowTpl - Шаблон вывода строки. ( option для селекта или тег a для блока). |
| 34 | + Плейсхолдеры: ```[+value+],[+selected+],[+data+],[+class+],[+caption+] ``` |
| 35 | + Пример: ``` <option value="[+value+]" [+selected+] >[+caption+]</option>``` |
| 36 | + Пример: ``` <a [+data+] class="[+class+]">[+caption+]</a> ``` |
| 37 | +#### Выбор поля для сортировки |
| 38 | +1. sortOwnerTpl - обертка блока для выбора поля по которому елементы сортируються на странице. |
| 39 | + Плейсхолдеры: ```[+wrapper+]``` |
| 40 | + Пример: ```<ul>[+wrapper+]</ul>``` |
| 41 | + |
| 42 | +2. sortRowTpl - Шаблон вывода ссылки для выбора поля. |
| 43 | + Плейсхолдеры: ```[+class+],[+data+] [+caption+]``` |
| 44 | + Пример: ```<a class="[+class+]" [+data+]>[+caption+]</a>``` |
| 45 | + |
| 46 | +#### Выбор направления сортировки |
| 47 | +1. sortDirectionTpl - обертка блока выбора направления. |
| 48 | + Плейсхолдеры: ```[+up+][+down+]``` |
| 49 | + up - сортировка asc |
| 50 | + down - сортировка desc |
| 51 | +2. sortDirectionUpTpl - шаблон ссылки для выбора направления сортировки asc |
| 52 | + Плейсхолдеры: ```[+class+][+data+]``` |
| 53 | + class - css клас |
| 54 | + data - Дата атрибут data-value в котором хранится текущее поле а направление сортировки asc. Пример price:asc |
| 55 | +3. sortDirectionDescTpl - шаблон ссылки для выбора направления сортировки desc |
| 56 | + Плейсхолдеры: ```[+class+][+data+]``` |
| 57 | + class - css клас |
| 58 | + data - Дата атрибут data-value в котором хранится текущее поле а направление сортировки asc. Пример price:desc |
| 59 | + |
| 60 | + |
| 61 | +##### Классы |
| 62 | +1. displayActiveClass - Клас для активного пунка в выборе количеста елементов на странице. По умолчанию active. |
| 63 | +2. sortActiveClass - Клас для активного пунка в выборе поля для сортировки елементов на странице. |
| 64 | +3. sortUpClass - Класс для ссылки выбора поля когда сортировка от маленького к большому. По умолчанию up |
| 65 | +4. sortDownClass - Класс для ссылки выбора поля когда сортировка от большого к маленькому. По умолчанию down |
| 66 | +5. sortFieldClass - Класс для ссылок выбора поля и направления сортировки. По умолчанию set-sort-field. |
| 67 | +6. sortDirectionActiveClass - Клас для активной ссылки выбраного направления сортировки. По умолчанию active. |
| 68 | + |
| 69 | + |
| 70 | +##### Значения по умолчаеию |
| 71 | +1. displayDefault - количество елементов на странице по умолчанию |
| 72 | +2. sortFieldDefault - поле сортировки по умолчанию |
| 73 | +3. sortOrderDefault - направление сортировки по умолчанию |
| 74 | + |
| 75 | + |
| 76 | +## Устанавливаемые плейсхолдеры для работы без eFilterResult |
| 77 | + * sort_display - количество товаров |
| 78 | + * sort_field - поле для сортировки |
| 79 | + * sort_order - направление сортировки |
| 80 | +Также если использовать снипет без eFilter необходимо подключить js файл eFilter.js вручную. |
| 81 | +А товары обернуть в обертку eFilterResult |
| 82 | +``` |
| 83 | + <div id="eFiltr_results_wrapper"> |
| 84 | + <div class="eFiltr_loader"></div> |
| 85 | + <div id="eFiltr_results"> |
| 86 | + </div> |
| 87 | + </div> |
| 88 | + ``` |
| 89 | +
|
| 90 | +
|
| 91 | +## Логика работы js. |
| 92 | +### Для выбора количества товаров. |
| 93 | +Обрабатывается клик по елементу из класом set-display-field. |
| 94 | +Если это тег a ( ссылка ) и событие click то информация про количество берется из дата атрибута. |
| 95 | +Если это событие change информация берется из атрибута value елмента option. |
| 96 | +Дале ajax запрос из параметром sortDisplay и значением. |
| 97 | +Если ajax отклчен то обновление страницы. |
| 98 | +
|
| 99 | +### Для выбора поля и направления сортировки. |
| 100 | +Обрабатывается клик по елементу из класом set-sort-field. |
| 101 | +Если это тег a ( ссылка ) и событие click то информация про поле и направление берется из дата атрибута. |
| 102 | +Если это событие change информация берется из атрибута value елмента option. |
| 103 | +Дале ajax запрос из параметром sortBy и значением. |
| 104 | +Если ajax отклчен то обновление страницы. |
| 105 | +
|
| 106 | +
|
| 107 | +
|
| 108 | +
|
| 109 | +##### Пример |
| 110 | + [!evoSortBlock? |
| 111 | + &ownerTpl=`<div class="sorting-block__filters [+class+]"><form action="#">[+display.block+][+sort.block+]</form></div>` |
| 112 | + &displayOwnerTpl=`<div class="sorting-block__filters-amount"><span class="sorting-block__filters-label">Показывать:</span><div class="sorting-block__select"><div class="inline-select"><select class="decor-select js-select[+class+]">[+wrapper+]</select></div></div></div>` |
| 113 | + &sortOwnerTpl=`<div class="sorting-block__filters-type"><span class="sorting-block__filters-label sorting-block__filters-label--type">Сортировать:</span><div class="sorting-block__filters-block"><span class="sorting-block__filters-mobile-active"><span class="sorting-block__filters-mobile-active-inner">По популярности</span></span><ul class="sorting-block__filters-list">[+wrapper+]</ul></div></div>` |
| 114 | + &sortRowTpl=`<li class="sorting-block__filters-item"><a href="#" [+data+] [+selected+] class="sorting-block__filters-link [+class+]">[+caption+]</a></li>` |
| 115 | + &sortActiveClass=`is-active` |
| 116 | + &sortConfig=`Название==pagetitle||Дата поступления==menuindex||Цена==price` |
| 117 | + &ajax=`1` |
| 118 | + !] |
| 119 | + |
| 120 | + |
0 commit comments