Pronto, não, não há como excluir determinados produtos do mapa do site gerado pelo Catalog -> Google Sitemap
recurso do Magento .
Se eu fosse fazer isso programaticamente, as versões modernas do Magento (verificadas na ramificação 1.7.x, isso pode estar presente nas versões anteriores / EE) usam a seguinte classe de modelo de recurso
Mage_Sitemap_Model_Resource_Catalog_Product
para buscar uma lista de produtos.
#File: app/code/core/Mage/Sitemap/Model/Sitemap.php
$collection = Mage::getResourceModel('sitemap/catalog_product')->getCollection($storeId);
Este não é um modelo CRUD Magento padrão e getCollection
não retorna um objeto de coleção. Em vez disso, getCollection
consulta manualmente o banco de dados para esses produtos.
Se eu fosse implementar uma funcionalidade que impedisse a exibição de certos produtos no mapa do site, tentaria
Uma classe reescreve o getCollection
método que chama o parent::getCollection
e, em seguida, filtra manualmente todos os produtos da matriz
Uma classe reescrita na _addFilter
qual chama o método parent :: _ addFilter e, em seguida, adiciona uma (s) cláusula (s) WHERE adicional _select
para excluir o (s) produto (s) específico (s). É uma espécie de hack, mas é o único método em que você tem acesso ao _select
objeto usado para consultar o banco de dados. Idealmente, você gostaria de ter algum tipo de sinalizador global / estático para adicionar apenas suas novas cláusulas WHERE uma vez.