【问题标题】:Force Magento to use only one URL in all listings强制 Magento 在所有列表中仅使用一个 URL
【发布时间】:2013-02-04 02:55:41
【问题描述】:

我的问题如下:Magento 为新产品创建 URL 重写,并在不同的列表中使用不同的 URL。如果我的产品属于 FooBar 两个类别,Magento 将在我真正想要的 URL 之上使用两个 URL。

  • 在类别列表中Foo => /store/type/foo/product.html
  • 在类别列表中Bar => /store/type/bar/product.html
  • 在正常链接中/store/product.html

我希望/需要让 Magento 在整个商店中仅使用 URL /store/product.html。我在管理页面中没有找到任何设置。

使用 Magento 1.5.1.0

【问题讨论】:

    标签: php magento magento-1.5


    【解决方案1】:

    将系统 -> 配置 -> 目录中的“使用产品 URL 的类别路径”属性更改为“否”。

    【讨论】:

    • 尝试重建 URL 索引。这无济于事,我不知道这里有什么不好的......
    【解决方案2】:

    由于某种原因,Magento 忽略了所有商店的设置。查了代码,发现Mage_Catalog_Model_Product_Url::getUrl()这个方法用$product->getDoNotUseCategoryId()检查这个设置。我调用了这个方法,它返回了所有产品的NULL

    为了解决这个问题,我在自己的产品类中重载了这个方法:

    public function getDoNotUseCategoryId(){
        return true;
    }
    

    这行得通。

    这可能是一个不存在的属性或其他东西的问题,但只要它有效,我就会使用它。

    【讨论】:

      【解决方案3】:

      有一种简单的方法可以在每个位置执行此操作,将 Url.php 从 app\code\core\Mage\Catalog\Model\Product 复制到 URl.php 到 app\code\local\Mage\Catalog\Model\Product。之后需要更新getUrl函数。

      找到这一行:$categoryId = $product->getCategoryId() && !$product->getDoNotUseCategoryId() ? $product->getCategoryId() : null; 并更新为$categoryId = $product->getCategoryId() && Mage::getStoreConfig('catalog/seo/product_use_categories') ? $product->getCategoryId() : null;

      希望这会对某人有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-19
        • 1970-01-01
        • 2014-10-11
        • 2011-02-15
        • 2022-01-07
        • 1970-01-01
        相关资源
        最近更新 更多