【问题标题】:Programmatically filter Magento Sitemap以编程方式过滤 Magento 站点地图
【发布时间】:2013-03-13 23:53:40
【问题描述】:

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

【问题讨论】:

标签: php magento


【解决方案1】:

有点宽泛的问题——您最好先启动项目,然后在出现具体问题时提出具体问题。

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

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

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

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

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

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

【讨论】:

    【解决方案2】:

    $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()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-07
      • 1970-01-01
      • 2011-08-23
      • 2012-03-15
      • 2011-08-13
      • 2011-07-12
      • 1970-01-01
      • 2023-02-03
      相关资源
      最近更新 更多