AJAX в tagManager2 или кто такой Брюс Уэйн =)

Всем привет, всё пытаюсь понять, чтож в tagManager2 не работает ajax выдача, постоянная пустая выдача, хотя при get запросе, всё нормально находится.

Возможно кто-то уже воевал с этой проблемой, суть "фильтрация 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 сайте работает (с чекбоксами, у меня селекторы).

Поделитесь опытом, спасибо.
Павел Левин
28 июня 2014, 17:59
modx.pro
5 045
0

Комментарии: 9

Василий Наумкин
29 июня 2014, 00:41
0
Я смотрю, ты уже много времени сэкономил с этим готовым бесплатным решением =)
    Павел Левин
    29 июня 2014, 13:07
    0
    Да, оно странно работает, но первая проблема была в моей невнимательности, тут же я всё точно проверил =), если работает у других, то и у меня заработает, когда я пойму в чем особенность работы без шопкипера.
    Игорь
    29 июня 2014, 13:46
    0
    Если все конфиги настроены правильно, то суть проблемы скорее всего в следующем: при ajax-фильтрации сниппет [[!tmCatalog]] должен вызываться именно так, без параметров. Все параметры должны быть прописаны в наборе параметров, по умолчанию это catalog_filters. И tpl, и element, и includeTVList и все остальное. В вызове tmCatalog не должно быть ничего, кроме [[!tmCatalog]].

      Павел Левин
      29 июня 2014, 14:11
      0
      Да, это я единственное не понял из всей инструкции =), попробую.
        Павел Левин
        29 июня 2014, 14:26
        0
        Очистил вызов, создал параметр, ничего не выводит.

        Делаю так: https://file.modx.pro/files/b/b/1/bb161c0dc18fcdb69a9c5fba54af350a.png

        тоже самое я проделал и с «Сниппет: tmCatalog»
          Игорь
          29 июня 2014, 14:37
          0
          Набор параметров надо создавать не для tmFilters, и даже не для tmCatalog, а для getPage, ибо tmCatalog собственных параметров не имеет, а подхватывает параметры getPage.
          пример
            Павел Левин
            29 июня 2014, 16:03
            0
            Теперь стало понятно и всё получилось.
            Спасибо =)

            Я создал группу параметров "catalog_filters", выбрал её, добавил нужных параметров и их значения, сохранил параметр.

            Шпаргалка для нуждающихся:
            file.modx.pro/files/3/a/9/3a917fb0f0560a807302cf16426ea663.png

        Игорь
        29 июня 2014, 14:39
        0
        а там уже в element указать getProducts
          Игорь
          29 июня 2014, 17:08
          0
          Отлично, рад, что помог!
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            9