0

目前,我们的站点地图显示了我们拥有的每个产品和类别。我希望能够过滤这些结果以仅显示具有“目录/搜索”可见性的产品以及包含具有“目录/搜索”可见性的产品的类别任何帮助将不胜感激!

4

2 回答 2

1

有点宽泛的问题——你最好开始项目,然后在出现具体问题时提出具体问题。

您要针对重写的方法在sitemap/sitemap模型中。

public function generateXml()
{
    //...
}

这是加载站点地图数据并生成 XML 的方法。过滤生成的内容没有优雅的入口点,所以我采取的两种方法是

  • parent::generateXml()像往常一样调用以生成地图,然后重新加载文件 ( $this->getPath()) 并转换文档,以便不包含您不想要的项目,并将新文件写入旧文件。

  • 复制现有代码generateXML,但在 Magento CE 1.7 中的第 155 行周围的类别循环中添加条件

前者更干净——后者更快。祝你好运

于 2013-03-14T00:47:23.137 回答
0

$collection = Mage::getResourceModel('sitemap/catalog_product')->getCollection($storeId);

在类 Mage_Sitemap_Model_Sitemap 的函数 public function generateXml() 中更改此行并应用过滤器。修改后的行是这样的:

$collection = Mage::getModel('catalog/product')->getCollection($storeId)->addAttributeToFilter('visibility', 4);

这是一个建议,尽管不建议使用 Magento 标准修改核心文件,因此使用上述建议您可以覆盖上述类并在新创建的类中修改函数 generateXml()

于 2013-03-14T03:24:19.670 回答