【发布时间】:2013-03-13 23:53:40
【问题描述】:
目前,我们的站点地图显示了我们拥有的每个产品和类别。我希望能够过滤这些结果以仅显示具有“目录/搜索”可见性的产品以及包含具有“目录/搜索”可见性的产品的类别任何帮助将不胜感激!
【问题讨论】:
-
仅供参考,Magento 现在拥有自己的 SE 站点:magento.stackexchange.com
目前,我们的站点地图显示了我们拥有的每个产品和类别。我希望能够过滤这些结果以仅显示具有“目录/搜索”可见性的产品以及包含具有“目录/搜索”可见性的产品的类别任何帮助将不胜感激!
【问题讨论】:
有点宽泛的问题——您最好先启动项目,然后在出现具体问题时提出具体问题。
您要针对重写的方法在 sitemap/sitemap 模型中。
public function generateXml()
{
//...
}
这是加载站点地图数据并生成 XML 的方法。没有优雅的入口点来过滤生成的内容,所以我会采用两种方法
调用parent::generateXml() 像往常一样生成地图,然后重新加载文件 ($this->getPath()) 并转换文档,以便不包含不需要的项目,然后编写新文件覆盖旧文件。
复制 generateXML 中的现有代码,但在 Magento CE 1.7 中的第 155 行周围的类别循环中添加条件
前者更干净——后者更快。祝你好运
【讨论】:
$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()
【讨论】: