Не передаются значения TV при фильтрации
Почти что победил TagManager2 — фильтры отображаются, все фильтруется. Но когда фильтруешь товары, исчезают значения TV из отображения карточки товара. Жмешь Enter в адресной строке браузера по сформированной TM2 ссылке и значения TV появляются. Подскажите, в чем может быть проблема?
Чанк товара:
Вывод TMCatalog:
Чанк товара:
<div class="col-xl-4" style="padding-left: 5px; padding-right: 5px; float: left;">
<div class="post-02 post-02__style-02 js-post-effect">
<div class="post-02__media">
<a href="[[~[[+id]]]]">
[[getImageList?
&tvname=`slider`
&docid=`[[+id]]`
&limit=`1`
&tpl=`@CODE:<img src="[[+slide]]" alt="[[+alt]]" />`
]]
</a></div>
<div class="post-02__body">
<h2 class="post-02__title"><a href="[[~[[+id]]]]">[[!pdoField? &id=`[[+id]]` &field=`name`]]</a></h2>
<div class="post-02__department">[[!pdoField? &id=`[[+id]]` &field=`seo_tag`]]</div>
<div class="post-02__content">
<div class="post-02__description">
[[pdoField:ellipsis=`200`? &id=`[[+id]]` &field=`specification`]]
<ul>
<li><span class="primary-color">Age</span>[[!pdoField? &id=`[[+id]]` &field=`age`]]</li>
<li><span class="primary-color">Height</span>[[!pdoField? &id=`[[+id]]` &field=`height`]] cm</li>
<li><span class="primary-color">Weight</span>[[!pdoField? &id=`[[+id]]` &field=`weight`]] kg</li>
</ul>
</div>
<a class="post-02__link" href="[[~[[+id]]]]">View detail</a>
</div>
</div>
</div>
</div>
Вывод TMFilters:<div id="filters">
[[tmFilters?
&filterOuterTpl=`tm2_filterOuterTpl`
&filterTpl=`tm2_filterTpl`
&filterNumericOuterTpl=`tm2_filterOuterTpl`
&filterNumericTpl=`tm2_filterNumericTpl`
&jsMap=`1`
&jsScript=`0`
&toPlaceholder=`filters`
]]
<form action="[[~[[*id]]]]" method="get">
<input type="hidden" name="page_id" value="[[*id]]" disabled="disabled" />
[[+filters]]
<button class="btn btn-info" type="button" onclick="tmFilters.resetFilters(); return false;">Сбросить фильтр</button>
</form>
</div>
Вывод TMCatalog:
[[!tmCatalog?
&cache=`1`
&elementClass=`modSnippet`
&element=`getProducts`
&tpl=`filtr_tpl`
&sortbyTV=`age`
&sortdirTV=`ASC`
&parents=`3`
&limit=`0`
&debug=`0`
]]
<div class="clearfix"></div>
</div>
<ul class="pagination" id="pages">
[[!+page.nav]]
</ul>
Комментарии: 12
Не используйте @CODE в &tpl, а вынесите в чанк:
Чанк image_tpl:
И лучше вместо конструкций типа:
используйте (либо в вызове, либо в наборе параметров):
И в чанке просто
[[getImageList?
&tpl=`image_tpl`
......
]]
Чанк image_tpl:
<img src="[[+slide]]" alt="[[+alt]]" />
И лучше вместо конструкций типа:
[[!pdoField? &id=`[[+id]]` &field=`height`]]
используйте (либо в вызове, либо в наборе параметров):
[[!tmCatalog?
&includeTVs=`1`
&includeTVList=`name,seo_tag,specification,age,height,weight`
...
]]
И в чанке просто
[[+tv.name]], [[+tv.seo_tag]], [[+tv.specification:ellipsis=`200`]] и т. д.
спасибо за совет, вроде бы разобрался. По поводу getImageList, такая конструкция потому-что выводит значение первого изображения из MIGX. Только так смог выцепить его из массива:
[[getImageList?
&tvname=`slider`
&docid=`[[+id]]`
&limit=`1`
&tpl=`@CODE:<img src="[[+slide]]" alt="[[+alt]]" />`
]]
По умолчанию getImageList сортирует как в таблице-виджете, т. е. при ограничении выборки &limit=`1` остается только первое изображение.
Если нужно иное изображение, то добавьте в MIGX поле типа чекбокс (к примеру, mainimage с возможными значениями Главная==1), ставьте галочку у главной картинки и делайте выборку через where:
Если нужно иное изображение, то добавьте в MIGX поле типа чекбокс (к примеру, mainimage с возможными значениями Главная==1), ставьте галочку у главной картинки и делайте выборку через where:
[[getImageList?
&where=`{ "mainimage ":"1" }`
....
]]
спасибо)
Вопрос конечно может быть не в тему. Но в каждом товаре у меня используется класс .js-post-effect, который при наведении на товар мышкой выводит основные его атрибуты. До фильтрации все норм, все выводится, все показывается. После фильтрации, при наведении на товар ничего не отображается. Код js, который отвечает за js-post-effect:
$('.js-post-effect').each(function() {
var contentHeight = $(this).find('.post-02__content').height() + 30;
if(windowWidth > 768) {
var contentHeight = $(this).find('.post-02__content').height() + 50;
}
$(this).find('.post-02__body').css('transform', 'translateY(' + contentHeight + 'px)');
$(this).hover(function() {
$(this).find('.post-02__body').css('transform', 'translateY(' + 0 + 'px)');
}, function() {
$(this).find('.post-02__body').css('transform', 'translateY(' + contentHeight + 'px)');
});
});
Не могу понять что рубит стили после срабатывания обработчика фильтра.
При фильтрации контент подгружается посредством Ajax и $(document).ready… новых элементов .js-post-effect не видит.
У tagManager2 есть callback-функция tm_onFilterAfter, которая срабатывает после фильтрации. Соотвественно, в нее можно поместить то, что Вам нужно:
У tagManager2 есть callback-функция tm_onFilterAfter, которая срабатывает после фильтрации. Соотвественно, в нее можно поместить то, что Вам нужно:
<script>
function tm_onFilterAfter( total, pageCount, onPageLimit ){
// тут Ваш JS
});
}
</script>
Спасибо, разобрался)
Можно последний вопрос еще?) Как убрать появляющиеся десятичные значения в числовом фильтре-бегунке TM2? У всех TV стоит запрет на десятичные значения. Несмотря на это при первой инициализации фильтра значения диапазона показываются в формате [19] — [30]. Когда начинаешь фильтровать, появляются значения [19.2] — [30.7]
В ту же функцию поместите обработчик, который будет убирать нули.
Получайте значения из инпутов, обрабатывайте и вставляйте обратно.
Получайте значения из инпутов, обрабатывайте и вставляйте обратно.
Оказывается можно проще. В файле filter.js меняем
var slider_step = maxValue - minValue < 100 ? 0.1 : 1;
наvar slider_step = maxValue - minValue < 1 ? 1 : 1;
Проще, но исходники править не комильфо )
При обновлении компонента (вдруг когда-нибудь) все подобные правки затрутся.
При обновлении компонента (вдруг когда-нибудь) все подобные правки затрутся.
Заметил очень странную особенность в TM. В значениях TV полей в параметрах ввода стоит как в инструкции:
лидер продаж==#лидер продаж#||лидер продаж==#лидер покупок#||
При выводе значения в бэкенд, значение также передается в формате#лидер продаж#
В tag_mgr2.guard_key стоит значение #
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.