Hors de la boîte, non, il n'y a aucun moyen d'exclure certains produits du plan du site généré par la Catalog -> Google Sitemap
fonctionnalité de Magento .
Si j'allais faire cela par programme, les versions modernes de Magento (vérifiées dans la branche 1.7.x, cela pourrait être dans les versions antérieures / EE) utilisent la classe de modèle de ressource suivante
Mage_Sitemap_Model_Resource_Catalog_Product
pour récupérer une liste de produits.
#File: app/code/core/Mage/Sitemap/Model/Sitemap.php
$collection = Mage::getResourceModel('sitemap/catalog_product')->getCollection($storeId);
Ce n'est pas un modèle CRUD Magento standard et getCollection
ne renvoie pas d'objet de collection. Au lieu de cela, getCollection
interroge manuellement la base de données pour ces produits.
Si j'allais implémenter une fonctionnalité qui empêchait certains produits d'apparaître dans le plan du site, j'essaierais soit
Une classe réécrit la getCollection
méthode qui appelle le parent::getCollection
, puis filtre manuellement tous les produits du tableau
Une réécriture de classe sur _addFilter
laquelle appelle la méthode parent :: _ addFilter, puis ajoute une ou plusieurs clauses WHERE supplémentaires _select
pour exclure le ou les produits spécifiques. Une sorte de hack, mais c'est la seule méthode où vous avez accès à l' _select
objet utilisé pour interroger la base de données. Idéalement, vous voudriez avoir une sorte d'indicateur global / statique, vous n'avez donc ajouté vos nouvelles clauses WHERE qu'une seule fois.