Нет, нет способа исключить определенные продукты из карты сайта, созданной Catalog -> Google Sitemap
функцией Magento .
Если я собираюсь сделать это программно, современные версии Magento (проверено в ветке 1.7.x, это может быть в более ранних версиях / EE) используют следующий класс модели ресурсов
Mage_Sitemap_Model_Resource_Catalog_Product
чтобы получить список продуктов.
#File: app/code/core/Mage/Sitemap/Model/Sitemap.php
$collection = Mage::getResourceModel('sitemap/catalog_product')->getCollection($storeId);
Это не стандартная модель Magento CRUD и getCollection
не возвращает объект коллекции. Вместо этого getCollection
вручную запрашивает базу данных для этих продуктов.
Если бы я собирался реализовать функциональность, которая препятствовала отображению определенных продуктов на карте сайта, я бы попробовал либо
Класс переписать getCollection
метод, который вызывает parent::getCollection
, а затем вручную отфильтровывает любые продукты из массива
_addFilter
Переписать класс, для которого вызывается метод parent :: _ addFilter, а затем добавляется дополнительное предложение WHERE, _select
чтобы исключить конкретный продукт (ы). Вроде как взлом, но это единственный метод, где у вас есть доступ к _select
объекту, используемому для запроса к базе данных. В идеале вы хотели бы иметь какой-то глобальный / статический флаг, чтобы вы добавляли новые предложения WHERE только один раз.