[mFilter2] Сортировка товаров при загрузке страницы.
Здравствуйте.
Вопрос знатокам, подскажите пож-а возможно ли сделать следующее:
Возможно ли, использую поле availability, отфильтровать товары так, чтобы пользователю сразу отображались доступные товары, а уже только потом шли товары с пометкой «под заказ»?
И при использовании опции «цена по возрастанию» и «цена по убыванию», товары «в наличии» отображались первыми.
Мой вызов mFilter2, на всякий пожарный:
Вопрос знатокам, подскажите пож-а возможно ли сделать следующее:
- на сайте настроен вывод товаров через mFilter2;
- на данный момент, при первоначальной загрузке страницы каталога, продукты фильтруются по цене
&sort=`ms|price:asc`
- для товаров создал опцию «Наличие товара». Ключ для него —
Тип свойства — числовое;availability
- если availability = 0, то на карточке товара появляется надпись «под заказ», если availability > 0, то «в наличии»;
- товары «под заказ» и «в наличии» имеют цену.
И при использовании опции «цена по возрастанию» и «цена по убыванию», товары «в наличии» отображались первыми.
Мой вызов mFilter2, на всякий пожарный:
[[!mFilter2?
&limit=`28`
&parents=`[[*id]]`
&element=`msProducts`
&filters=`
ms|vendor:vendors,
ms|price:number,
msoption|figure,
msoption|height:number,
msoption|width:number,
msoption|color,
msoption|bore_diameter,
msoption|landing_distance,
msoption|heating_method,
msoption|connection,
msoption|material_filter,
msoption|quantity_of_crossbeams,
`
&aliases=`
ms|vendor == vendor,
ms|price == price,
msoption|figure == figure,
msoption|height == height,
msoption|width == width,
msoption|color == color,
msoption|bore_diameter == bore_diameter,
msoption|landing_distance == landing_distance,
msoption|connection == connection,
msoption|material_filter == material_filter,
msoption|quantity_of_crossbeams == quantity_of_crossbeams,
`
&class=`msProduct`
&sort=`ms|price:asc`
&suggestions=`0`
&tplOuter=`tpl.dmFilter2.outer`
&tplFilter.row.default=`tpl.dmFilter2.filter.checkbox`
&tplFilter.outer.default=`tpl.dmFilter2.filter.outer`
&tplFilter.outer.price=`tpl.dmFilter2.filter.slider`
&tplFilter.row.price=`tpl.dmFilter2.filter.number`
&tplFilter.outer.height=`tpl.dmFilter2.filter.slider`
&tplFilter.row.height=`tpl.dmFilter2.filter.number`
&tplFilter.outer.width=`tpl.dmFilter2.filter.slider`
&tplFilter.row.width=`tpl.dmFilter2.filter.number`
&tpl=`tpl.dmCatalogProduct`
&includeThumbs=`medium`
&paginator=`pdoPage@ajaxPage`
&ajax=`1`
&tplPageWrapper=`@INLINE <div class="pagination"><ul class="pagination__list">[[+prev]][[+pages]][[+next]]</ul></div>`
&tplPage=`@INLINE <li class="pagination__item"><a class="pagination__link" href="[[+href]]">[[+pageNo]]</a></li>`
&tplPageActive=`@INLINE <li class="active pagination__item"><a class="pagination__link" href="[[+href]]">[[+pageNo]]</a></li>`
&tplPageLast=`@INLINE <li class="control pagination__item"><a class="pagination__link" href="[[+href]]">Последняя</a></li>`
&tplPageFirst=`@INLINE <li class="control pagination__item"><a class="pagination__link" href="[[+href]]">Первая</a></li>`
&tplPagePrev=`@INLINE <li class="control pagination__item"><a class="pagination__link icon-left-open" href="[[+href]]"></a></li>`
&tplPageNext=`@INLINE <li class="control pagination__item"><a class="pagination__link icon-right-open" href="[[+href]]"></a></li>`
&tplPagePrevEmpty=`@INLINE <li class="disabled pagination__item"><span class="pagination__link icon-left-open"></span></li>`
&tplPageNextEmpty=`@INLINE <li class="disabled pagination__item"><span class="pagination__link icon-right-open"></span></li>`
]]
Спасибо.Комментарии: 3
В документации написано:
Можно указывать несколько полей через запятую, например: «resource|publishedon:desc,ms|price:asc».
В вашем случае
Тут вот либо ASC либо DESC
Можно указывать несколько полей через запятую, например: «resource|publishedon:desc,ms|price:asc».
В вашем случае
msoption|availability:asc,ms|price:asc
Тут вот либо ASC либо DESC
Я так понял, что пример в документации распространяется на поля, которые уже «под капотом» есть, такие как price,color, publishedon и т.д. А на опции товара, которые создаются дополнительно, нужно что-то еще кастануть )
Приведенный пример:
Приведенный пример:
msoption|availability:asc,ms|price:asc
Пробовал, но получаю ошибку в логах:pdotools/pdofetch.class.php : 172) [pdoTools] Error 42S22: Unknown column 'availability' in 'order clause'
Примерно, как-то так нужно делать, но вообще я бы вам рекомендовал добавить кастомное поле в товары.
[[!mFilter2?
&parents=`0`
&element=`msProducts`
&leftJoin=`{
"Test1": {
"class": "msProductOption",
"on": "Test1.key = 'test1' and Test1.product_id = msProduct.id"
}
}`
&sortAliases=`{"test1":"Test1"}`
&aliases=`test1|value==test1`
&sort=`test1:desc`
]]
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.