Как настроить сортировку товаров по убыванию цены, чтобы не отображались товары, которых нет в наличии?

Для настройки сортировки товаров по убыванию цены без отображения товаров, которых нет в наличии, вам потребуется некоторый программный код и некоторые изменения в конфигурации вашей установки 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" правильно отражает наличие товаров.