Для настройки сортировки товаров по убыванию цены без отображения товаров, которых нет в наличии, вам потребуется некоторый программный код и некоторые изменения в конфигурации вашей установки MODX.
1. Создайте новый сниппет MODX, чтобы выполнить сортировку. Вы можете назвать его, например, "SortByPriceDesc".
<?php $sortby = 'price'; $sortdir = 'DESC'; $criteria = $modx->newQuery('modResource'); $criteria->select($modx->getSelectColumns('modResource', 'modResource')); $criteria->leftJoin('Product', 'Product', 'modResource.id = Product.resource_id'); $criteria->where(array('Product.availability' => 1)); // Убедитесь, что у вас есть поле `availability`, которое указывает на доступность товара $criteria->sortby($sortby, $sortdir); return $modx->getCollection('modResource', $criteria); ?>
Этот код сортирует товары по полю "price" (цена) в порядке убывания. Он также фильтрует результаты, чтобы отображались только товары, у которых поле "availability" (доступность) установлено на 1 (то есть товар имеется в наличии).
2. В настройках вашей страницы, где отображаются товары, создайте новый вызов сниппета:
[[!SortByPriceDesc]]
Это выполнит сортировку и отобразит отфильтрованные товары, упорядоченные по убыванию цены и с учетом наличия.
3. Проверьте свой шаблон товара, чтобы убедиться, что поле "availability" правильно отображается или добавляется. Вы можете использовать включение чанка или просто проверить условие в вашем шаблоне:
[[!+availability:is=`1`:then=`В наличии`:else=`Нет в наличии`]]
Если "availability" равно 1, то будет отображена фраза "В наличии", в противном случае будет отображена фраза "Нет в наличии".
4. Убедитесь, что ваша страница с товарами правильно отображает результаты сортировки и наличие товаров.
Вот и всё! Теперь вы настроили сортировку товаров по убыванию цены, и не отображаются товары, которых нет в наличии. Будьте уверены, что ваша настройка "availability" правильно отражает наличие товаров.