[решено] tagManager 2.0 - не заводится, барахлит..
Здравствуйте!
Какой день пытаюсь понять, что не так я делаю, ведь есть инструкция, которая приложена разработчиком и отличный интерфейс с ангуляром, только вот… не хочет он работать как надобно.
tagManager 2.0 — отличное дополнение, которое не хочет работать (с и без шопкипера).

Всё отлично до момента попытки вывода фильтров, выводим:
Сами же документы, которые необходимо фильтровать, находятся в другом контейнере.
Вот что имеем:

если я добавляю еще одно значение (они берутся с tv параметров указанных в документе), то результат огорчает:

он просто добавляет новый селект в список, но при этом все селекторы пусты и имеют лишь значение по умолчанию, которое указывается в шаблоне:
по прежнему я не понимаю, нужно ли в именах tv параметров писать префикс "f_", думаю что это не требуется т.к. в шаблоне он статично введен.
Я в тупике т.к. это очень странно всё, или я что-то упускаю в инструкции:
Какой день пытаюсь понять, что не так я делаю, ведь есть инструкция, которая приложена разработчиком и отличный интерфейс с ангуляром, только вот… не хочет он работать как надобно.
tagManager 2.0 — отличное дополнение, которое не хочет работать (с и без шопкипера).

Всё отлично до момента попытки вывода фильтров, выводим:
[[tmFilters?
&filterOuterTpl=`tpl.tm2.filter-outer`
&filterTpl=`tpl.tm2.filter-outer-select`
&filterNumericOuterTpl=`tpl.tm2.filter-outer`
&filterNumericTpl=`tm2_filterNumericTpl`
&jsMap=`1`
&toPlaceholder=`filters`
]]
<div class="form-search" id="filters">
<form action="[[~[[*id]]]]" method="get">
<input type="hidden" name="page_id" value="[[*id]]" disabled="disabled" />
[[+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 -->
<div class="item-wrap">
<div id="products">
[[!tmCatalog?
&tpl=`tpl.mini-cart`
&includeTVs=`1`
&includeTVList=`price,image`
]]
<div class="clearfix"></div>
</div>
<ul class="pages" id="pages2">
[[!+page.nav]]
</ul>Выводим в шаблоне для раздела «поиска/фильтрации».Сами же документы, которые необходимо фильтровать, находятся в другом контейнере.
Вот что имеем:
если я добавляю еще одно значение (они берутся с tv параметров указанных в документе), то результат огорчает:
он просто добавляет новый селект в список, но при этом все селекторы пусты и имеют лишь значение по умолчанию, которое указывается в шаблоне:
<div class="line">
<div class="line-name">[[+caption]]</div>
<div class="line-value">
<select name="f_[[+name]]">
<option value="">[[+caption]]</option>
[[+inner]]
</select>
</div>
</div>по прежнему я не понимаю, нужно ли в именах tv параметров писать префикс "f_", думаю что это не требуется т.к. в шаблоне он статично введен.
Я в тупике т.к. это очень странно всё, или я что-то упускаю в инструкции:
tagManager 2.0— Вопрос на офф форуме: без ответа (на данный момент)
modx-shopkeeper.ru/
==================================================================
Компонент для фильтрации товаров в каталоге и управления фильтрами.
Функции:
— Управление фильтрами. Изменение порядка сортировки, переименование названий групп фильтров и др.
— Групповое изменение значений доп. параметров товаров.
— Простая фильтрация товаров в каталоге (без ajax).
— Ajax-фильтрация товаров в каталоге с выводом количества найденных товаров по каждому фильтру.
— Динамическое изменение вида вывода товаров (изменение шаблонов).
— Поддержка мультивалютности.
==================================================================
tmFilters — сниппет выводит фильтры. Вызывать кэшированным (без "!").
tmCatalog — сниппет выводит товары каталога и фильтрует. Вызывать не кэшированным (с "!").
Необходимо установить сниппет getProducts (http://modx.com/extras/package/getproducts).
==================================================================
Сниппет tmFilters
Параметры сниппета:
filterOuterTpl — Чанк блоки с фильтрами. По умолчанию — tm2_filterOuterTpl.
filterTpl — Чанк одного фильтра. По умолчанию — tm2_filterTpl.
filterNumericOuterTpl — Чанк блока с фильтрами с числовыми значениями. По умолчанию — tm2_filterOuterTpl.
filterNumericTpl — Чанк фильтра с числовыми значениями. По умолчанию — tm2_filterNumericTpl.
jsMap — Генерация JS-карты данных товаров для возможности вывода количества найденных товаров по каждому фильтру ( 1 — да, 0 — нет). По умолчанию: 0.
toPlaceholder — Имя плейсхолдера для вывода. Если не задано, выводится в месте вызова сниппета.
style — Подключить CSS-файл стилей ( 1 — да, 0 — нет). По умолчанию: 1.
jsScript — Подключить все необходимые JS-скрипты ( 1 — да, 0 — нет). По умолчанию: 1.
filtersType — Тип фильтрации. Возможные значения: filters, filters_simple. По умолчанию: filters.
Используется библиотека jQuery.
Если у вас на сайте уже используется jQuery, повторно она подключаться не будет (сделана автоматическая проверка).
Для тонкой настройки открыть в текстовом редакторе файл
/assets/components/tag_manager2/js/web/filters.js
или
/assets/components/tag_manager2/js/web/filters_simple.js
Настройки вверху, в коде есть комментарии.
Если используется ajax-фильтрация (filtersType = filters), в форму фильтрации добавить скрытое поле (см. пример 3):
/>
Параметр «filters_type» в filters.js
Для «filters_type» = «default» (показ числа товаров по каждому фильтру и блокирование пустых вариантов)
или «only_block» (только блокирование пустых париантов) необходимо включить параметр «jsMap» у сниппета «tmFilters».
Если «filters_type» = «none», «jsMap» рекомендуется выключить.
==================================================================
Сниппет tmCatalog
Сниппет не имеет параметров, т.к. является оберточным сниппетом для «getPage» и «getProducts».
Используются параметры из набора параметров для сниппета «getPage», указанного в настройках системы — tag_mgr2.propertySetName.
Можно указывать параметры для «getPage» и «getProducts».
Пример:
[[!tmCatalog?
&parents=`-1`
&resources=`110,111,112`
&tpl=`product`
]]
В данном случае будут выводиться только товары с ID = 110,111,112.
Можно использовать для поиска, выводить найденные ID товаров с помощью отдельного сниппета и фильтровать найденные товары.
==================================================================
Вывод товаров из таблицы, созданной в MIGXDB (http://modx.com/extras/package/migx)
Если для хранения товаров импользуется отдельная таблица в БД, созданная с помощью MIGXDB,
в настройках компонента «tagManager2» в параметрах «tag_mgr2.className» и «tag_mgr2.packageName» указать
название класса и название компонента вашей таблицы в БД.
Настройки «className» и «packageName» можно указать в параметрах шаблона категории товаров:
1. Открыть шаблон категории товаров.
2. Перейти на вкладку «Параметры».
3. Разблокировать параметры по умолчанию и добавить параметры:
prodClassName — Имя класса таблицы БД (например «ShopContent»).
prodPackageName — Имя пакета таблицы БД (например «shop»).
prodPropertySetName — имя набора параметров для сниппета getPage, который нужно использовать для фильтрации для текущего шаблона (не обязателный параметр).
4. Сохранить изменения.
==================================================================
==================================================================
Множественные значения фильтров
Если нужно сделать возможность задавать множественные значения для параметра, нужно создать TV параметр с типом ввода «Флажки (checkbox)» или «Список (множественный выбор)».
Поле «Возможные значения» заполнить по такому принципу:
акция==#акция#||лидер продаж==#лидер продаж#||новинка==#новинка#
Разделитель "#" можно изменить в конфигурации компонента — tag_mgr2.guard_key.
Имена таких TV нужно указать в скрипте filters.js в массиве
'multitags': ['tag']
— Для множественных значений, созданных через тип ввода «param-edit», если используется MIGX для создания таблицы БД товаров,
в настройках поля (в MIGX) указать:
Input TV = param1 (param1 — название TV с типом ввода «param-edit»)
Input TV type = param-edit
Для MIGX 2.5.8 указание «Input TV» при использовании не стандартных типов ввода обязательно. Возможно в будущих версиях это будет исправлено.
==================================================================
==================================================================
Динамическое изменение шаблона вывода списка товаров
На данный момент сделана готовая возможность изменения шаблона с помошью JS-скрипта /assets/components/tag_manager/js/web/view_switch.js.
Скрипт ставит куку и обновляет вывод.
1. Добавить скрипт на страницу
2. В набор параметров «getPage», который используется для вывода товаров, добавить параметр «tpl_list» со списком шаблонов (чанков) через запятую.
Например: «product,product_list».
3. В тело страницы вставить ссылки для изменения вида. У элемента-контейнера должен быть id=«viewSwitch».
Пример:
Показывать:
картинками
списком
==================================================================
==================================================================
Мультивалютность
Поддерживается мультивалютность, используемая Shopkeeper. По настройке мультивалютности читать документацию Shopkeeper.
Для работы tagManager с мультивалютностью необходимо выполнить:
1. Если используется аякс-фильтрация, открыть в текстовом редакторе /assets/components/tag_manager2/js/web/filters.js
и включить мультивалютность — multi_currency = true.
2. В этом же файле указать правильное название TV параметра или поля с ценой — price_field.
3. В настройках системы в параметре tag_mgr2.priceName нужно указать название TV параметра или поля с ценой (по умолчанию «price»).
4. Версия Shopkeeper должна быть не меньше 2.3.4.
==================================================================
==================================================================
Стилизация селектов
Для стилизации селектов рекомендуется использовать jQuery-плагин SelectBoxIt — gregfranko.com/jquery.selectBoxIt.js/index.html.
Данный плагин поддерживается tagManager.
Пример подключение стиля и скриптов SelectBoxIt:
/>
==================================================================
==================================================================
Пример 1. Простая фильтрация с чекбоксами (множественный выбор).
[[tmFilters?
&filterOuterTpl=`tm2_filterOuterTpl`
&filterTpl=`tm2_filterTpl`
&filterNumericOuterTpl=`tm2_filterOuterTpl`
&filterNumericTpl=`tm2_filterNumericTpl`
&filtersType=`filters_simple`
&toPlaceholder=`filters`
]]
Сортировать по:
названию
цене
дате
В порядке:
возрастания
убывания
Выводить по:
10
20
40
[[+filters]]
Подобрать
Сбросить
==================================================================
[[!tmCatalog]]
[[!+page.nav]]
==================================================================
==================================================================
Пример 2. Сортировка отдельно от формы фильтров. Простая фильтрация с фильтрами в виде выпадающих списков (одиночный выбор).
/>
/>
/>
[[tmFilters?
&filterOuterTpl=`tm2_filterOuterTpl_select`
&filterTpl=`tm2_filterTpl_select`
&filterNumericOuterTpl=`tm2_filterOuterTpl`
&filterNumericTpl=`tm2_filterNumericTpl`
&filtersType=`filters_simple`
]]
Подобрать
Сбросить
==================================================================
по названию
по цене
по дате
по возростанию
по убыванию
10
20
40
[[!tmCatalog]]
[[!+page.nav]]
==================================================================
==================================================================
Пример 3. Ajax-фильтрация, сортировка отдельно от формы фильтров.
[[tmFilters?
&filterOuterTpl=`tm2_filterOuterTpl`
&filterTpl=`tm2_filterTpl`
&filterNumericOuterTpl=`tm2_filterOuterTpl`
&filterNumericTpl=`tm2_filterNumericTpl`
&jsMap=`1`
&toPlaceholder=`filters`
]]
/>
[[+filters]]
Сбросить
==================================================================
по названию
по цене
по дате
по возростанию
по убыванию
4
10
20
40
[[!tmCatalog]]
[[!+page.nav]]
Комментарии: 17
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Я могу только посоветовать потестировать mSearch2 — он умеет работать с ТВ и, соответственно, с Shopkeeper.
По сути это простой сайт, где есть каталог техники и возможность фильтрации.
tagManager 2.0 — как раз узкопрофильно подходит к этой задаче без перегрузки функционала.
Буду ждать помощи на офф форму, мне показалось меня там не любят с первого поста =) или вопрос на столько туп, что на него не хотят обращать внимание. Перекопал весь форму, аналогичного вопроса нет.
То есть, что выводит — так и строит фильтры, в админке ничего делать не нужно.
Учитывая, что компонент осуществляет морфологический поиск и фильтрацию найденного, заранее создавать фильтры в принципе нельзя — никто не знает, что будет найдено.
В этом принципиальное различие дополнений. А дальше смотри как оно работает на тестовом сайте и думай, стоит ли его купить вместе с поддержкой, или будешь и дальше разбираться с бесплатным.
Документация — docs.modx.pro/components/msearch2/
Попытался запустить его на тестовом… повозился, потыкал, не получилось и успокоился.
Возможно придется мудрить что-то своё или ковырять дальше tagManager.
Спасибо.
Насколько я понял, выводить фильтр в документе можно только для тех товаров, которые физически вложены в него. В вашем случае надо весь каталог перенести в документ Поиск техники, чтобы все фильтруемые товары были вложены именно в него. А фильтровать в одном документе товары из другого контейнера нельзя. Опять таки, это мои догадки, но их подтверждают факты.
Сверх странности)
Правда я в последствии отказался от использования компонента, ибо он не подходит по ряду критериев, но его корректную работу я у себя настраивал.
А в файле assets/components/tag_manager2/js/web/filters.js или assets/components/tag_manager2/js/web/filters_simple.js и в настройках системы параметры настраивали?
т.е. значения там имеются, просто не хотят выводиться, кусок кода который отправляет значения в чанк:
Просто настроил все необходимые параметры в .js файлах filters и в настройках системы.
Все tpl для вывода фильтров я оставлял по умолчанию. Вы свои подставляете или тоже по умолчанию берете? Может в них какой-нибудь плейсхолдер не указан?
Настройки
В принципе их назначение понятно из названий
Результат не изменился. Вся надежда на разработчика.
Не поленился зашел на сайт салютленда, не увидел там фильтра.
Да и на официальном демо сайте фильтр представлен из чекбоксов и бегунка, но если есть возможность вывода в селект, странно, что он не работает (шаблон то дефолтный с селектом).
Если завтра будет время, то с утра создам тестовый раздел и прикручу туда tagManager2 для демонстрации.
Помогла наблюдательность, смотрел дефолтные шаблоны и заподозрил косяк).
Здорово! Круть.