Нет, нет способа исключить определенные продукты из карты сайта, созданной 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 только один раз.