AJAX в tagManager2 или кто такой Брюс Уэйн =)
Всем привет, всё пытаюсь понять, чтож в tagManager2 не работает ajax выдача, постоянная пустая выдача, хотя при get запросе, всё нормально находится.
Возможно кто-то уже воевал с этой проблемой, суть "фильтрация modx документов в каталоге".
Мой вызов сниппета:
Инструкция:
filters.js
filters_simple.js
Сижу, экспериментирую с параметрами, ведь на demo сайте работает (с чекбоксами, у меня селекторы).
Поделитесь опытом, спасибо.
Возможно кто-то уже воевал с этой проблемой, суть "фильтрация modx документов в каталоге".
Мой вызов сниппета:
<div class="form-search" id="filters">
<form action="[[~[[*id]]]]" method="get">
<input type="hidden" name="page_id" value="[[*id]]" disabled="disabled" />
<input type="hidden" name="sortby" value="pagetitle" />
<input type="hidden" name="sortdir" value="asc" />
<input type="hidden" name="limit" value="10" />
[[tmFilters?
&filterOuterTpl=`tpl.tm2.filter-outer-select`
&filterTpl=`tpl.tm2.filter-select`
&jsMap=`0`
&filtersType=`filters`
]]
<div class="line text_center">
<button type="submit" class="submit">Подобрать</button>
<button type="button" onclick="tmFilters.resetFilters(); return false;" class="submit clear">Очистить форму</button>
</div>
</form>
</div><!-- .form-search -->
Возможно ему требуется некая настройка, но файлы, которые требуется отредактировать для «тонкой» настройки, я просмотрел.Инструкция:
Используется библиотека jQuery.
Если у вас на сайте уже используется jQuery, повторно она подключаться не будет (сделана автоматическая проверка).
Для тонкой настройки открыть в текстовом редакторе файл
/assets/components/tag_manager2/js/web/filters.js
или
/assets/components/tag_manager2/js/web/filters_simple.js
Настройки вверху, в коде есть комментарии.
Если используется ajax-фильтрация (filtersType = filters), в форму фильтрации добавить скрытое поле (см. пример 3):
<input type="hidden" name="page_id" value="[[*id]]" disabled="disabled" />
Параметр "filters_type" в filters.js
Для "filters_type" = "default" (показ числа товаров по каждому фильтру и блокирование пустых вариантов)
или "only_block" (только блокирование пустых париантов) необходимо включить параметр "jsMap" у сниппета "tmFilters".
Если "filters_type" = "none", "jsMap" рекомендуется выключить.
Руководствуясь инструкцией я внес правки, которые посчитал нужным, итог:filters.js
/* ########################################### */
/**
* config
*
* Настройки
*
*/
config: {
filters_cont: '#filters',//Селектор оберточного элемента блоков с фильтрами
sortby: 'pagetitle',//Имя поля сортировки по умолчанию
sortdir: 'asc',//Направление сортировки по умолчанию
numeric: ['price', 'weight'],//Имена доп. полей с числовыми значениями
multitags: ['tag'],//Имена доп. полей с множественными значениями
guard_key: '#',//Разделитель для множественных значений
products_cont: '#products',//Селектор контейнера с выводом товаров
filter_slider: 'div.range-slider',//Селектор слайдеров (ползунок для числовых значений)
filter_slider_cont: 'div.filter_slider',//Селектор контейнера со слайдером
//slider_steps: [10, 0.1],//Число единиц шага слайдера. Можно установить разные параметры для разных слайдеров по порядку.
pages_cont1: '#pages',//Селектор контейнера с постраничной навигацией
pages_cont2: '#pages2',//Селектор второго контейнера с постраничной навигацией. Если нет, оставить пустым.
active_page_selector: '.current',//селектор номера текущей страницы внутри контейнера (pages_cont)
filters_type: 'none',//Тип фильтрации. Возможные значения: default (показ числа товаров по каждому фильтру и блокирование пустых вариантов), only_block (только блокирование пустых париантов), none (не показывать цифры и не блокировать)
price_field: 'price',//Название поля или TV цены товара
multi_currency: true,//Мультивалютность включить / выключить (true/false)
ajax_url: '/assets/components/tag_manager2/connector_fe.php',
ajax_loader: '/assets/components/tag_manager2/img/ajax-loader.gif'
},
/* ########################################### */
filters_simple.js
/* ########################################### */
/**
* config
*
* Настройки
*
*/
config: {
filters_cont: '#filters',//Селектор оберточного элемента блоков с фильтрами
slider_steps: [10, 0.1],//Число единиц шага слайдера
sortby: 'pagetitle',//Имя поля сортировки по умолчанию
sortdir: 'asc',//Направление сортировки по умолчанию
numeric: ['price', 'weight'],//Имена доп. полей с числовыми значениями
multitags: ['tag'],//Имена доп. полей с множественными значениями
limit: 10, //Число товаров на странице по умолчанию
price_field: 'price',//Название поля или TV цены товара
multi_currency: true,//Мультивалютность включить / выключить (true/false)
filter_mode: 'get' //hash | get (пока доступно только get)
},
/* ########################################### */
Сижу, экспериментирую с параметрами, ведь на demo сайте работает (с чекбоксами, у меня селекторы).
Поделитесь опытом, спасибо.
Комментарии: 9
Я смотрю, ты уже много времени сэкономил с этим готовым бесплатным решением =)
Да, оно странно работает, но первая проблема была в моей невнимательности, тут же я всё точно проверил =), если работает у других, то и у меня заработает, когда я пойму в чем особенность работы без шопкипера.
Если все конфиги настроены правильно, то суть проблемы скорее всего в следующем: при ajax-фильтрации сниппет [[!tmCatalog]] должен вызываться именно так, без параметров. Все параметры должны быть прописаны в наборе параметров, по умолчанию это catalog_filters. И tpl, и element, и includeTVList и все остальное. В вызове tmCatalog не должно быть ничего, кроме [[!tmCatalog]].
Да, это я единственное не понял из всей инструкции =), попробую.
Очистил вызов, создал параметр, ничего не выводит.
Делаю так: https://file.modx.pro/files/b/b/1/bb161c0dc18fcdb69a9c5fba54af350a.png
тоже самое я проделал и с «Сниппет: tmCatalog»
Делаю так: https://file.modx.pro/files/b/b/1/bb161c0dc18fcdb69a9c5fba54af350a.png
тоже самое я проделал и с «Сниппет: tmCatalog»
Набор параметров надо создавать не для tmFilters, и даже не для tmCatalog, а для getPage, ибо tmCatalog собственных параметров не имеет, а подхватывает параметры getPage.
пример
пример
Теперь стало понятно и всё получилось.
Спасибо =)
Я создал группу параметров "catalog_filters", выбрал её, добавил нужных параметров и их значения, сохранил параметр.
Шпаргалка для нуждающихся:
file.modx.pro/files/3/a/9/3a917fb0f0560a807302cf16426ea663.png
Спасибо =)
Я создал группу параметров "catalog_filters", выбрал её, добавил нужных параметров и их значения, сохранил параметр.
Шпаргалка для нуждающихся:
file.modx.pro/files/3/a/9/3a917fb0f0560a807302cf16426ea663.png
а там уже в element указать getProducts
Отлично, рад, что помог!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.